diff --git a/.codecov.yml b/.codecov.yml index ae8159eb4..d3d07003c 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -3,8 +3,6 @@ codecov: # https://docs.codecov.com/docs/flags#recommended-automatic-flag-management # Require each flag to have 1 upload before notification flag_management: - default_rules: - after_n_builds: 1 individual_flags: - name: backend paths: @@ -22,12 +20,9 @@ coverage: default: # https://docs.codecov.com/docs/commit-status#threshold threshold: 1% - # https://docs.codecov.com/docs/commit-status#only_pulls - only_pulls: true patch: default: # For the changed lines only, target 75% covered, but # allow as low as 50% target: 75% threshold: 25% - only_pulls: true diff --git a/.dockerignore b/.dockerignore index d03b3b9ab..c33ee6452 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,21 +1,28 @@ +# Tool caches **/__pycache__ -/src-ui/.vscode -/src-ui/node_modules -/src-ui/dist +**/.ruff_cache/ +**/.mypy_cache/ +# Virtual environment & similar +.venv/ +./src-ui/node_modules +./src-ui/dist +# IDE folders +.idea/ +.vscode/ +./src-ui/.vscode +# VCS .git -/export -/consume -/media -/data -/docs -.pytest_cache -/dist -/scripts -/resources +# Test related +**/.pytest_cache **/tests **/*.spec.ts **/htmlcov -/src/.pytest_cache -.idea -.venv/ -.vscode/ +# Local folders +./export +./consume +./media +./data +./docs +./dist +./scripts +./resources diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 5b37c0005..8ab9e0b78 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -6,14 +6,21 @@ body: - type: markdown attributes: value: | - Have a question? 👉 [Start a new discussion](https://github.com/paperless-ngx/paperless-ngx/discussions/new) or [ask in chat](https://matrix.to/#/#paperlessngx:matrix.org). + ### ⚠️ Please remember: issues are for *bugs* + That is, something you believe affects every single user of Paperless-ngx, not just you. If you're not sure, start with one of the other options below. - Before opening an issue, please double check: + Also, note that **Paperless-ngx does not perform OCR itself**, that is handled by other tools. Problems with OCR of specific files should likely be raised 'upstream', see https://github.com/ocrmypdf/OCRmyPDF/issues or https://github.com/tesseract-ocr/tesseract/issues + - type: markdown + attributes: + value: | + #### Have a question? 👉 [Start a new discussion](https://github.com/paperless-ngx/paperless-ngx/discussions/new) or [ask in chat](https://matrix.to/#/#paperlessngx:matrix.org). + + #### Before opening an issue, please double check: - [The troubleshooting documentation](https://docs.paperless-ngx.com/troubleshooting/). - [The installation instructions](https://docs.paperless-ngx.com/setup/#installation). - [Existing issues and discussions](https://github.com/paperless-ngx/paperless-ngx/search?q=&type=issues). - - Disable any customer container initialization scripts, if using any + - Disable any customer container initialization scripts, if using If you encounter issues while installing or configuring Paperless-ngx, please post in the ["Support" section of the discussions](https://github.com/paperless-ngx/paperless-ngx/discussions/new?category=support). - type: textarea diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 2e7df111b..c92676f8b 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -8,7 +8,7 @@ updates: target-branch: "dev" # Look for `package.json` and `lock` files in the `/src-ui` directory directory: "/src-ui" - # Check the npm registry for updates every month + open-pull-requests-limit: 10 schedule: interval: "monthly" labels: @@ -27,7 +27,7 @@ updates: frontend-jest-dependencies: patterns: - "@types/jest" - - "jest" + - "jest*" frontend-eslint-dependencies: patterns: - "@typescript-eslint*" @@ -47,8 +47,25 @@ updates: # Add reviewers reviewers: - "paperless-ngx/backend" + groups: + development: + patterns: + - "*pytest*" + - "black" + - "ruff" + - "mkdocs-material" + django: + patterns: + - "*django*" + major-versions: + update-types: + - "major" + small-changes: + update-types: + - "minor" + - "patch" - # Enable updates for Github Actions + # Enable updates for GitHub Actions - package-ecosystem: "github-actions" target-branch: "dev" directory: "/" @@ -61,3 +78,9 @@ updates: # Add reviewers reviewers: - "paperless-ngx/ci-cd" + groups: + actions: + update-types: + - "major" + - "minor" + - "patch" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4f37af441..5fb7fdff4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,19 +16,25 @@ on: env: # This is the version of pipenv all the steps will use # If changing this, change Dockerfile - DEFAULT_PIP_ENV_VERSION: "2023.7.23" - # This is the default version of Python to use in most steps - # If changing this, change Dockerfile - DEFAULT_PYTHON_VERSION: "3.9" + DEFAULT_PIP_ENV_VERSION: "2023.10.24" + # This is the default version of Python to use in most steps which aren't specific + DEFAULT_PYTHON_VERSION: "3.10" jobs: pre-commit: + # We want to run on external PRs, but not on our own internal PRs as they'll be run + # by the push to the branch. Without this if check, checks are duplicated since + # internal PRs match both the push and pull_request events. + if: + github.event_name == 'push' || github.event.pull_request.head.repo.full_name != + github.repository + name: Linting Checks runs-on: ubuntu-22.04 steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install python uses: actions/setup-python@v4 @@ -46,7 +52,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Python id: setup-python @@ -58,7 +64,7 @@ jobs: - name: Install pipenv run: | - pip install --user pipenv==${DEFAULT_PIP_ENV_VERSION} + pip install --user pipenv==${{ env.DEFAULT_PIP_ENV_VERSION }} - name: Install dependencies run: | @@ -88,7 +94,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Deploy docs uses: mhausenblas/mkdocs-deploy-gh-pages@master @@ -99,18 +105,18 @@ jobs: EXTRA_PACKAGES: build-base tests-backend: - name: "Tests (${{ matrix.python-version }})" + name: "Backend Tests (Python ${{ matrix.python-version }})" runs-on: ubuntu-22.04 needs: - pre-commit strategy: matrix: - python-version: ['3.8', '3.9', '3.10'] + python-version: ['3.9', '3.10', '3.11'] fail-fast: false steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Start containers run: | @@ -127,7 +133,7 @@ jobs: - name: Install pipenv run: | - pip install --user pipenv==${DEFAULT_PIP_ENV_VERSION} + pip install --user pipenv==${{ env.DEFAULT_PIP_ENV_VERSION }} - name: Install system dependencies run: | @@ -173,47 +179,88 @@ jobs: docker compose --file ${GITHUB_WORKSPACE}/docker/compose/docker-compose.ci-test.yml logs docker compose --file ${GITHUB_WORKSPACE}/docker/compose/docker-compose.ci-test.yml down - tests-frontend: - name: "Tests Frontend" + install-frontend-depedendencies: + name: "Install Frontend Dependendencies" runs-on: ubuntu-22.04 needs: - pre-commit - strategy: - matrix: - node-version: [16.x] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + name: Use Node.js 20 + uses: actions/setup-node@v4 with: - node-version: ${{ matrix.node-version }} + node-version: 20.x cache: 'npm' cache-dependency-path: 'src-ui/package-lock.json' + - name: Cache frontend depdendencies + id: cache-frontend-deps + uses: actions/cache@v3 + with: + path: | + ~/.npm + ~/.cache + key: ${{ runner.os }}-frontenddeps-${{ hashFiles('src-ui/package-lock.json') }} - name: Install dependencies + if: steps.cache-frontend-deps.outputs.cache-hit != 'true' run: cd src-ui && npm ci - name: Install Playwright + if: steps.cache-frontend-deps.outputs.cache-hit != 'true' run: cd src-ui && npx playwright install --with-deps + + tests-frontend: + name: "Frontend Tests (Node ${{ matrix.node-version }} - ${{ matrix.shard-index }}/${{ matrix.shard-count }})" + runs-on: ubuntu-22.04 + needs: + - install-frontend-depedendencies + strategy: + fail-fast: false + matrix: + node-version: [20.x] + shard-index: [1, 2, 3, 4] + shard-count: [4] + steps: + - uses: actions/checkout@v4 + - + name: Use Node.js 20 + uses: actions/setup-node@v4 + with: + node-version: 20.x + cache: 'npm' + cache-dependency-path: 'src-ui/package-lock.json' + - name: Cache frontend depdendencies + id: cache-frontend-deps + uses: actions/cache@v3 + with: + path: | + ~/.npm + ~/.cache + key: ${{ runner.os }}-frontenddeps-${{ hashFiles('src-ui/package-lock.json') }} + - name: Re-link Angular cli + run: cd src-ui && npm link @angular/cli - name: Linting checks run: cd src-ui && npm run lint - name: Run Jest unit tests - run: cd src-ui && npm run test + run: cd src-ui && npm run test -- --max-workers=2 --shard=${{ matrix.shard-index }}/${{ matrix.shard-count }} - name: Upload Jest coverage if: always() uses: actions/upload-artifact@v3 with: - name: jest-coverage-report - path: src-ui/coverage + name: jest-coverage-report-${{ matrix.shard-index }} + path: | + src-ui/coverage/coverage-final.json + src-ui/coverage/lcov.info + src-ui/coverage/clover.xml retention-days: 7 if-no-files-found: warn - name: Run Playwright e2e tests - run: cd src-ui && npx playwright test + run: cd src-ui && npx playwright test --shard ${{ matrix.shard-index }}/${{ matrix.shard-count }} - name: Upload Playwright test results if: always() @@ -224,20 +271,19 @@ jobs: retention-days: 7 tests-coverage-upload: - name: "Upload coverage" + name: "Upload Coverage" runs-on: ubuntu-22.04 needs: - tests-backend - tests-frontend steps: - - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Download frontend coverage uses: actions/download-artifact@v3 with: - name: jest-coverage-report - path: src-ui/ + path: src-ui/coverage/ - name: Upload frontend coverage to Codecov uses: codecov/codecov-action@v3 @@ -245,7 +291,9 @@ jobs: # not required for public repos, but intermittently fails otherwise token: ${{ secrets.CODECOV_TOKEN }} flags: frontend - directory: src-ui/ + directory: src-ui/coverage/ + # dont include backend coverage files here + files: '!coverage.xml' - name: Download backend coverage uses: actions/download-artifact@v3 @@ -283,7 +331,7 @@ jobs: # a tag # Otherwise forks would require a Docker Hub account and secrets setup run: | - if [[ ${{ github.repository_owner }} == "paperless-ngx" && ( ${{ github.ref_name }} == "main" || ${{ github.ref_name }} == "dev" || ${{ github.ref_name }} == "beta" || ${{ startsWith(github.ref, 'refs/tags/v') }} == "true" ) ]] ; then + if [[ ${{ github.repository_owner }} == "paperless-ngx" && ( ${{ github.ref_name }} == "dev" || ${{ github.ref_name }} == "beta" || ${{ startsWith(github.ref, 'refs/tags/v') }} == "true" ) ]] ; then echo "Enabling DockerHub image push" echo "enable=true" >> $GITHUB_OUTPUT else @@ -300,7 +348,7 @@ jobs: - name: Gather Docker metadata id: docker-meta - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: images: | ghcr.io/${{ steps.set-ghcr-repository.outputs.ghcr-repository }} @@ -315,26 +363,28 @@ jobs: type=semver,pattern={{major}}.{{minor}} - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 # If https://github.com/docker/buildx/issues/1044 is resolved, # the append input with a native arm64 arch could be used to # significantly speed up building - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 + with: + platforms: arm64 - - name: Login to Github Container Registry - uses: docker/login-action@v2 + name: Login to GitHub Container Registry + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Login to Docker Hub - uses: docker/login-action@v2 + uses: docker/login-action@v3 # Don't attempt to login is not pushing to Docker Hub if: steps.push-other-places.outputs.enable == 'true' with: @@ -342,7 +392,7 @@ jobs: password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to Quay.io - uses: docker/login-action@v2 + uses: docker/login-action@v3 # Don't attempt to login is not pushing to Quay.io if: steps.push-other-places.outputs.enable == 'true' with: @@ -351,11 +401,11 @@ jobs: password: ${{ secrets.QUAY_ROBOT_TOKEN }} - name: Build and push - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: context: . file: ./Dockerfile - platforms: linux/amd64,linux/arm/v7,linux/arm64 + platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.docker-meta.outputs.tags }} labels: ${{ steps.docker-meta.outputs.labels }} @@ -384,13 +434,14 @@ jobs: retention-days: 7 build-release: + name: "Build Release" needs: - build-docker-image runs-on: ubuntu-22.04 steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Python id: setup-python @@ -402,11 +453,17 @@ jobs: - name: Install pipenv + tools run: | - pip install --upgrade --user pipenv==${DEFAULT_PIP_ENV_VERSION} setuptools wheel + pip install --upgrade --user pipenv==${{ env.DEFAULT_PIP_ENV_VERSION }} setuptools wheel - name: Install Python dependencies run: | pipenv --python ${{ steps.setup-python.outputs.python-version }} sync --dev + - + name: Patch whitenoise + run: | + curl --fail --silent --show-error --location --output 484.patch https://github.com/evansd/whitenoise/pull/484.patch + patch -d $(pipenv --venv)/lib/python3.10/site-packages --verbose -p2 < 484.patch + rm 484.patch - name: Install system dependencies run: | @@ -493,6 +550,7 @@ jobs: retention-days: 7 publish-release: + name: "Publish Release" runs-on: ubuntu-22.04 outputs: prerelease: ${{ steps.get_version.outputs.prerelease }} @@ -542,6 +600,7 @@ jobs: asset_content_type: application/x-xz append-changelog: + name: "Append Changelog" runs-on: ubuntu-22.04 needs: - publish-release @@ -549,7 +608,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: main - @@ -562,7 +621,7 @@ jobs: - name: Install pipenv + tools run: | - pip install --upgrade --user pipenv==${DEFAULT_PIP_ENV_VERSION} setuptools wheel + pip install --upgrade --user pipenv==${{ env.DEFAULT_PIP_ENV_VERSION }} setuptools wheel - name: Append Changelog to docs id: append-Changelog diff --git a/.github/workflows/cleanup-tags.yml b/.github/workflows/cleanup-tags.yml index 78da9861b..63eb5bf2c 100644 --- a/.github/workflows/cleanup-tags.yml +++ b/.github/workflows/cleanup-tags.yml @@ -29,7 +29,7 @@ jobs: - name: Clean temporary images if: "${{ env.TOKEN != '' }}" - uses: stumpylog/image-cleaner-action/ephemeral@v0.2.0 + uses: stumpylog/image-cleaner-action/ephemeral@v0.3.0 with: token: "${{ env.TOKEN }}" owner: "${{ github.repository_owner }}" @@ -68,7 +68,7 @@ jobs: - name: Clean untagged images if: "${{ env.TOKEN != '' }}" - uses: stumpylog/image-cleaner-action/untagged@v0.2.0 + uses: stumpylog/image-cleaner-action/untagged@v0.3.0 with: token: "${{ env.TOKEN }}" owner: "${{ github.repository_owner }}" diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index e1c6eebb8..bd3943144 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -38,7 +38,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/project-actions.yml b/.github/workflows/project-actions.yml index 351ce06c2..6fa849652 100644 --- a/.github/workflows/project-actions.yml +++ b/.github/workflows/project-actions.yml @@ -28,7 +28,7 @@ jobs: if: github.event_name == 'issues' && (github.event.action == 'opened' || github.event.action == 'reopened') steps: - name: Add issue to project and set status to ${{ env.todo }} - uses: leonsteinhaeuser/project-beta-automations@v2.1.0 + uses: leonsteinhaeuser/project-beta-automations@v2.2.1 with: gh_token: ${{ secrets.GH_TOKEN }} organization: paperless-ngx @@ -44,7 +44,7 @@ jobs: if: github.event_name == 'pull_request_target' && (github.event.action == 'opened' || github.event.action == 'reopened') && github.event.pull_request.user.login != 'dependabot' steps: - name: Add PR to project and set status to "Needs Review" - uses: leonsteinhaeuser/project-beta-automations@v2.1.0 + uses: leonsteinhaeuser/project-beta-automations@v2.2.1 with: gh_token: ${{ secrets.GH_TOKEN }} organization: paperless-ngx diff --git a/.github/workflows/repo-maintenance.yml b/.github/workflows/repo-maintenance.yml index b03c55911..c732d0342 100644 --- a/.github/workflows/repo-maintenance.yml +++ b/.github/workflows/repo-maintenance.yml @@ -8,6 +8,7 @@ on: permissions: issues: write pull-requests: write + discussions: write concurrency: group: lock @@ -32,10 +33,11 @@ jobs: name: 'Lock Old Threads' runs-on: ubuntu-latest steps: - - uses: dessant/lock-threads@v4 + - uses: dessant/lock-threads@v5 with: issue-inactive-days: '30' pr-inactive-days: '30' + discussion-inactive-days: '30' log-output: true issue-comment: > This issue has been automatically locked since there @@ -45,3 +47,63 @@ jobs: This pull request has been automatically locked since there has not been any recent activity after it was closed. Please open a new discussion or issue for related concerns. + discussion-comment: > + This discussion has been automatically locked since there + has not been any recent activity after it was closed. + Please open a new discussion for related concerns. + close-answered-discussions: + name: 'Close Answered Discussions' + runs-on: ubuntu-latest + steps: + - uses: actions/github-script@v7 + with: + script: | + function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); + } + + const query = `query($owner:String!, $name:String!) { + repository(owner:$owner, name:$name){ + discussions(first:100, answered:true, states:[OPEN]) { + nodes { + id, + number + } + } + } + }`; + const variables = { + owner: context.repo.owner, + name: context.repo.repo, + } + const result = await github.graphql(query, variables) + + console.log(`Found ${result.repository.discussions.nodes.length} open answered discussions`) + + for (const discussion of result.repository.discussions.nodes) { + console.log(`Closing dicussion #${discussion.number} (${discussion.id})`) + + const addCommentMutation = `mutation($discussion:ID!, $body:String!) { + addDiscussionComment(input:{discussionId:$discussion, body:$body}) { + clientMutationId + } + }`; + const commentVariables = { + discussion: discussion.id, + body: 'This discussion has been automatically closed because it was marked as answered.', + } + await github.graphql(addCommentMutation, commentVariables) + + const closeDiscussionMutation = `mutation($discussion:ID!, $reason:DiscussionCloseReason!) { + closeDiscussion(input:{discussionId:$discussion, reason:$reason}) { + clientMutationId + } + }`; + const closeVariables = { + discussion: discussion.id, + reason: "RESOLVED", + } + await github.graphql(closeDiscussionMutation, closeVariables) + + await sleep(1000) + } diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3ddb8d731..86b7a7dc7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,7 @@ repos: # General hooks - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.5.0 hooks: - id: check-docstring-first - id: check-json @@ -27,7 +27,7 @@ repos: - id: check-case-conflict - id: detect-private-key - repo: https://github.com/pre-commit/mirrors-prettier - rev: 'v3.0.0' + rev: 'v3.1.0' hooks: - id: prettier types_or: @@ -36,17 +36,17 @@ repos: - markdown exclude: "(^Pipfile\\.lock$)" # Python hooks - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: 'v0.0.280' + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: 'v0.1.5' hooks: - id: ruff - - repo: https://github.com/psf/black - rev: 23.7.0 + - repo: https://github.com/psf/black-pre-commit-mirror + rev: 23.11.0 hooks: - id: black # Dockerfile hooks - repo: https://github.com/AleksaC/hadolint-py - rev: v2.12.0.2 + rev: v2.12.0.3 hooks: - id: hadolint # Shell script hooks @@ -57,6 +57,6 @@ repos: args: - "--tab" - repo: https://github.com/shellcheck-py/shellcheck-py - rev: "v0.9.0.5" + rev: "v0.9.0.6" hooks: - id: shellcheck diff --git a/.prettierrc b/.prettierrc index eb55154ad..c7b03967b 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,6 +1,16 @@ -# https://prettier.io/docs/en/options.html#semicolons -semi: false -# https://prettier.io/docs/en/options.html#quotes -singleQuote: true -# https://prettier.io/docs/en/options.html#trailing-commas -trailingComma: "es5" +{ + # https://prettier.io/docs/en/options.html#semicolons + "semi": false, + # https://prettier.io/docs/en/options.html#quotes + "singleQuote": true, + # https://prettier.io/docs/en/options.html#trailing-commas + "trailingComma": "es5", + "overrides": [ + { + "files": ["index.md", "administration.md"], + "options": { + "tabWidth": 4 + } + } + ] +} diff --git a/.python-version b/.python-version index eee6392d5..43077b246 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.8.16 +3.9.18 diff --git a/.ruff.toml b/.ruff.toml index 23b39089c..c69de0ee1 100644 --- a/.ruff.toml +++ b/.ruff.toml @@ -7,8 +7,8 @@ fix = true line-length = 88 respect-gitignore = true src = ["src"] -target-version = "py38" -format = "grouped" +target-version = "py39" +output-format = "grouped" show-fixes = true [per-file-ignores] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cc268c6ea..d87bd243b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,7 +11,7 @@ If you want to implement something big: ## Python -Paperless supports python 3.8 and 3.9. We format Python code with [Black](https://github.com/psf/black). +Paperless supports python 3.9 - 3.11. We format Python code with [Black](https://github.com/psf/black). ## Branches diff --git a/Dockerfile b/Dockerfile index c96c957c8..71e0b7e45 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ # Purpose: Compiles the frontend # Notes: # - Does NPM stuff with Typescript and such -FROM --platform=$BUILDPLATFORM docker.io/node:16-bookworm-slim AS compile-frontend +FROM --platform=$BUILDPLATFORM docker.io/node:20-bookworm-slim AS compile-frontend COPY ./src-ui /src/src-ui @@ -21,7 +21,7 @@ RUN set -eux \ # Comments: # - pipenv dependencies are not left in the final image # - pipenv can't touch the final image somehow -FROM --platform=$BUILDPLATFORM docker.io/python:3.9-alpine as pipenv-base +FROM --platform=$BUILDPLATFORM docker.io/python:3.11-alpine as pipenv-base WORKDIR /usr/src/pipenv @@ -29,7 +29,7 @@ COPY Pipfile* ./ RUN set -eux \ && echo "Installing pipenv" \ - && python3 -m pip install --no-cache-dir --upgrade pipenv==2023.7.23 \ + && python3 -m pip install --no-cache-dir --upgrade pipenv==2023.10.24 \ && echo "Generating requirement.txt" \ && pipenv requirements > requirements.txt @@ -37,7 +37,7 @@ RUN set -eux \ # Purpose: The final image # Comments: # - Don't leave anything extra in here -FROM docker.io/python:3.9-slim-bookworm as main-app +FROM docker.io/python:3.11-slim-bookworm as main-app LABEL org.opencontainers.image.authors="paperless-ngx team " LABEL org.opencontainers.image.documentation="https://docs.paperless-ngx.com/" @@ -47,6 +47,14 @@ LABEL org.opencontainers.image.licenses="GPL-3.0-only" ARG DEBIAN_FRONTEND=noninteractive +# Buildx provided, must be defined to use though +ARG TARGETARCH + +# Can be workflow provided, defaults set for manual building +ARG JBIG2ENC_VERSION=0.29 +ARG QPDF_VERSION=11.6.3 +ARG GS_VERSION=10.02.0 + # # Begin installation and configuration # Order the steps below from least often changed to most @@ -67,23 +75,11 @@ ARG RUNTIME_PACKAGES="\ gnupg \ icc-profiles-free \ imagemagick \ - # Image processing - liblept5 \ - liblcms2-2 \ - libtiff6 \ - libfreetype6 \ - libwebp7 \ - libopenjp2-7 \ - libimagequant0 \ - libraqm0 \ - libjpeg62-turbo \ # PostgreSQL libpq5 \ postgresql-client \ # MySQL / MariaDB mariadb-client \ - # For Numpy - libatlas3-base \ # OCRmyPDF dependencies tesseract-ocr \ tesseract-ocr-eng \ @@ -93,12 +89,11 @@ ARG RUNTIME_PACKAGES="\ tesseract-ocr-spa \ unpaper \ pngquant \ - # pikepdf / qpdf jbig2dec \ + # lxml libxml2 \ libxslt1.1 \ - libgnutls30 \ - libqpdf29 \ + # itself qpdf \ # Mime type detection file \ @@ -107,9 +102,7 @@ ARG RUNTIME_PACKAGES="\ zlib1g \ # Barcode splitter libzbar0 \ - poppler-utils \ - # RapidFuzz on armv7 - libatomic1" + poppler-utils" # Install basic runtime packages. # These change very infrequently @@ -117,7 +110,37 @@ RUN set -eux \ echo "Installing system packages" \ && apt-get update \ && apt-get install --yes --quiet --no-install-recommends ${RUNTIME_PACKAGES} \ - && rm -rf /var/lib/apt/lists/* \ + && echo "Installing pre-built updates" \ + && echo "Installing qpdf ${QPDF_VERSION}" \ + && curl --fail --silent --show-error --location \ + --output libqpdf29_${QPDF_VERSION}-1_${TARGETARCH}.deb \ + https://github.com/paperless-ngx/builder/releases/download/qpdf-${QPDF_VERSION}/libqpdf29_${QPDF_VERSION}-1_${TARGETARCH}.deb \ + && curl --fail --silent --show-error --location \ + --output qpdf_${QPDF_VERSION}-1_${TARGETARCH}.deb \ + https://github.com/paperless-ngx/builder/releases/download/qpdf-${QPDF_VERSION}/qpdf_${QPDF_VERSION}-1_${TARGETARCH}.deb \ + && dpkg --install ./libqpdf29_${QPDF_VERSION}-1_${TARGETARCH}.deb \ + && dpkg --install ./qpdf_${QPDF_VERSION}-1_${TARGETARCH}.deb \ + && echo "Installing Ghostscript ${GS_VERSION}" \ + && curl --fail --silent --show-error --location \ + --output libgs10_${GS_VERSION}.dfsg-2_${TARGETARCH}.deb \ + https://github.com/paperless-ngx/builder/releases/download/ghostscript-${GS_VERSION}/libgs10_${GS_VERSION}.dfsg-2_${TARGETARCH}.deb \ + && curl --fail --silent --show-error --location \ + --output ghostscript_${GS_VERSION}.dfsg-2_${TARGETARCH}.deb \ + https://github.com/paperless-ngx/builder/releases/download/ghostscript-${GS_VERSION}/ghostscript_${GS_VERSION}.dfsg-2_${TARGETARCH}.deb \ + && curl --fail --silent --show-error --location \ + --output libgs10-common_${GS_VERSION}.dfsg-2_all.deb \ + https://github.com/paperless-ngx/builder/releases/download/ghostscript-${GS_VERSION}/libgs10-common_${GS_VERSION}.dfsg-2_all.deb \ + && dpkg --install ./libgs10-common_${GS_VERSION}.dfsg-2_all.deb \ + && dpkg --install ./libgs10_${GS_VERSION}.dfsg-2_${TARGETARCH}.deb \ + && dpkg --install ./ghostscript_${GS_VERSION}.dfsg-2_${TARGETARCH}.deb \ + && echo "Installing jbig2enc" \ + && curl --fail --silent --show-error --location \ + --output jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb \ + https://github.com/paperless-ngx/builder/releases/download/jbig2enc-${JBIG2ENC_VERSION}/jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb \ + && dpkg --install ./jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb \ + && echo "Cleaning up image layer" \ + && rm --force --verbose *.deb \ + && rm --recursive --force --verbose /var/lib/apt/lists/* \ && echo "Installing supervisor" \ && python3 -m pip install --default-timeout=1000 --upgrade --no-cache-dir supervisor==4.2.5 @@ -168,41 +191,6 @@ RUN set -eux \ && chmod +x install_management_commands.sh \ && ./install_management_commands.sh -# Buildx provided, must be defined to use though -ARG TARGETARCH -ARG TARGETVARIANT - -# Can be workflow provided, defaults set for manual building -ARG JBIG2ENC_VERSION=0.29 -ARG QPDF_VERSION=11.3.0 -ARG PIKEPDF_VERSION=7.2.0 -ARG PSYCOPG2_VERSION=2.9.6 - -# Install the built packages from the installer library images -# These change sometimes -RUN set -eux \ - && echo "Getting binaries" \ - && mkdir paperless-ngx \ - && curl --fail --silent --show-error --output paperless-ngx.tar.gz --location https://github.com/paperless-ngx/builder/archive/58bb061b9b3b63009852d6d875f9a305d9ae6ac9.tar.gz \ - && tar -xf paperless-ngx.tar.gz --directory paperless-ngx --strip-components=1 \ - && cd paperless-ngx \ - # Setting a specific revision ensures we know what this installed - # and ensures cache breaking on changes - && echo "Installing jbig2enc" \ - && cp ./jbig2enc/${JBIG2ENC_VERSION}/${TARGETARCH}${TARGETVARIANT}/jbig2 /usr/local/bin/ \ - && cp ./jbig2enc/${JBIG2ENC_VERSION}/${TARGETARCH}${TARGETVARIANT}/libjbig2enc* /usr/local/lib/ \ - && chmod a+x /usr/local/bin/jbig2 \ - && echo "Installing pikepdf and dependencies" \ - && python3 -m pip install --no-cache-dir ./pikepdf/${PIKEPDF_VERSION}/${TARGETARCH}${TARGETVARIANT}/*.whl \ - && python3 -m pip list \ - && echo "Installing psycopg2" \ - && python3 -m pip install --no-cache-dir ./psycopg2/${PSYCOPG2_VERSION}/${TARGETARCH}${TARGETVARIANT}/psycopg2*.whl \ - && python3 -m pip list \ - && echo "Cleaning up image layer" \ - && cd ../ \ - && rm -rf paperless-ngx \ - && rm paperless-ngx.tar.gz - WORKDIR /usr/src/paperless/src/ # Python dependencies @@ -214,6 +202,9 @@ COPY --from=pipenv-base /usr/src/pipenv/requirements.txt ./ ARG BUILD_PACKAGES="\ build-essential \ git \ + # https://www.psycopg.org/docs/install.html#prerequisites + libpq-dev \ + # https://github.com/PyMySQL/mysqlclient#linux default-libmysqlclient-dev \ pkg-config" @@ -226,34 +217,46 @@ RUN --mount=type=cache,target=/root/.cache/pip/,id=pip-cache \ && python3 -m pip install --no-cache-dir --upgrade wheel \ && echo "Installing Python requirements" \ && python3 -m pip install --default-timeout=1000 --requirement requirements.txt \ + && echo "Patching whitenoise for compression speedup" \ + && curl --fail --silent --show-error --location --output 484.patch https://github.com/evansd/whitenoise/pull/484.patch \ + && patch -d /usr/local/lib/python3.11/site-packages --verbose -p2 < 484.patch \ + && rm 484.patch \ && echo "Installing NLTK data" \ && python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" snowball_data \ && python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" stopwords \ && python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" punkt \ && echo "Cleaning up image" \ - && apt-get -y purge ${BUILD_PACKAGES} \ - && apt-get -y autoremove --purge \ + && apt-get --yes purge ${BUILD_PACKAGES} \ + && apt-get --yes autoremove --purge \ && apt-get clean --yes \ - && rm -rf /var/lib/apt/lists/* \ - && rm -rf /tmp/* \ - && rm -rf /var/tmp/* \ - && rm -rf /var/cache/apt/archives/* \ - && truncate -s 0 /var/log/*log + && rm --recursive --force --verbose /var/lib/apt/lists/* \ + && rm --recursive --force --verbose /tmp/* \ + && rm --recursive --force --verbose /var/tmp/* \ + && rm --recursive --force --verbose /var/cache/apt/archives/* \ + && truncate --size 0 /var/log/*log # copy backend -COPY ./src ./ +COPY --chown=1000:1000 ./src ./ # copy frontend -COPY --from=compile-frontend /src/src/documents/static/frontend/ ./documents/static/frontend/ +COPY --from=compile-frontend --chown=1000:1000 /src/src/documents/static/frontend/ ./documents/static/frontend/ # add users, setup scripts # Mount the compiled frontend to expected location RUN set -eux \ - && addgroup --gid 1000 paperless \ - && useradd --uid 1000 --gid paperless --home-dir /usr/src/paperless paperless \ - && chown -R paperless:paperless /usr/src/paperless \ - && gosu paperless python3 manage.py collectstatic --clear --no-input --link \ - && gosu paperless python3 manage.py compilemessages + && echo "Setting up user/group" \ + && addgroup --gid 1000 paperless \ + && useradd --uid 1000 --gid paperless --home-dir /usr/src/paperless paperless \ + && echo "Creating volume directories" \ + && mkdir --parents --verbose /usr/src/paperless/data \ + && mkdir --parents --verbose /usr/src/paperless/media \ + && mkdir --parents --verbose /usr/src/paperless/consume \ + && mkdir --parents --verbose /usr/src/paperless/export \ + && echo "Adjusting all permissions" \ + && chown --from root:root --changes --recursive paperless:paperless /usr/src/paperless \ + && echo "Collecting static files" \ + && gosu paperless python3 manage.py collectstatic --clear --no-input --link \ + && gosu paperless python3 manage.py compilemessages VOLUME ["/usr/src/paperless/data", \ "/usr/src/paperless/media", \ diff --git a/Pipfile b/Pipfile index c7ab4f831..1e6c35bd1 100644 --- a/Pipfile +++ b/Pipfile @@ -3,69 +3,57 @@ url = "https://pypi.python.org/simple" verify_ssl = true name = "pypi" -[[source]] -url = "https://www.piwheels.org/simple" -verify_ssl = true -name = "piwheels" - [packages] dateparser = "~=1.1" # WARNING: django does not use semver. # Only patch versions are guaranteed to not introduce breaking changes. -django = "~=4.1.9" -django-cors-headers = "*" +django = "~=4.2.7" +django-auditlog = "*" django-celery-results = "*" django-compression-middleware = "*" -django-guardian = "*" +django-cors-headers = "*" django-extensions = "*" -django-filter = "~=23.1" +django-filter = "~=23.3" +django-guardian = "*" +django-multiselectfield = "*" djangorestframework = "~=3.14" djangorestframework-guardian = "*" +drf-writable-nested = "*" +bleach = "*" +celery = {extras = ["redis"], version = "*"} +channels = "~=4.0" +channels-redis = "*" +concurrent-log-handler = "*" filelock = "*" +flower = "*" +gotenberg-client = "*" gunicorn = "*" imap-tools = "*" +inotifyrecursive = "~=0.3" langdetect = "*" +mysqlclient = "*" +nltk = "*" +ocrmypdf = "~=15.0" pathvalidate = "*" -python-gnupg = "*" -python-dotenv = "*" -python-dateutil = "*" -python-magic = "*" -python-ipware = "*" +pdf2image = "*" psycopg2 = "*" +python-dateutil = "*" +python-dotenv = "*" +python-gnupg = "*" +python-ipware = "*" +python-magic = "*" +pyzbar = "*" rapidfuzz = "*" redis = {extras = ["hiredis"], version = "*"} scikit-learn = "~=1.3" -whitenoise = "~=6.5" -watchdog = "~=3.0" -whoosh="~=2.7" -inotifyrecursive = "~=0.3" -ocrmypdf = "~=14.0" -tqdm = "*" -tika-client = "*" -channels = "~=4.0" -channels-redis = "*" -uvicorn = {extras = ["standard"], version = "*"} -concurrent-log-handler = "*" -pyzbar = "*" -mysqlclient = "*" -celery = {extras = ["redis"], version = "*"} setproctitle = "*" -nltk = "*" -pdf2image = "*" -flower = "*" -bleach = "*" +tika-client = "*" +tqdm = "*" +uvicorn = {extras = ["standard"], version = "*"} +watchdog = "~=3.0" +whitenoise = "~=6.6" +whoosh="~=2.7" zxing-cpp = {version = "*", platform_machine = "== 'x86_64'"} -# -# Packages locked due to issues (try to check if these are fixed in a release every so often) -# -# Pin this until piwheels is building 1.9 (see https://www.piwheels.org/project/scipy/) -scipy = "==1.8.1" -# v4 brings in extra dependencies for features not used here -reportlab = "==3.6.12" -# Pin these until piwheels is building a newer version (see https://www.piwheels.org/project/{package}/) -cryptography = "==40.0.1" -pikepdf = "==7.2.0" -pillow = "==9.5.0" [dev-packages] # Linting @@ -82,11 +70,11 @@ pytest-env = "*" pytest-sugar = "*" pytest-xdist = "*" pytest-rerunfailures = "*" -"pdfminer.six" = "*" imagehash = "*" daphne = "*" # Documentation mkdocs-material = "*" +mkdocs-glightbox = "*" [typing-dev] mypy = "*" @@ -98,12 +86,10 @@ celery-types = "*" django-stubs = {extras= ["compatible-mypy"], version="*"} types-dateparser = "*" types-bleach = "*" -types-humanfriendly = "*" types-redis = "*" types-tqdm = "*" types-Markdown = "*" types-Pygments = "*" -types-backports = "*" types-colorama = "*" types-psycopg2 = "*" types-setuptools = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 0a64146bf..c0afbeea7 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "7954f2f8a02bde5433df07556cc8758f428fd61e93db849333be33bde80d83ff" + "sha256": "d7ef8db734997cda7c11971f2ddb66bf1918f4232b0956a9bf604c41763ce461" }, "pipfile-spec": 6, "requires": {}, @@ -10,30 +10,25 @@ "name": "pypi", "url": "https://pypi.python.org/simple", "verify_ssl": true - }, - { - "name": "piwheels", - "url": "https://www.piwheels.org/simple", - "verify_ssl": true } ] }, "default": { "amqp": { "hashes": [ - "sha256:2c1b13fecc0893e946c65cbd5f36427861cffa4ea2201d8f6fca22e2a373b5e2", - "sha256:6f0956d2c23d8fa6e7691934d8c3930eadb44972cbbd1a7ae3a520f735d43359" + "sha256:827cb12fb0baa892aad844fd95258143bce4027fdac4fccddbc43330fd281637", + "sha256:a1ecff425ad063ad42a486c902807d1482311481c8ad95a72694b2975e75f7fd" ], "markers": "python_version >= '3.6'", - "version": "==5.1.1" + "version": "==5.2.0" }, "anyio": { "hashes": [ - "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780", - "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5" + "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f", + "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a" ], - "markers": "python_version >= '3.7'", - "version": "==3.7.1" + "markers": "python_version >= '3.8'", + "version": "==4.0.0" }, "asgiref": { "hashes": [ @@ -45,147 +40,127 @@ }, "async-timeout": { "hashes": [ - "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", - "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" + "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f", + "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028" ], "markers": "python_full_version <= '3.11.2'", - "version": "==4.0.2" - }, - "backports.zoneinfo": { - "hashes": [ - "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf", - "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328", - "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546", - "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6", - "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570", - "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9", - "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7", - "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987", - "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722", - "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582", - "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc", - "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b", - "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1", - "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08", - "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac", - "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2" - ], - "markers": "python_version < '3.9'", - "version": "==0.2.1" + "version": "==4.0.3" }, "billiard": { "hashes": [ - "sha256:0f50d6be051c6b2b75bfbc8bfd85af195c5739c281d3f5b86a5640c65563614a", - "sha256:1ad2eeae8e28053d729ba3373d34d9d6e210f6e4d8bf0a9c64f92bd053f1edf5" + "sha256:07aa978b308f334ff8282bd4a746e681b3513db5c9a514cbdd810cbbdc19714d", + "sha256:9a3c3184cb275aa17a732f93f65b20c525d3d9f253722d26a82194803ade5a2c" ], "markers": "python_version >= '3.7'", - "version": "==4.1.0" + "version": "==4.2.0" }, "bleach": { "hashes": [ - "sha256:1a1a85c1595e07d8db14c5f09f09e6433502c51c595970edc090551f0db99414", - "sha256:33c16e3353dbd13028ab4799a0f89a83f113405c766e9c122df8a06f5b85b3f4" + "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe", + "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6" ], "index": "pypi", - "version": "==6.0.0" + "markers": "python_version >= '3.8'", + "version": "==6.1.0" }, "brotli": { "hashes": [ - "sha256:02177603aaca36e1fd21b091cb742bb3b305a569e2402f1ca38af471777fb019", - "sha256:11d3283d89af7033236fa4e73ec2cbe743d4f6a81d41bd234f24bf63dde979df", - "sha256:12effe280b8ebfd389022aa65114e30407540ccb89b177d3fbc9a4f177c4bd5d", - "sha256:160c78292e98d21e73a4cc7f76a234390e516afcd982fa17e1422f7c6a9ce9c8", - "sha256:16d528a45c2e1909c2798f27f7bf0a3feec1dc9e50948e738b961618e38b6a7b", - "sha256:19598ecddd8a212aedb1ffa15763dd52a388518c4550e615aed88dc3753c0f0c", - "sha256:1c48472a6ba3b113452355b9af0a60da5c2ae60477f8feda8346f8fd48e3e87c", - "sha256:268fe94547ba25b58ebc724680609c8ee3e5a843202e9a381f6f9c5e8bdb5c70", - "sha256:269a5743a393c65db46a7bb982644c67ecba4b8d91b392403ad8a861ba6f495f", - "sha256:26d168aac4aaec9a4394221240e8a5436b5634adc3cd1cdf637f6645cecbf181", - "sha256:29d1d350178e5225397e28ea1b7aca3648fcbab546d20e7475805437bfb0a130", - "sha256:2aad0e0baa04517741c9bb5b07586c642302e5fb3e75319cb62087bd0995ab19", - "sha256:3148362937217b7072cf80a2dcc007f09bb5ecb96dae4617316638194113d5be", - "sha256:330e3f10cd01da535c70d09c4283ba2df5fb78e915bea0a28becad6e2ac010be", - "sha256:336b40348269f9b91268378de5ff44dc6fbaa2268194f85177b53463d313842a", - "sha256:3496fc835370da351d37cada4cf744039616a6db7d13c430035e901443a34daa", - "sha256:35a3edbe18e876e596553c4007a087f8bcfd538f19bc116917b3c7522fca0429", - "sha256:3b78a24b5fd13c03ee2b7b86290ed20efdc95da75a3557cc06811764d5ad1126", - "sha256:3b8b09a16a1950b9ef495a0f8b9d0a87599a9d1f179e2d4ac014b2ec831f87e7", - "sha256:3c1306004d49b84bd0c4f90457c6f57ad109f5cc6067a9664e12b7b79a9948ad", - "sha256:3ffaadcaeafe9d30a7e4e1e97ad727e4f5610b9fa2f7551998471e3736738679", - "sha256:40d15c79f42e0a2c72892bf407979febd9cf91f36f495ffb333d1d04cebb34e4", - "sha256:44bb8ff420c1d19d91d79d8c3574b8954288bdff0273bf788954064d260d7ab0", - "sha256:4688c1e42968ba52e57d8670ad2306fe92e0169c6f3af0089be75bbac0c64a3b", - "sha256:495ba7e49c2db22b046a53b469bbecea802efce200dffb69b93dd47397edc9b6", - "sha256:4d1b810aa0ed773f81dceda2cc7b403d01057458730e309856356d4ef4188438", - "sha256:503fa6af7da9f4b5780bb7e4cbe0c639b010f12be85d02c99452825dd0feef3f", - "sha256:56d027eace784738457437df7331965473f2c0da2c70e1a1f6fdbae5402e0389", - "sha256:5913a1177fc36e30fcf6dc868ce23b0453952c78c04c266d3149b3d39e1410d6", - "sha256:5b6ef7d9f9c38292df3690fe3e302b5b530999fa90014853dcd0d6902fb59f26", - "sha256:5bf37a08493232fbb0f8229f1824b366c2fc1d02d64e7e918af40acd15f3e337", - "sha256:5cb1e18167792d7d21e21365d7650b72d5081ed476123ff7b8cac7f45189c0c7", - "sha256:61a7ee1f13ab913897dac7da44a73c6d44d48a4adff42a5701e3239791c96e14", - "sha256:622a231b08899c864eb87e85f81c75e7b9ce05b001e59bbfbf43d4a71f5f32b2", - "sha256:68715970f16b6e92c574c30747c95cf8cf62804569647386ff032195dc89a430", - "sha256:6b2ae9f5f67f89aade1fab0f7fd8f2832501311c363a21579d02defa844d9296", - "sha256:6c772d6c0a79ac0f414a9f8947cc407e119b8598de7621f39cacadae3cf57d12", - "sha256:6d847b14f7ea89f6ad3c9e3901d1bc4835f6b390a9c71df999b0162d9bb1e20f", - "sha256:73fd30d4ce0ea48010564ccee1a26bfe39323fde05cb34b5863455629db61dc7", - "sha256:76ffebb907bec09ff511bb3acc077695e2c32bc2142819491579a695f77ffd4d", - "sha256:7bbff90b63328013e1e8cb50650ae0b9bac54ffb4be6104378490193cd60f85a", - "sha256:7cb81373984cc0e4682f31bc3d6be9026006d96eecd07ea49aafb06897746452", - "sha256:7ee83d3e3a024a9618e5be64648d6d11c37047ac48adff25f12fa4226cf23d1c", - "sha256:854c33dad5ba0fbd6ab69185fec8dab89e13cda6b7d191ba111987df74f38761", - "sha256:85f7912459c67eaab2fb854ed2bc1cc25772b300545fe7ed2dc03954da638649", - "sha256:87fdccbb6bb589095f413b1e05734ba492c962b4a45a13ff3408fa44ffe6479b", - "sha256:88c63a1b55f352b02c6ffd24b15ead9fc0e8bf781dbe070213039324922a2eea", - "sha256:8a674ac10e0a87b683f4fa2b6fa41090edfd686a6524bd8dedbd6138b309175c", - "sha256:8ed6a5b3d23ecc00ea02e1ed8e0ff9a08f4fc87a1f58a2530e71c0f48adf882f", - "sha256:93130612b837103e15ac3f9cbacb4613f9e348b58b3aad53721d92e57f96d46a", - "sha256:9744a863b489c79a73aba014df554b0e7a0fc44ef3f8a0ef2a52919c7d155031", - "sha256:9749a124280a0ada4187a6cfd1ffd35c350fb3af79c706589d98e088c5044267", - "sha256:97f715cf371b16ac88b8c19da00029804e20e25f30d80203417255d239f228b5", - "sha256:9bf919756d25e4114ace16a8ce91eb340eb57a08e2c6950c3cebcbe3dff2a5e7", - "sha256:9d12cf2851759b8de8ca5fde36a59c08210a97ffca0eb94c532ce7b17c6a3d1d", - "sha256:9ed4c92a0665002ff8ea852353aeb60d9141eb04109e88928026d3c8a9e5433c", - "sha256:a72661af47119a80d82fa583b554095308d6a4c356b2a554fdc2799bc19f2a43", - "sha256:afde17ae04d90fbe53afb628f7f2d4ca022797aa093e809de5c3cf276f61bbfa", - "sha256:b1375b5d17d6145c798661b67e4ae9d5496920d9265e2f00f1c2c0b5ae91fbde", - "sha256:b336c5e9cf03c7be40c47b5fd694c43c9f1358a80ba384a21969e0b4e66a9b17", - "sha256:b3523f51818e8f16599613edddb1ff924eeb4b53ab7e7197f85cbc321cdca32f", - "sha256:b43775532a5904bc938f9c15b77c613cb6ad6fb30990f3b0afaea82797a402d8", - "sha256:b663f1e02de5d0573610756398e44c130add0eb9a3fc912a09665332942a2efb", - "sha256:b83bb06a0192cccf1eb8d0a28672a1b79c74c3a8a5f2619625aeb6f28b3a82bb", - "sha256:ba72d37e2a924717990f4d7482e8ac88e2ef43fb95491eb6e0d124d77d2a150d", - "sha256:c2415d9d082152460f2bd4e382a1e85aed233abc92db5a3880da2257dc7daf7b", - "sha256:c83aa123d56f2e060644427a882a36b3c12db93727ad7a7b9efd7d7f3e9cc2c4", - "sha256:c8e521a0ce7cf690ca84b8cc2272ddaf9d8a50294fd086da67e517439614c755", - "sha256:cab1b5964b39607a66adbba01f1c12df2e55ac36c81ec6ed44f2fca44178bf1a", - "sha256:cb02ed34557afde2d2da68194d12f5719ee96cfb2eacc886352cb73e3808fc5d", - "sha256:cc0283a406774f465fb45ec7efb66857c09ffefbe49ec20b7882eff6d3c86d3a", - "sha256:cfc391f4429ee0a9370aa93d812a52e1fee0f37a81861f4fdd1f4fb28e8547c3", - "sha256:db844eb158a87ccab83e868a762ea8024ae27337fc7ddcbfcddd157f841fdfe7", - "sha256:defed7ea5f218a9f2336301e6fd379f55c655bea65ba2476346340a0ce6f74a1", - "sha256:e16eb9541f3dd1a3e92b89005e37b1257b157b7256df0e36bd7b33b50be73bcb", - "sha256:e1abbeef02962596548382e393f56e4c94acd286bd0c5afba756cffc33670e8a", - "sha256:e23281b9a08ec338469268f98f194658abfb13658ee98e2b7f85ee9dd06caa91", - "sha256:e2d9e1cbc1b25e22000328702b014227737756f4b5bf5c485ac1d8091ada078b", - "sha256:e48f4234f2469ed012a98f4b7874e7f7e173c167bed4934912a29e03167cf6b1", - "sha256:e4c4e92c14a57c9bd4cb4be678c25369bf7a092d55fd0866f759e425b9660806", - "sha256:ec1947eabbaf8e0531e8e899fc1d9876c179fc518989461f5d24e2223395a9e3", - "sha256:f909bbbc433048b499cb9db9e713b5d8d949e8c109a2a548502fb9aa8630f0b1" + "sha256:03d20af184290887bdea3f0f78c4f737d126c74dc2f3ccadf07e54ceca3bf208", + "sha256:0541e747cce78e24ea12d69176f6a7ddb690e62c425e01d31cc065e69ce55b48", + "sha256:069a121ac97412d1fe506da790b3e69f52254b9df4eb665cd42460c837193354", + "sha256:0b63b949ff929fbc2d6d3ce0e924c9b93c9785d877a21a1b678877ffbbc4423a", + "sha256:0c6244521dda65ea562d5a69b9a26120769b7a9fb3db2fe9545935ed6735b128", + "sha256:11d00ed0a83fa22d29bc6b64ef636c4552ebafcef57154b4ddd132f5638fbd1c", + "sha256:141bd4d93984070e097521ed07e2575b46f817d08f9fa42b16b9b5f27b5ac088", + "sha256:19c116e796420b0cee3da1ccec3b764ed2952ccfcc298b55a10e5610ad7885f9", + "sha256:1ab4fbee0b2d9098c74f3057b2bc055a8bd92ccf02f65944a241b4349229185a", + "sha256:1ae56aca0402a0f9a3431cddda62ad71666ca9d4dc3a10a142b9dce2e3c0cda3", + "sha256:224e57f6eac61cc449f498cc5f0e1725ba2071a3d4f48d5d9dffba42db196438", + "sha256:22fc2a8549ffe699bfba2256ab2ed0421a7b8fadff114a3d201794e45a9ff578", + "sha256:23032ae55523cc7bccb4f6a0bf368cd25ad9bcdcc1990b64a647e7bbcce9cb5b", + "sha256:2333e30a5e00fe0fe55903c8832e08ee9c3b1382aacf4db26664a16528d51b4b", + "sha256:2954c1c23f81c2eaf0b0717d9380bd348578a94161a65b3a2afc62c86467dd68", + "sha256:2de9d02f5bda03d27ede52e8cfe7b865b066fa49258cbab568720aa5be80a47d", + "sha256:30924eb4c57903d5a7526b08ef4a584acc22ab1ffa085faceb521521d2de32dd", + "sha256:316cc9b17edf613ac76b1f1f305d2a748f1b976b033b049a6ecdfd5612c70409", + "sha256:38025d9f30cf4634f8309c6874ef871b841eb3c347e90b0851f63d1ded5212da", + "sha256:39da8adedf6942d76dc3e46653e52df937a3c4d6d18fdc94a7c29d263b1f5b50", + "sha256:3d7954194c36e304e1523f55d7042c59dc53ec20dd4e9ea9d151f1b62b4415c0", + "sha256:4093c631e96fdd49e0377a9c167bfd75b6d0bad2ace734c6eb20b348bc3ea180", + "sha256:43ce1b9935bfa1ede40028054d7f48b5469cd02733a365eec8a329ffd342915d", + "sha256:4d4a848d1837973bf0f4b5e54e3bec977d99be36a7895c61abb659301b02c112", + "sha256:4ed11165dd45ce798d99a136808a794a748d5dc38511303239d4e2363c0695dc", + "sha256:510b5b1bfbe20e1a7b3baf5fed9e9451873559a976c1a78eebaa3b86c57b4265", + "sha256:524f35912131cc2cabb00edfd8d573b07f2d9f21fa824bd3fb19725a9cf06327", + "sha256:587ca6d3cef6e4e868102672d3bd9dc9698c309ba56d41c2b9c85bbb903cdb95", + "sha256:5b3cc074004d968722f51e550b41a27be656ec48f8afaeeb45ebf65b561481dd", + "sha256:5eeb539606f18a0b232d4ba45adccde4125592f3f636a6182b4a8a436548b914", + "sha256:5f4d5ea15c9382135076d2fb28dde923352fe02951e66935a9efaac8f10e81b0", + "sha256:5fb2ce4b8045c78ebbc7b8f3c15062e435d47e7393cc57c25115cfd49883747a", + "sha256:6172447e1b368dcbc458925e5ddaf9113477b0ed542df258d84fa28fc45ceea7", + "sha256:6c3020404e0b5eefd7c9485ccf8393cfb75ec38ce75586e046573c9dc29967a0", + "sha256:70051525001750221daa10907c77830bc889cb6d865cc0b813d9db7fefc21451", + "sha256:7905193081db9bfa73b1219140b3d315831cbff0d8941f22da695832f0dd188f", + "sha256:7c4855522edb2e6ae7fdb58e07c3ba9111e7621a8956f481c68d5d979c93032e", + "sha256:7e4c4629ddad63006efa0ef968c8e4751c5868ff0b1c5c40f76524e894c50248", + "sha256:7f4bf76817c14aa98cc6697ac02f3972cb8c3da93e9ef16b9c66573a68014f91", + "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724", + "sha256:861bf317735688269936f755fa136a99d1ed526883859f86e41a5d43c61d8966", + "sha256:890b5a14ce214389b2cc36ce82f3093f96f4cc730c1cffdbefff77a7c71f2a97", + "sha256:89f4988c7203739d48c6f806f1e87a1d96e0806d44f0fba61dba81392c9e474d", + "sha256:8dadd1314583ec0bf2d1379f7008ad627cd6336625d6679cf2f8e67081b83acf", + "sha256:901032ff242d479a0efa956d853d16875d42157f98951c0230f69e69f9c09bac", + "sha256:906bc3a79de8c4ae5b86d3d75a8b77e44404b0f4261714306e3ad248d8ab0951", + "sha256:919e32f147ae93a09fe064d77d5ebf4e35502a8df75c29fb05788528e330fe74", + "sha256:929811df5462e182b13920da56c6e0284af407d1de637d8e536c5cd00a7daf60", + "sha256:949f3b7c29912693cee0afcf09acd6ebc04c57af949d9bf77d6101ebb61e388c", + "sha256:a090ca607cbb6a34b0391776f0cb48062081f5f60ddcce5d11838e67a01928d1", + "sha256:a1fd8a29719ccce974d523580987b7f8229aeace506952fa9ce1d53a033873c8", + "sha256:a37b8f0391212d29b3a91a799c8e4a2855e0576911cdfb2515487e30e322253d", + "sha256:a3daabb76a78f829cafc365531c972016e4aa8d5b4bf60660ad8ecee19df7ccc", + "sha256:a469274ad18dc0e4d316eefa616d1d0c2ff9da369af19fa6f3daa4f09671fd61", + "sha256:a599669fd7c47233438a56936988a2478685e74854088ef5293802123b5b2460", + "sha256:a743e5a28af5f70f9c080380a5f908d4d21d40e8f0e0c8901604d15cfa9ba751", + "sha256:a77def80806c421b4b0af06f45d65a136e7ac0bdca3c09d9e2ea4e515367c7e9", + "sha256:aac0411d20e345dc0920bdec5548e438e999ff68d77564d5e9463a7ca9d3e7b1", + "sha256:ae15b066e5ad21366600ebec29a7ccbc86812ed267e4b28e860b8ca16a2bc474", + "sha256:be36e3d172dc816333f33520154d708a2657ea63762ec16b62ece02ab5e4daf2", + "sha256:c8146669223164fc87a7e3de9f81e9423c67a79d6b3447994dfb9c95da16e2d6", + "sha256:c8fd5270e906eef71d4a8d19b7c6a43760c6abcfcc10c9101d14eb2357418de9", + "sha256:caf9ee9a5775f3111642d33b86237b05808dafcd6268faa492250e9b78046eb2", + "sha256:cdad5b9014d83ca68c25d2e9444e28e967ef16e80f6b436918c700c117a85467", + "sha256:cdbc1fc1bc0bff1cef838eafe581b55bfbffaed4ed0318b724d0b71d4d377619", + "sha256:ceb64bbc6eac5a140ca649003756940f8d6a7c444a68af170b3187623b43bebf", + "sha256:d0c5516f0aed654134a2fc936325cc2e642f8a0e096d075209672eb321cff408", + "sha256:d143fd47fad1db3d7c27a1b1d66162e855b5d50a89666af46e1679c496e8e579", + "sha256:d192f0f30804e55db0d0e0a35d83a9fead0e9a359a9ed0285dbacea60cc10a84", + "sha256:db85ecf4e609a48f4b29055f1e144231b90edc90af7481aa731ba2d059226b1b", + "sha256:de6551e370ef19f8de1807d0a9aa2cdfdce2e85ce88b122fe9f6b2b076837e59", + "sha256:e1140c64812cb9b06c922e77f1c26a75ec5e3f0fb2bf92cc8c58720dec276752", + "sha256:e6a904cb26bfefc2f0a6f240bdf5233be78cd2488900a2f846f3c3ac8489ab80", + "sha256:e84799f09591700a4154154cab9787452925578841a94321d5ee8fb9a9a328f0", + "sha256:e93dfc1a1165e385cc8239fab7c036fb2cd8093728cbd85097b284d7b99249a2", + "sha256:efa8b278894b14d6da122a72fefcebc28445f2d3f880ac59d46c90f4c13be9a3", + "sha256:f0d8a7a6b5983c2496e364b969f0e526647a06b075d034f3297dc66f3b360c64", + "sha256:f296c40e23065d0d6650c4aefe7470d2a25fffda489bcc3eb66083f3ac9f6643", + "sha256:f66b5337fa213f1da0d9000bc8dc0cb5b896b726eefd9c6046f699b169c41b9e", + "sha256:f733d788519c7e3e71f0855c96618720f5d3d60c3cb829d8bbb722dddce37985", + "sha256:fce1473f3ccc4187f75b4690cfc922628aed4d3dd013d047f95a9b3919a86596", + "sha256:fd5f17ff8f14003595ab414e45fce13d073e0762394f957182e69035c9f3d7c2", + "sha256:fdc3ff3bfccdc6b9cc7c342c03aa2400683f0cb891d46e94b64a197910dc4064" ], - "version": "==1.0.9" + "version": "==1.1.0" }, "celery": { "extras": [ "redis" ], "hashes": [ - "sha256:27f8f3f3b58de6e0ab4f174791383bbd7445aff0471a43e99cfd77727940753f", - "sha256:f84d1c21a1520c116c2b7d26593926581191435a03aa74b77c941b93ca1c6210" + "sha256:870cc71d737c0200c397290d730344cc991d13a057534353d124c9380267aab9", + "sha256:9da4ea0118d232ce97dff5ed4974587fb1c0ff5c10042eb15278487cdd27d1af" ], - "index": "pypi", - "version": "==5.3.1" + "markers": "python_version >= '3.8'", + "version": "==5.3.6" }, "certifi": { "hashes": [ @@ -197,72 +172,61 @@ }, "cffi": { "hashes": [ - "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5", - "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef", - "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104", - "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426", - "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405", - "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375", - "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a", - "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e", - "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc", - "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf", - "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185", - "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497", - "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3", - "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35", - "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c", - "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83", - "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21", - "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca", - "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984", - "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac", - "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd", - "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee", - "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a", - "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2", - "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192", - "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7", - "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585", - "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f", - "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e", - "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27", - "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b", - "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e", - "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e", - "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d", - "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c", - "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415", - "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82", - "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02", - "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314", - "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325", - "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c", - "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3", - "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914", - "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045", - "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d", - "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9", - "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5", - "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2", - "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c", - "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3", - "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2", - "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8", - "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d", - "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d", - "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9", - "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162", - "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76", - "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4", - "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e", - "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9", - "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6", - "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b", - "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01", - "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0" + "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc", + "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a", + "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417", + "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab", + "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520", + "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36", + "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743", + "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8", + "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed", + "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684", + "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56", + "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324", + "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d", + "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235", + "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e", + "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088", + "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000", + "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7", + "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e", + "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673", + "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c", + "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe", + "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2", + "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098", + "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8", + "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a", + "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0", + "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b", + "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896", + "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e", + "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9", + "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2", + "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b", + "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6", + "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404", + "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f", + "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0", + "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4", + "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc", + "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936", + "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba", + "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872", + "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb", + "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614", + "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1", + "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d", + "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969", + "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b", + "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4", + "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627", + "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956", + "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357" ], - "version": "==1.15.1" + "markers": "python_version >= '3.8'", + "version": "==1.16.0" }, "channels": { "hashes": [ @@ -270,6 +234,7 @@ "sha256:2253334ac76f67cba68c2072273f7e0e67dbdac77eeb7e318f511d2f9a53c5e4" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==4.0.0" }, "channels-redis": { @@ -278,96 +243,112 @@ "sha256:6bd4f75f4ab4a7db17cee495593ace886d7e914c66f8214a1f247ff6659c073a" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==4.1.0" }, "charset-normalizer": { "hashes": [ - "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96", - "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c", - "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710", - "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706", - "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020", - "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252", - "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad", - "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329", - "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a", - "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f", - "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6", - "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4", - "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a", - "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46", - "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2", - "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23", - "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace", - "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd", - "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982", - "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10", - "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2", - "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea", - "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09", - "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5", - "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149", - "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489", - "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9", - "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80", - "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592", - "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3", - "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6", - "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed", - "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c", - "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200", - "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a", - "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e", - "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d", - "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6", - "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623", - "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669", - "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3", - "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa", - "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9", - "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2", - "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f", - "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1", - "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4", - "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a", - "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8", - "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3", - "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029", - "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f", - "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959", - "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22", - "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7", - "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952", - "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346", - "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e", - "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d", - "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299", - "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd", - "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a", - "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3", - "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037", - "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94", - "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c", - "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858", - "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a", - "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449", - "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c", - "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918", - "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1", - "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c", - "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac", - "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa" + "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027", + "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087", + "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786", + "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8", + "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09", + "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185", + "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574", + "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e", + "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519", + "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898", + "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269", + "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3", + "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f", + "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6", + "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8", + "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a", + "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73", + "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc", + "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714", + "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2", + "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc", + "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce", + "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d", + "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e", + "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6", + "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269", + "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96", + "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d", + "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a", + "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4", + "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77", + "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d", + "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0", + "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed", + "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068", + "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac", + "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25", + "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8", + "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab", + "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26", + "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2", + "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db", + "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f", + "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5", + "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99", + "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c", + "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d", + "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811", + "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa", + "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a", + "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03", + "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b", + "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04", + "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c", + "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001", + "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458", + "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389", + "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99", + "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985", + "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537", + "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238", + "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f", + "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d", + "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796", + "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a", + "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143", + "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8", + "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c", + "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5", + "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5", + "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711", + "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4", + "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6", + "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c", + "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7", + "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4", + "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b", + "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae", + "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12", + "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c", + "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae", + "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8", + "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887", + "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b", + "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4", + "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f", + "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5", + "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33", + "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519", + "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561" ], "markers": "python_full_version >= '3.7.0'", - "version": "==3.2.0" + "version": "==3.3.2" }, "click": { "hashes": [ - "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd", - "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5" + "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", + "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de" ], "markers": "python_version >= '3.7'", - "version": "==8.1.6" + "version": "==8.1.7" }, "click-didyoumean": { "hashes": [ @@ -392,46 +373,43 @@ "markers": "python_version >= '3.6'", "version": "==0.3.0" }, - "coloredlogs": { - "hashes": [ - "sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934", - "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==15.0.1" - }, "concurrent-log-handler": { "hashes": [ "sha256:00f5646c6e5f6fc63654536f3b44aaa2b9b74b23245e14f5258ed91ce39d12e2", "sha256:25c88399b23c1ed52549a836ca9666cfd61f2a6aae8bfc2a1a6427f989401d65" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==0.9.24" }, "cryptography": { "hashes": [ - "sha256:0a4e3406cfed6b1f6d6e87ed243363652b2586b2d917b0609ca4f97072994405", - "sha256:1e0af458515d5e4028aad75f3bb3fe7a31e46ad920648cd59b64d3da842e4356", - "sha256:2803f2f8b1e95f614419926c7e6f55d828afc614ca5ed61543877ae668cc3472", - "sha256:28d63d75bf7ae4045b10de5413fb1d6338616e79015999ad9cf6fc538f772d41", - "sha256:32057d3d0ab7d4453778367ca43e99ddb711770477c4f072a51b3ca69602780a", - "sha256:3a4805a4ca729d65570a1b7cac84eac1e431085d40387b7d3bbaa47e39890b88", - "sha256:63dac2d25c47f12a7b8aa60e528bfb3c51c5a6c5a9f7c86987909c6c79765554", - "sha256:650883cc064297ef3676b1db1b7b1df6081794c4ada96fa457253c4cc40f97db", - "sha256:6f2bbd72f717ce33100e6467572abaedc61f1acb87b8d546001328d7f466b778", - "sha256:7c872413353c70e0263a9368c4993710070e70ab3e5318d85510cc91cce77e7c", - "sha256:918cb89086c7d98b1b86b9fdb70c712e5a9325ba6f7d7cfb509e784e0cfc6917", - "sha256:9618a87212cb5200500e304e43691111570e1f10ec3f35569fdfcd17e28fd797", - "sha256:a805a7bce4a77d51696410005b3e85ae2839bad9aa38894afc0aa99d8e0c3160", - "sha256:cc3a621076d824d75ab1e1e530e66e7e8564e357dd723f2533225d40fe35c60c", - "sha256:cd033d74067d8928ef00a6b1327c8ea0452523967ca4463666eeba65ca350d4c", - "sha256:cf91e428c51ef692b82ce786583e214f58392399cf65c341bc7301d096fa3ba2", - "sha256:d36bbeb99704aabefdca5aee4eba04455d7a27ceabd16f3b3ba9bdcc31da86c4", - "sha256:d8aa3609d337ad85e4eb9bb0f8bcf6e4409bfb86e706efa9a027912169e89122", - "sha256:f5d7b79fa56bc29580faafc2ff736ce05ba31feaa9d4735048b0de7d9ceb2b94" + "sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960", + "sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a", + "sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc", + "sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a", + "sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf", + "sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1", + "sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39", + "sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406", + "sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a", + "sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a", + "sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c", + "sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be", + "sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15", + "sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2", + "sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d", + "sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157", + "sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003", + "sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248", + "sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a", + "sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec", + "sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309", + "sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7", + "sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d" ], - "index": "pypi", - "version": "==40.0.1" + "markers": "python_version >= '3.7'", + "version": "==41.0.7" }, "dateparser": { "hashes": [ @@ -439,8 +417,17 @@ "sha256:86b8b7517efcc558f085a142cdb7620f0921543fcabdb538c8a4c4001d8178e3" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.1.8" }, + "deprecated": { + "hashes": [ + "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c", + "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.2.14" + }, "deprecation": { "hashes": [ "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff", @@ -450,11 +437,21 @@ }, "django": { "hashes": [ - "sha256:26d0260c2fb8121009e62ffc548b2398dea2522b6454208a852fb0ef264c206c", - "sha256:56343019a9fd839e2e5bf203daf45f25af79d5bffa4c71d56eae4f4404d82ade" + "sha256:8e0f1c2c2786b5c0e39fe1afce24c926040fad47c8ea8ad30aaf1188df29fc41", + "sha256:e1d37c51ad26186de355cbcec16613ebdabfa9689bbade9c538835205a8abbe9" ], "index": "pypi", - "version": "==4.1.10" + "markers": "python_version >= '3.8'", + "version": "==4.2.7" + }, + "django-auditlog": { + "hashes": [ + "sha256:7bc2c87e4aff62dec9785d1b2359a2b27148f8c286f8a52b9114fc7876c5a9f7", + "sha256:b9d3acebb64f3f2785157efe3f2f802e0929aafc579d85bbfb9827db4adab532" + ], + "index": "pypi", + "markers": "python_version >= '3.7'", + "version": "==2.3.0" }, "django-celery-results": { "hashes": [ @@ -474,11 +471,12 @@ }, "django-cors-headers": { "hashes": [ - "sha256:9ada212b0e2efd4a5e339360ffc869cb21ac5605e810afe69f7308e577ea5bde", - "sha256:f9749c6410fe738278bc2b6ef17f05195bc7b251693c035752d8257026af024f" + "sha256:25aabc94d4837678c1edf442c7f68a5f5fd151f6767b0e0b01c61a2179d02711", + "sha256:bd36c7aea0d070e462f3383f0dc9ef717e5fdc2b10a99c98c285f16da84ffba2" ], "index": "pypi", - "version": "==4.2.0" + "markers": "python_version >= '3.8'", + "version": "==4.3.0" }, "django-extensions": { "hashes": [ @@ -486,15 +484,17 @@ "sha256:9600b7562f79a92cbf1fde6403c04fee314608fefbb595502e34383ae8203401" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==3.2.3" }, "django-filter": { "hashes": [ - "sha256:2fe15f78108475eda525692813205fa6f9e8c1caf1ae65daa5862d403c6dbf00", - "sha256:d12d8e0fc6d3eb26641e553e5d53b191eb8cec611427d4bdce0becb1f7c172b5" + "sha256:015fe155582e1805b40629344e4a6cf3cc40450827d294d040b4b8c1749a9fa6", + "sha256:65bc5d1d8f4fff3aaf74cb5da537b6620e9214fb4b3180f6c560776b1b6dccd0" ], "index": "pypi", - "version": "==23.2" + "markers": "python_version >= '3.7'", + "version": "==23.3" }, "django-guardian": { "hashes": [ @@ -502,14 +502,24 @@ "sha256:c58a68ae76922d33e6bdc0e69af1892097838de56e93e78a8361090bcd9f89a0" ], "index": "pypi", + "markers": "python_version >= '3.5'", "version": "==2.4.0" }, + "django-multiselectfield": { + "hashes": [ + "sha256:c270faa7f80588214c55f2d68cbddb2add525c2aa830c216b8a198de914eb470", + "sha256:d0a4c71568fb2332c71478ffac9f8708e01314a35cf923dfd7a191343452f9f9" + ], + "index": "pypi", + "version": "==0.1.12" + }, "djangorestframework": { "hashes": [ "sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8", "sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==3.14.0" }, "djangorestframework-guardian": { @@ -520,29 +530,48 @@ "index": "pypi", "version": "==0.3.0" }, + "drf-writable-nested": { + "hashes": [ + "sha256:154c0381e8a3a477e0fd539d5e1caf8ff4c1097a9c0c0fe741d4858b11b0455b" + ], + "index": "pypi", + "markers": "python_version >= '3.7'", + "version": "==0.7.0" + }, "exceptiongroup": { "hashes": [ - "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5", - "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f" + "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9", + "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3" ], "markers": "python_version < '3.11'", - "version": "==1.1.2" + "version": "==1.1.3" }, "filelock": { "hashes": [ - "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81", - "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec" + "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e", + "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c" ], "index": "pypi", - "version": "==3.12.2" + "markers": "python_version >= '3.8'", + "version": "==3.13.1" }, "flower": { "hashes": [ - "sha256:5657785d728a54914256c34fd0551fe2d7152aab08062ebc645bf86b97b8aec5", - "sha256:571f9ed1c57a622e862de35eceb8a4244f023fbcfb7175f53e45ebe679f46d90" + "sha256:5ab717b979530770c16afb48b50d2a98d23c3e9fe39851dcf6bc4d01845a02a0", + "sha256:9db2c621eeefbc844c8dd88be64aef61e84e2deb29b271e02ab2b5b9f01068e2" ], "index": "pypi", - "version": "==2.0.0" + "markers": "python_version >= '3.7'", + "version": "==2.0.1" + }, + "gotenberg-client": { + "hashes": [ + "sha256:4508ecb913ef2d553dd2ceb78e32cee001000ba08c910ba1f9ace38350d1589e", + "sha256:7a3f8a02caee768391373b3610c6ec25a853cccf391ed6b5d5a1292c3ed15e7e" + ], + "index": "pypi", + "markers": "python_version >= '3.8'", + "version": "==0.3.0" }, "gunicorn": { "hashes": [ @@ -550,6 +579,7 @@ "sha256:88ec8bff1d634f98e61b9f65bc4bf3cd918a90806c6f5c48bc5603849ec81033" ], "index": "pypi", + "markers": "python_version >= '3.5'", "version": "==21.2.0" }, "h11": { @@ -560,6 +590,13 @@ "markers": "python_version >= '3.7'", "version": "==0.14.0" }, + "h2": { + "hashes": [ + "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d", + "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb" + ], + "version": "==4.1.0" + }, "hiredis": { "hashes": [ "sha256:071c5814b850574036506a8118034f97c3cbf2fe9947ff45a27b07a48da56240", @@ -654,77 +691,89 @@ ], "version": "==2.2.3" }, + "hpack": { + "hashes": [ + "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c", + "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095" + ], + "markers": "python_full_version >= '3.6.1'", + "version": "==4.0.0" + }, "httpcore": { "hashes": [ - "sha256:a6f30213335e34c1ade7be6ec7c47f19f50c56db36abef1a9dfa3815b1cb3888", - "sha256:c2789b767ddddfa2a5782e3199b2b7f6894540b17b16ec26b2c4d8e103510b87" + "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7", + "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535" ], - "markers": "python_version >= '3.7'", - "version": "==0.17.3" + "markers": "python_version >= '3.8'", + "version": "==1.0.2" }, "httptools": { "hashes": [ - "sha256:03bfd2ae8a2d532952ac54445a2fb2504c804135ed28b53fefaf03d3a93eb1fd", - "sha256:0781fedc610293a2716bc7fa142d4c85e6776bc59d617a807ff91246a95dea35", - "sha256:0d0b0571806a5168013b8c3d180d9f9d6997365a4212cb18ea20df18b938aa0b", - "sha256:0fb4a608c631f7dcbdf986f40af7a030521a10ba6bc3d36b28c1dc9e9035a3c0", - "sha256:22c01fcd53648162730a71c42842f73b50f989daae36534c818b3f5050b54589", - "sha256:23b09537086a5a611fad5696fc8963d67c7e7f98cb329d38ee114d588b0b74cd", - "sha256:259920bbae18740a40236807915def554132ad70af5067e562f4660b62c59b90", - "sha256:26326e0a8fe56829f3af483200d914a7cd16d8d398d14e36888b56de30bec81a", - "sha256:274bf20eeb41b0956e34f6a81f84d26ed57c84dd9253f13dcb7174b27ccd8aaf", - "sha256:33eb1d4e609c835966e969a31b1dedf5ba16b38cab356c2ce4f3e33ffa94cad3", - "sha256:35a541579bed0270d1ac10245a3e71e5beeb1903b5fbbc8d8b4d4e728d48ff1d", - "sha256:38f3cafedd6aa20ae05f81f2e616ea6f92116c8a0f8dcb79dc798df3356836e2", - "sha256:3f96d2a351b5625a9fd9133c95744e8ca06f7a4f8f0b8231e4bbaae2c485046a", - "sha256:463c3bc5ef64b9cf091be9ac0e0556199503f6e80456b790a917774a616aff6e", - "sha256:47043a6e0ea753f006a9d0dd076a8f8c99bc0ecae86a0888448eb3076c43d717", - "sha256:4e748fc0d5c4a629988ef50ac1aef99dfb5e8996583a73a717fc2cac4ab89932", - "sha256:5dcc14c090ab57b35908d4a4585ec5c0715439df07be2913405991dbb37e049d", - "sha256:65d802e7b2538a9756df5acc062300c160907b02e15ed15ba035b02bce43e89c", - "sha256:6bdc6675ec6cb79d27e0575750ac6e2b47032742e24eed011b8db73f2da9ed40", - "sha256:6e22896b42b95b3237eccc42278cd72c0df6f23247d886b7ded3163452481e38", - "sha256:721e503245d591527cddd0f6fd771d156c509e831caa7a57929b55ac91ee2b51", - "sha256:72205730bf1be875003692ca54a4a7c35fac77b4746008966061d9d41a61b0f5", - "sha256:72ec7c70bd9f95ef1083d14a755f321d181f046ca685b6358676737a5fecd26a", - "sha256:73e9d66a5a28b2d5d9fbd9e197a31edd02be310186db423b28e6052472dc8201", - "sha256:818325afee467d483bfab1647a72054246d29f9053fd17cc4b86cda09cc60339", - "sha256:82c723ed5982f8ead00f8e7605c53e55ffe47c47465d878305ebe0082b6a1755", - "sha256:82f228b88b0e8c6099a9c4757ce9fdbb8b45548074f8d0b1f0fc071e35655d1c", - "sha256:93f89975465133619aea8b1952bc6fa0e6bad22a447c6d982fc338fbb4c89649", - "sha256:9fc6e409ad38cbd68b177cd5158fc4042c796b82ca88d99ec78f07bed6c6b796", - "sha256:b0a816bb425c116a160fbc6f34cece097fd22ece15059d68932af686520966bd", - "sha256:b703d15dbe082cc23266bf5d9448e764c7cb3fcfe7cb358d79d3fd8248673ef9", - "sha256:cf8169e839a0d740f3d3c9c4fa630ac1a5aaf81641a34575ca6773ed7ce041a1", - "sha256:dea66d94e5a3f68c5e9d86e0894653b87d952e624845e0b0e3ad1c733c6cc75d", - "sha256:e41ccac9e77cd045f3e4ee0fc62cbf3d54d7d4b375431eb855561f26ee7a9ec4", - "sha256:f959e4770b3fc8ee4dbc3578fd910fab9003e093f20ac8c621452c4d62e517cb" + "sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563", + "sha256:0ac5a0ae3d9f4fe004318d64b8a854edd85ab76cffbf7ef5e32920faef62f142", + "sha256:0cf2372e98406efb42e93bfe10f2948e467edfd792b015f1b4ecd897903d3e8d", + "sha256:1ed99a373e327f0107cb513b61820102ee4f3675656a37a50083eda05dc9541b", + "sha256:3c3b214ce057c54675b00108ac42bacf2ab8f85c58e3f324a4e963bbc46424f4", + "sha256:3e802e0b2378ade99cd666b5bffb8b2a7cc8f3d28988685dc300469ea8dd86cb", + "sha256:3f30d3ce413088a98b9db71c60a6ada2001a08945cb42dd65a9a9fe228627658", + "sha256:405784577ba6540fa7d6ff49e37daf104e04f4b4ff2d1ac0469eaa6a20fde084", + "sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2", + "sha256:4bd3e488b447046e386a30f07af05f9b38d3d368d1f7b4d8f7e10af85393db97", + "sha256:4f0f8271c0a4db459f9dc807acd0eadd4839934a4b9b892f6f160e94da309837", + "sha256:5cceac09f164bcba55c0500a18fe3c47df29b62353198e4f37bbcc5d591172c3", + "sha256:639dc4f381a870c9ec860ce5c45921db50205a37cc3334e756269736ff0aac58", + "sha256:678fcbae74477a17d103b7cae78b74800d795d702083867ce160fc202104d0da", + "sha256:6a4f5ccead6d18ec072ac0b84420e95d27c1cdf5c9f1bc8fbd8daf86bd94f43d", + "sha256:6f58e335a1402fb5a650e271e8c2d03cfa7cea46ae124649346d17bd30d59c90", + "sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0", + "sha256:7a7ea483c1a4485c71cb5f38be9db078f8b0e8b4c4dc0210f531cdd2ddac1ef1", + "sha256:7d9ceb2c957320def533671fc9c715a80c47025139c8d1f3797477decbc6edd2", + "sha256:7ebaec1bf683e4bf5e9fbb49b8cc36da482033596a415b3e4ebab5a4c0d7ec5e", + "sha256:85ed077c995e942b6f1b07583e4eb0a8d324d418954fc6af913d36db7c05a5a0", + "sha256:8ae5b97f690badd2ca27cbf668494ee1b6d34cf1c464271ef7bfa9ca6b83ffaf", + "sha256:8b0bb634338334385351a1600a73e558ce619af390c2b38386206ac6a27fecfc", + "sha256:8e216a038d2d52ea13fdd9b9c9c7459fb80d78302b257828285eca1c773b99b3", + "sha256:93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503", + "sha256:95658c342529bba4e1d3d2b1a874db16c7cca435e8827422154c9da76ac4e13a", + "sha256:95fb92dd3649f9cb139e9c56604cc2d7c7bf0fc2e7c8d7fbd58f96e35eddd2a3", + "sha256:97662ce7fb196c785344d00d638fc9ad69e18ee4bfb4000b35a52efe5adcc949", + "sha256:9bb68d3a085c2174c2477eb3ffe84ae9fb4fde8792edb7bcd09a1d8467e30a84", + "sha256:b512aa728bc02354e5ac086ce76c3ce635b62f5fbc32ab7082b5e582d27867bb", + "sha256:c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a", + "sha256:d2f6c3c4cb1948d912538217838f6e9960bc4a521d7f9b323b3da579cd14532f", + "sha256:dcbab042cc3ef272adc11220517278519adf8f53fd3056d0e68f0a6f891ba94e", + "sha256:e0b281cf5a125c35f7f6722b65d8542d2e57331be573e9e88bc8b0115c4a7a81", + "sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185", + "sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3" ], - "version": "==0.6.0" + "version": "==0.6.1" }, "httpx": { - "hashes": [ - "sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd", - "sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd" + "extras": [ + "http2" ], - "markers": "python_version >= '3.7'", - "version": "==0.24.1" - }, - "humanfriendly": { "hashes": [ - "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477", - "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc" + "sha256:fec7d6cc5c27c578a391f7e87b9aa7d3d8fbcd034f6399f9f79b45bcc12a866a", + "sha256:ffd96d5cf901e63863d9f1b4b6807861dbea4d301613415d9e6e57ead15fc5d0" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==10.0" + "markers": "python_version >= '3.9'", + "version": "==0.25.1" }, "humanize": { "hashes": [ - "sha256:7ca0e43e870981fa684acb5b062deb307218193bca1a01f2b2676479df849b3a", - "sha256:df7c429c2d27372b249d3f26eb53b07b166b661326e0325793e0a988082e3889" + "sha256:8bc9e2bb9315e61ec06bf690151ae35aeb65651ab091266941edf97c90836404", + "sha256:9783373bf1eec713a770ecaa7c2d7a7902c98398009dfa3d8a2df91eec9311e8" ], "markers": "python_version >= '3.8'", - "version": "==4.7.0" + "version": "==4.8.0" + }, + "hyperframe": { + "hashes": [ + "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15", + "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914" + ], + "markers": "python_full_version >= '3.6.1'", + "version": "==6.0.1" }, "idna": { "hashes": [ @@ -736,25 +785,17 @@ }, "imap-tools": { "hashes": [ - "sha256:2ec8a206eb67dad9809f6ba5a400870ae298c5584560173e87c3915b48f075e1", - "sha256:53703e9b6d5afce4cb6747b1939b42928ede86fd0d1d760f640ac78e900ad56c" + "sha256:b6c2b94b9d168e1a52c419a2c10367d746694ca61b68fdb0c3ff211046a0760d", + "sha256:f42dfb1a7db666ef5df4c815e5b6e6571707b188f67c0a411fc5c9a9b4f1b85f" ], "index": "pypi", - "version": "==1.1.0" + "version": "==1.5.0" }, "img2pdf": { "hashes": [ - "sha256:8ec898a9646523fd3862b154f3f47cd52609c24cc3e2dc1fb5f0168f0cbe793c" + "sha256:73847e47242f4b5bd113c70049e03e03212936c2727cd2a8bf564229a67d0b95" ], - "version": "==0.4.4" - }, - "importlib-resources": { - "hashes": [ - "sha256:4cf94875a8368bd89531a756df9a9ebe1f150e0f885030b461237bc7f2d905f2", - "sha256:d952faee11004c045f785bb5636e8f885bed30dc3c940d5d42798a2a4541c185" - ], - "markers": "python_version < '3.9'", - "version": "==6.0.0" + "version": "==0.5.1" }, "inotify-simple": { "hashes": [ @@ -769,23 +810,24 @@ "sha256:a2c450b317693e4538416f90eb1d7858506dafe6b8b885037bd2dd9ae2dafa1e" ], "index": "pypi", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.3.5" }, "joblib": { "hashes": [ - "sha256:1f937906df65329ba98013dc9692fe22a4c5e4a648112de500508b18a21b41e3", - "sha256:89cf0529520e01b3de7ac7b74a8102c90d16d54c64b5dd98cafcd14307fdf915" + "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1", + "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9" ], "markers": "python_version >= '3.7'", - "version": "==1.3.1" + "version": "==1.3.2" }, "kombu": { "hashes": [ - "sha256:48ee589e8833126fd01ceaa08f8a2041334e9f5894e5763c8486a550454551e9", - "sha256:fbd7572d92c0bf71c112a6b45163153dea5a7b6a701ec16b568c27d0fd2370f2" + "sha256:0bb2e278644d11dea6272c17974a3dbb9688a949f3bb60aeb5b791329c44fadc", + "sha256:63bb093fc9bb80cfb3a0972336a5cec1fa7ac5f9ef7e8237c6bf8dda9469313e" ], "markers": "python_version >= '3.8'", - "version": "==5.3.1" + "version": "==5.3.4" }, "langdetect": { "hashes": [ @@ -893,73 +935,83 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==4.9.3" }, + "markdown-it-py": { + "hashes": [ + "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", + "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb" + ], + "markers": "python_version >= '3.8'", + "version": "==3.0.0" + }, + "mdurl": { + "hashes": [ + "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", + "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba" + ], + "markers": "python_version >= '3.7'", + "version": "==0.1.2" + }, "msgpack": { "hashes": [ - "sha256:06f5174b5f8ed0ed919da0e62cbd4ffde676a374aba4020034da05fab67b9164", - "sha256:0c05a4a96585525916b109bb85f8cb6511db1c6f5b9d9cbcbc940dc6b4be944b", - "sha256:137850656634abddfb88236008339fdaba3178f4751b28f270d2ebe77a563b6c", - "sha256:17358523b85973e5f242ad74aa4712b7ee560715562554aa2134d96e7aa4cbbf", - "sha256:18334484eafc2b1aa47a6d42427da7fa8f2ab3d60b674120bce7a895a0a85bdd", - "sha256:1835c84d65f46900920b3708f5ba829fb19b1096c1800ad60bae8418652a951d", - "sha256:1967f6129fc50a43bfe0951c35acbb729be89a55d849fab7686004da85103f1c", - "sha256:1ab2f3331cb1b54165976a9d976cb251a83183631c88076613c6c780f0d6e45a", - "sha256:1c0f7c47f0087ffda62961d425e4407961a7ffd2aa004c81b9c07d9269512f6e", - "sha256:20a97bf595a232c3ee6d57ddaadd5453d174a52594bf9c21d10407e2a2d9b3bd", - "sha256:20c784e66b613c7f16f632e7b5e8a1651aa5702463d61394671ba07b2fc9e025", - "sha256:266fa4202c0eb94d26822d9bfd7af25d1e2c088927fe8de9033d929dd5ba24c5", - "sha256:28592e20bbb1620848256ebc105fc420436af59515793ed27d5c77a217477705", - "sha256:288e32b47e67f7b171f86b030e527e302c91bd3f40fd9033483f2cacc37f327a", - "sha256:3055b0455e45810820db1f29d900bf39466df96ddca11dfa6d074fa47054376d", - "sha256:332360ff25469c346a1c5e47cbe2a725517919892eda5cfaffe6046656f0b7bb", - "sha256:362d9655cd369b08fda06b6657a303eb7172d5279997abe094512e919cf74b11", - "sha256:366c9a7b9057e1547f4ad51d8facad8b406bab69c7d72c0eb6f529cf76d4b85f", - "sha256:36961b0568c36027c76e2ae3ca1132e35123dcec0706c4b7992683cc26c1320c", - "sha256:379026812e49258016dd84ad79ac8446922234d498058ae1d415f04b522d5b2d", - "sha256:382b2c77589331f2cb80b67cc058c00f225e19827dbc818d700f61513ab47bea", - "sha256:476a8fe8fae289fdf273d6d2a6cb6e35b5a58541693e8f9f019bfe990a51e4ba", - "sha256:48296af57cdb1d885843afd73c4656be5c76c0c6328db3440c9601a98f303d87", - "sha256:4867aa2df9e2a5fa5f76d7d5565d25ec76e84c106b55509e78c1ede0f152659a", - "sha256:4c075728a1095efd0634a7dccb06204919a2f67d1893b6aa8e00497258bf926c", - "sha256:4f837b93669ce4336e24d08286c38761132bc7ab29782727f8557e1eb21b2080", - "sha256:4f8d8b3bf1ff2672567d6b5c725a1b347fe838b912772aa8ae2bf70338d5a198", - "sha256:525228efd79bb831cf6830a732e2e80bc1b05436b086d4264814b4b2955b2fa9", - "sha256:5494ea30d517a3576749cad32fa27f7585c65f5f38309c88c6d137877fa28a5a", - "sha256:55b56a24893105dc52c1253649b60f475f36b3aa0fc66115bffafb624d7cb30b", - "sha256:56a62ec00b636583e5cb6ad313bbed36bb7ead5fa3a3e38938503142c72cba4f", - "sha256:57e1f3528bd95cc44684beda696f74d3aaa8a5e58c816214b9046512240ef437", - "sha256:586d0d636f9a628ddc6a17bfd45aa5b5efaf1606d2b60fa5d87b8986326e933f", - "sha256:5cb47c21a8a65b165ce29f2bec852790cbc04936f502966768e4aae9fa763cb7", - "sha256:6c4c68d87497f66f96d50142a2b73b97972130d93677ce930718f68828b382e2", - "sha256:821c7e677cc6acf0fd3f7ac664c98803827ae6de594a9f99563e48c5a2f27eb0", - "sha256:916723458c25dfb77ff07f4c66aed34e47503b2eb3188b3adbec8d8aa6e00f48", - "sha256:9e6ca5d5699bcd89ae605c150aee83b5321f2115695e741b99618f4856c50898", - "sha256:9f5ae84c5c8a857ec44dc180a8b0cc08238e021f57abdf51a8182e915e6299f0", - "sha256:a2b031c2e9b9af485d5e3c4520f4220d74f4d222a5b8dc8c1a3ab9448ca79c57", - "sha256:a61215eac016f391129a013c9e46f3ab308db5f5ec9f25811e811f96962599a8", - "sha256:a740fa0e4087a734455f0fc3abf5e746004c9da72fbd541e9b113013c8dc3282", - "sha256:a9985b214f33311df47e274eb788a5893a761d025e2b92c723ba4c63936b69b1", - "sha256:ab31e908d8424d55601ad7075e471b7d0140d4d3dd3272daf39c5c19d936bd82", - "sha256:ac9dd47af78cae935901a9a500104e2dea2e253207c924cc95de149606dc43cc", - "sha256:addab7e2e1fcc04bd08e4eb631c2a90960c340e40dfc4a5e24d2ff0d5a3b3edb", - "sha256:b1d46dfe3832660f53b13b925d4e0fa1432b00f5f7210eb3ad3bb9a13c6204a6", - "sha256:b2de4c1c0538dcb7010902a2b97f4e00fc4ddf2c8cda9749af0e594d3b7fa3d7", - "sha256:b5ef2f015b95f912c2fcab19c36814963b5463f1fb9049846994b007962743e9", - "sha256:b72d0698f86e8d9ddf9442bdedec15b71df3598199ba33322d9711a19f08145c", - "sha256:bae7de2026cbfe3782c8b78b0db9cbfc5455e079f1937cb0ab8d133496ac55e1", - "sha256:bf22a83f973b50f9d38e55c6aade04c41ddda19b00c4ebc558930d78eecc64ed", - "sha256:c075544284eadc5cddc70f4757331d99dcbc16b2bbd4849d15f8aae4cf36d31c", - "sha256:c396e2cc213d12ce017b686e0f53497f94f8ba2b24799c25d913d46c08ec422c", - "sha256:cb5aaa8c17760909ec6cb15e744c3ebc2ca8918e727216e79607b7bbce9c8f77", - "sha256:cdc793c50be3f01106245a61b739328f7dccc2c648b501e237f0699fe1395b81", - "sha256:d25dd59bbbbb996eacf7be6b4ad082ed7eacc4e8f3d2df1ba43822da9bfa122a", - "sha256:e42b9594cc3bf4d838d67d6ed62b9e59e201862a25e9a157019e171fbe672dd3", - "sha256:e57916ef1bd0fee4f21c4600e9d1da352d8816b52a599c46460e93a6e9f17086", - "sha256:ed40e926fa2f297e8a653c954b732f125ef97bdd4c889f243182299de27e2aa9", - "sha256:ef8108f8dedf204bb7b42994abf93882da1159728a2d4c5e82012edd92c9da9f", - "sha256:f933bbda5a3ee63b8834179096923b094b76f0c7a73c1cfe8f07ad608c58844b", - "sha256:fe5c63197c55bce6385d9aee16c4d0641684628f63ace85f73571e65ad1c1e8d" + "sha256:04ad6069c86e531682f9e1e71b71c1c3937d6014a7c3e9edd2aa81ad58842862", + "sha256:0bfdd914e55e0d2c9e1526de210f6fe8ffe9705f2b1dfcc4aecc92a4cb4b533d", + "sha256:1dc93e8e4653bdb5910aed79f11e165c85732067614f180f70534f056da97db3", + "sha256:1e2d69948e4132813b8d1131f29f9101bc2c915f26089a6d632001a5c1349672", + "sha256:235a31ec7db685f5c82233bddf9858748b89b8119bf4538d514536c485c15fe0", + "sha256:27dcd6f46a21c18fa5e5deed92a43d4554e3df8d8ca5a47bf0615d6a5f39dbc9", + "sha256:28efb066cde83c479dfe5a48141a53bc7e5f13f785b92ddde336c716663039ee", + "sha256:3476fae43db72bd11f29a5147ae2f3cb22e2f1a91d575ef130d2bf49afd21c46", + "sha256:36e17c4592231a7dbd2ed09027823ab295d2791b3b1efb2aee874b10548b7524", + "sha256:384d779f0d6f1b110eae74cb0659d9aa6ff35aaf547b3955abf2ab4c901c4819", + "sha256:38949d30b11ae5f95c3c91917ee7a6b239f5ec276f271f28638dec9156f82cfc", + "sha256:3967e4ad1aa9da62fd53e346ed17d7b2e922cba5ab93bdd46febcac39be636fc", + "sha256:3e7bf4442b310ff154b7bb9d81eb2c016b7d597e364f97d72b1acc3817a0fdc1", + "sha256:3f0c8c6dfa6605ab8ff0611995ee30d4f9fcff89966cf562733b4008a3d60d82", + "sha256:484ae3240666ad34cfa31eea7b8c6cd2f1fdaae21d73ce2974211df099a95d81", + "sha256:4a7b4f35de6a304b5533c238bee86b670b75b03d31b7797929caa7a624b5dda6", + "sha256:4cb14ce54d9b857be9591ac364cb08dc2d6a5c4318c1182cb1d02274029d590d", + "sha256:4e71bc4416de195d6e9b4ee93ad3f2f6b2ce11d042b4d7a7ee00bbe0358bd0c2", + "sha256:52700dc63a4676669b341ba33520f4d6e43d3ca58d422e22ba66d1736b0a6e4c", + "sha256:572efc93db7a4d27e404501975ca6d2d9775705c2d922390d878fcf768d92c87", + "sha256:576eb384292b139821c41995523654ad82d1916da6a60cff129c715a6223ea84", + "sha256:5b0bf0effb196ed76b7ad883848143427a73c355ae8e569fa538365064188b8e", + "sha256:5b6ccc0c85916998d788b295765ea0e9cb9aac7e4a8ed71d12e7d8ac31c23c95", + "sha256:5ed82f5a7af3697b1c4786053736f24a0efd0a1b8a130d4c7bfee4b9ded0f08f", + "sha256:6d4c80667de2e36970ebf74f42d1088cc9ee7ef5f4e8c35eee1b40eafd33ca5b", + "sha256:730076207cb816138cf1af7f7237b208340a2c5e749707457d70705715c93b93", + "sha256:7687e22a31e976a0e7fc99c2f4d11ca45eff652a81eb8c8085e9609298916dcf", + "sha256:822ea70dc4018c7e6223f13affd1c5c30c0f5c12ac1f96cd8e9949acddb48a61", + "sha256:84b0daf226913133f899ea9b30618722d45feffa67e4fe867b0b5ae83a34060c", + "sha256:85765fdf4b27eb5086f05ac0491090fc76f4f2b28e09d9350c31aac25a5aaff8", + "sha256:8dd178c4c80706546702c59529ffc005681bd6dc2ea234c450661b205445a34d", + "sha256:8f5b234f567cf76ee489502ceb7165c2a5cecec081db2b37e35332b537f8157c", + "sha256:98bbd754a422a0b123c66a4c341de0474cad4a5c10c164ceed6ea090f3563db4", + "sha256:993584fc821c58d5993521bfdcd31a4adf025c7d745bbd4d12ccfecf695af5ba", + "sha256:a40821a89dc373d6427e2b44b572efc36a2778d3f543299e2f24eb1a5de65415", + "sha256:b291f0ee7961a597cbbcc77709374087fa2a9afe7bdb6a40dbbd9b127e79afee", + "sha256:b573a43ef7c368ba4ea06050a957c2a7550f729c31f11dd616d2ac4aba99888d", + "sha256:b610ff0f24e9f11c9ae653c67ff8cc03c075131401b3e5ef4b82570d1728f8a9", + "sha256:bdf38ba2d393c7911ae989c3bbba510ebbcdf4ecbdbfec36272abe350c454075", + "sha256:bfef2bb6ef068827bbd021017a107194956918ab43ce4d6dc945ffa13efbc25f", + "sha256:cab3db8bab4b7e635c1c97270d7a4b2a90c070b33cbc00c99ef3f9be03d3e1f7", + "sha256:cb70766519500281815dfd7a87d3a178acf7ce95390544b8c90587d76b227681", + "sha256:cca1b62fe70d761a282496b96a5e51c44c213e410a964bdffe0928e611368329", + "sha256:ccf9a39706b604d884d2cb1e27fe973bc55f2890c52f38df742bc1d79ab9f5e1", + "sha256:dc43f1ec66eb8440567186ae2f8c447d91e0372d793dfe8c222aec857b81a8cf", + "sha256:dd632777ff3beaaf629f1ab4396caf7ba0bdd075d948a69460d13d44357aca4c", + "sha256:e45ae4927759289c30ccba8d9fdce62bb414977ba158286b5ddaf8df2cddb5c5", + "sha256:e50ebce52f41370707f1e21a59514e3375e3edd6e1832f5e5235237db933c98b", + "sha256:ebbbba226f0a108a7366bf4b59bf0f30a12fd5e75100c630267d94d7f0ad20e5", + "sha256:ec79ff6159dffcc30853b2ad612ed572af86c92b5168aa3fc01a67b0fa40665e", + "sha256:f0936e08e0003f66bfd97e74ee530427707297b0d0361247e9b4f59ab78ddc8b", + "sha256:f26a07a6e877c76a88e3cecac8531908d980d3d5067ff69213653649ec0f60ad", + "sha256:f64e376cd20d3f030190e8c32e1c64582eba56ac6dc7d5b0b49a9d44021b52fd", + "sha256:f6ffbc252eb0d229aeb2f9ad051200668fc3a9aaa8994e49f0cb2ffe2b7867e7", + "sha256:f9a7c509542db4eceed3dcf21ee5267ab565a83555c9b88a8109dcecc4709002", + "sha256:ff1d0899f104f3921d94579a5638847f783c9b04f2d5f229392ca77fba5b82fc" ], - "version": "==1.0.5" + "markers": "python_version >= '3.8'", + "version": "==1.0.7" }, "mysqlclient": { "hashes": [ @@ -972,6 +1024,7 @@ "sha256:9c6b142836c7dba4f723bf9c93cc46b6e5081d65b2af807f400dda9eb85a16d0" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==2.2.0" }, "nltk": { @@ -980,65 +1033,76 @@ "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==3.8.1" }, "numpy": { "hashes": [ - "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f", - "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61", - "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7", - "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400", - "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef", - "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2", - "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d", - "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc", - "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835", - "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706", - "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5", - "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4", - "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6", - "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463", - "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a", - "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f", - "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e", - "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e", - "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694", - "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8", - "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64", - "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d", - "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc", - "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254", - "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2", - "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1", - "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810", - "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9" + "sha256:06fa1ed84aa60ea6ef9f91ba57b5ed963c3729534e6e54055fc151fad0423f0a", + "sha256:174a8880739c16c925799c018f3f55b8130c1f7c8e75ab0a6fa9d41cab092fd6", + "sha256:1a13860fdcd95de7cf58bd6f8bc5a5ef81c0b0625eb2c9a783948847abbef2c2", + "sha256:1cc3d5029a30fb5f06704ad6b23b35e11309491c999838c31f124fee32107c79", + "sha256:22f8fc02fdbc829e7a8c578dd8d2e15a9074b630d4da29cda483337e300e3ee9", + "sha256:26c9d33f8e8b846d5a65dd068c14e04018d05533b348d9eaeef6c1bd787f9919", + "sha256:2b3fca8a5b00184828d12b073af4d0fc5fdd94b1632c2477526f6bd7842d700d", + "sha256:2beef57fb031dcc0dc8fa4fe297a742027b954949cabb52a2a376c144e5e6060", + "sha256:36340109af8da8805d8851ef1d74761b3b88e81a9bd80b290bbfed61bd2b4f75", + "sha256:3703fc9258a4a122d17043e57b35e5ef1c5a5837c3db8be396c82e04c1cf9b0f", + "sha256:3ced40d4e9e18242f70dd02d739e44698df3dcb010d31f495ff00a31ef6014fe", + "sha256:4a06263321dfd3598cacb252f51e521a8cb4b6df471bb12a7ee5cbab20ea9167", + "sha256:4eb8df4bf8d3d90d091e0146f6c28492b0be84da3e409ebef54349f71ed271ef", + "sha256:5d5244aabd6ed7f312268b9247be47343a654ebea52a60f002dc70c769048e75", + "sha256:64308ebc366a8ed63fd0bf426b6a9468060962f1a4339ab1074c228fa6ade8e3", + "sha256:6a3cdb4d9c70e6b8c0814239ead47da00934666f668426fc6e94cce869e13fd7", + "sha256:854ab91a2906ef29dc3925a064fcd365c7b4da743f84b123002f6139bcb3f8a7", + "sha256:94cc3c222bb9fb5a12e334d0479b97bb2df446fbe622b470928f5284ffca3f8d", + "sha256:96ca5482c3dbdd051bcd1fce8034603d6ebfc125a7bd59f55b40d8f5d246832b", + "sha256:a2bbc29fcb1771cd7b7425f98b05307776a6baf43035d3b80c4b0f29e9545186", + "sha256:a4cd6ed4a339c21f1d1b0fdf13426cb3b284555c27ac2f156dfdaaa7e16bfab0", + "sha256:aa18428111fb9a591d7a9cc1b48150097ba6a7e8299fb56bdf574df650e7d1f1", + "sha256:aa317b2325f7aa0a9471663e6093c210cb2ae9c0ad824732b307d2c51983d5b6", + "sha256:b04f5dc6b3efdaab541f7857351aac359e6ae3c126e2edb376929bd3b7f92d7e", + "sha256:b272d4cecc32c9e19911891446b72e986157e6a1809b7b56518b4f3755267523", + "sha256:b361d369fc7e5e1714cf827b731ca32bff8d411212fccd29ad98ad622449cc36", + "sha256:b96e7b9c624ef3ae2ae0e04fa9b460f6b9f17ad8b4bec6d7756510f1f6c0c841", + "sha256:baf8aab04a2c0e859da118f0b38617e5ee65d75b83795055fb66c0d5e9e9b818", + "sha256:bcc008217145b3d77abd3e4d5ef586e3bdfba8fe17940769f8aa09b99e856c00", + "sha256:bd3f0091e845164a20bd5a326860c840fe2af79fa12e0469a12768a3ec578d80", + "sha256:cc392fdcbd21d4be6ae1bb4475a03ce3b025cd49a9be5345d76d7585aea69440", + "sha256:d73a3abcac238250091b11caef9ad12413dab01669511779bc9b29261dd50210", + "sha256:f43740ab089277d403aa07567be138fc2a89d4d9892d113b76153e0e412409f8", + "sha256:f65738447676ab5777f11e6bbbdb8ce11b785e105f690bc45966574816b6d3ea", + "sha256:f79b231bf5c16b1f39c7f4875e1ded36abee1591e98742b05d8a0fb55d8a3eec", + "sha256:fe6b44fb8fcdf7eda4ef4461b97b3f63c466b27ab151bec2366db8b197387841" ], - "markers": "python_version >= '3.8'", - "version": "==1.24.4" + "markers": "python_version >= '3.9'", + "version": "==1.26.2" }, "ocrmypdf": { "hashes": [ - "sha256:4e4e6b5d95b8f43436fa177fff093fa1fc1bb1d49bad2945bc1a47c9e08935b7", - "sha256:faa221f53771a6679ad541307a0e66e11d298a33a2840cf1908a6a46f8315ede" + "sha256:63803b21f80925170cc96dec11833a6cb740be377e50adfaa210b2c26e64b67a", + "sha256:9385f582fa8b9eb4d89a27dfd80a29cffdf53694c570f9f0e87db4af8cfe3b15" ], "index": "pypi", - "version": "==14.3.0" + "markers": "python_version >= '3.9'", + "version": "==15.4.3" }, "packaging": { "hashes": [ - "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61", - "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" + "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", + "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" ], "markers": "python_version >= '3.7'", - "version": "==23.1" + "version": "==23.2" }, "pathvalidate": { "hashes": [ - "sha256:426970226e24199fd90d93995d223c1e28bda967cdf4370755a14cdf72a2a8ee", - "sha256:912fd1d2e1a2a6a6f98da36a91f21ed86746473810ff625b9c34f3d06c0caa1d" + "sha256:5e8378cf6712bff67fbe7a8307d99fa8c1a0cb28aa477056f8fc374f0dff24ad", + "sha256:cc593caa6299b22b37f228148257997e2fa850eea2daf7e4cc9205cef6908dee" ], "index": "pypi", - "version": "==3.1.0" + "markers": "python_version >= '3.7'", + "version": "==3.2.0" }, "pdf2image": { "hashes": [ @@ -1058,165 +1122,153 @@ }, "pikepdf": { "hashes": [ - "sha256:0e1607fda03a53a29a4a8e3fbacbde788804c78167ff251e1c1006f89539f306", - "sha256:1cc8d0be5a62ed9011bb519abc34907b5965b392995043719effc4b6a00e2052", - "sha256:26b9bfb99265dfb6deb72574f8cd30e7ffbc2f53237988bb4e167e18d813f510", - "sha256:371eb23ac14e6c9947e59e5cea15ea93e61a5714c6b1f99fba948927809605ea", - "sha256:3c30776791fad8d57a43c392d8e190afded857c61e49dac471ab74e9e716c441", - "sha256:3efe4dd2cb417f42865b11e6fc9adb1b6252241bd7a8d891afcaeb2191c285c2", - "sha256:5155e1127dfe3aacf77a33552f128e9c04e8b61bf585ab2b155d062a524bfd06", - "sha256:6670efe5b9c1548d60348cdd5ce84ca363a3cde22e9cf695f1ce3b3f818e498d", - "sha256:677f04f02535ac398806970544c43c1e2b120d82b027437c467923a16c81d528", - "sha256:6790cf10da642d72703cbe887afb923daa2e0f7cb9467a79fe449dbe228f8942", - "sha256:6a150160f7ed97769f3c0e60de5cb031bce04e1f6708916ac1c936774a65cc0c", - "sha256:6dbe2b62e12ff2b47d4e56ebbe16697d0e25bc2c608f4ee5230cf179ebd2a8ab", - "sha256:70f1161dd22ccfcbfd1c460873c95b68b79cf234f0a4e9f37cb565bf436fd85e", - "sha256:7246789dd9071ebcf8c90baebe1eee34ac627e2ea22bf241eff31d32f5ca5df9", - "sha256:7a07f73f2aac48af46a546e285360d6e595b499075ab78c3b8ca9f5f13d9e876", - "sha256:99e483e037f6991be3c4c655454d57324c10ccf41960acd1edd899ebe9a314dd", - "sha256:9db8270c940f94d0049420f1a6c05b1f7d326d2abb20493c83f64fde3949404e", - "sha256:9fadd1a99754dcd925e37721485d4d1259c7ad3c9073c6b3b0ed12c6e2d2234c", - "sha256:ad82b836faed0376c725e19d0f8a7c7bef389e8c46683c11bbfc70410bc2e3ee", - "sha256:b148959f1ad51d236cf6bbc5343beef72c4c60569151221ec06b1d787909222e", - "sha256:b24b7520c7f40bba4f437ba5111dca99dbd0cca9d3cab0f0a33afa6150091ee3", - "sha256:c99838e86c0fc5a215a0588011344477e8f6ec2c5faf48ee3a9da1ba2c2cac5b", - "sha256:d0698a429948e613f810b487318ce88112bc71a67fd76645be140532130e6c86", - "sha256:d410028ef3435a459e55de520d29010ee91e4a40872d9eb2dab86e6730a24e9d", - "sha256:dc6a653f0f98076a1e86e4fe58fe36dcf403963ae55c65bfcd28aa1d2d9b1b18", - "sha256:e21bce4760c6e64c90b17601a8ce000219677adb264a3c038d2522de032169ca", - "sha256:e4559941b359beb0e90b7d0b8016397ab4700f075f7aa11f2561958a7ce0f8ea", - "sha256:ebc1b30d646ded58721a5594a5ca457e098fedfd9bcab28de79ad79a119e3537", - "sha256:f27a1aea4cae5484cffe4fc5fa761af11f384ca0fd4b2f9114f9ba9717fe4746", - "sha256:f325af78bfb63e305be7f31a3afea47fd33ba035ccb08e89d608d2e88b367349", - "sha256:f3c97acce9b66a41b2759dc30ef57de8f38c7239c9b0e7a5febc196b764a2567", - "sha256:f458c4161e76a882a15ade4125a2f92faa7e5ce120d2e6530dd995aa3308971c", - "sha256:f7451f176eb9828d8dd7cb3d4e00d4e0aa7f7d7d00331fe640bc20cf3328deb5" + "sha256:08070185661db9dfbaec014094fec9e323d8ab882dc458a07383f55e08bfdd22", + "sha256:0f118446960213c78b21fe106890028dcaff739369bceda9008719b43670e290", + "sha256:1e982dbf2d25df72975e2d336ca6a5a8565add156bfdba328beb67b324a1689e", + "sha256:2771cba79c62b3f9d93cffa684a92d60e6050f727d4f52220d8180eaf967c4bf", + "sha256:2a320bfa4caa73d00d90b04433305b3ff7a6c63bdf36f55af16725066fe46b49", + "sha256:3748c4d67b40c26fa777d1f3eefcab4bcca101395ad54502020653024d23c37d", + "sha256:3956b2abda0ef86b37b5d49066c3adfd29d056ed96b1ef93bacbd269c78c5e13", + "sha256:3b719a40f1b08da1ff6fd87b3847d4ce033f8ffd81a13dca8c3c947a080c071d", + "sha256:3ff178684ed43de28ca3e7dcf9da5082ebf49bcd042e9308ffaa0162275da1a4", + "sha256:42360df95f08164162af465c493d1e612d3c0ff6d23dc17be073380b05db715c", + "sha256:5075a2a741ba23212e963d9ea3fc7a4f9394535fab11fdc7ea4641d61cab0287", + "sha256:67276e1731dc8b2f58663ff62b4728f9e0046c8217768fe0649428315cfe8253", + "sha256:69d69a93d07027e351996ef8232f26bba762d415206414e0ae3814be0aee0f7a", + "sha256:7075c79fa5d85b0acf1536a1849bcbb4e661b33f476c7c6d81255df247b2ae1f", + "sha256:7bd88db0b68da1d04dd5a1ed0897e37ef1968317a887781b1e26c1649bbd11e3", + "sha256:80275466282495c672264801b50c7188f86590779f3ada8148336e3e84fd06c0", + "sha256:897cac14f9e3db97d4effea50190e6c59e87d4147da98ff6108d254dcc1949d9", + "sha256:8a1ac9e17d890b39f717b040eaebc79325ff23278756805220138f054599f9f0", + "sha256:8e687681f26533fee69904403fdf4fc2a1f0e47480b5bfbba64139c07d72c9d2", + "sha256:9430eb3439c0e9cb1b477115d5a34905f5c6be55422d66fcba55cedbf711ae89", + "sha256:94737db4beb7391ca78627e461050c5dd3a7cb7526fd6bdd0a0db94780e8b103", + "sha256:94998ff1d15b0eaec76494266e2e61d80573c5ee4ac0860a9af4a02e5107fe17", + "sha256:a9da8d1db2d7e17411afef351ea9ccddbff36ce748b16003d4f065250c941436", + "sha256:c11acef5c211af2559e1753ed96b3b4f30e7a9e26acad4b2cbd55ea3b25e3154", + "sha256:c631c6fd16b44a2636988d8be7202f1ffd3932f505e8b9044a6b88ef62411871", + "sha256:d0678ed952a85f4b3b23d5ee94445e55a05aec0b47de37843625eba1f9b0fbb3", + "sha256:d7899f43a198d184c3d4787390a67c654a8c600c6c844f29b557b4f236d11619", + "sha256:dc8f0116237d2f07fd8a8763f2c59f2fa50f445471f0c619914075ec411920e2", + "sha256:dd5ad4cb6244ac885512f5385f6fc055e2bfc174636189fc1408f138458380c8", + "sha256:e93d706b40cebc3b2fdaa9e814b4008ed4c659c6df03ee6a4ed46683aa21ab24", + "sha256:ece366b8e68be47a7252c27f73dd9666df6871fb6e302a7bfd00a5cb293743f2", + "sha256:f3781b8dc868e3d452ce36348b26735d7a2fc0fe6a4503f72411e5bc9341a7fa" ], - "index": "pypi", - "version": "==7.2.0" + "markers": "python_version >= '3.8'", + "version": "==8.7.1" }, "pillow": { "hashes": [ - "sha256:07999f5834bdc404c442146942a2ecadd1cb6292f5229f4ed3b31e0a108746b1", - "sha256:0852ddb76d85f127c135b6dd1f0bb88dbb9ee990d2cd9aa9e28526c93e794fba", - "sha256:1781a624c229cb35a2ac31cc4a77e28cafc8900733a864870c49bfeedacd106a", - "sha256:1e7723bd90ef94eda669a3c2c19d549874dd5badaeefabefd26053304abe5799", - "sha256:229e2c79c00e85989a34b5981a2b67aa079fd08c903f0aaead522a1d68d79e51", - "sha256:22baf0c3cf0c7f26e82d6e1adf118027afb325e703922c8dfc1d5d0156bb2eeb", - "sha256:252a03f1bdddce077eff2354c3861bf437c892fb1832f75ce813ee94347aa9b5", - "sha256:2dfaaf10b6172697b9bceb9a3bd7b951819d1ca339a5ef294d1f1ac6d7f63270", - "sha256:322724c0032af6692456cd6ed554bb85f8149214d97398bb80613b04e33769f6", - "sha256:35f6e77122a0c0762268216315bf239cf52b88865bba522999dc38f1c52b9b47", - "sha256:375f6e5ee9620a271acb6820b3d1e94ffa8e741c0601db4c0c4d3cb0a9c224bf", - "sha256:3ded42b9ad70e5f1754fb7c2e2d6465a9c842e41d178f262e08b8c85ed8a1d8e", - "sha256:432b975c009cf649420615388561c0ce7cc31ce9b2e374db659ee4f7d57a1f8b", - "sha256:482877592e927fd263028c105b36272398e3e1be3269efda09f6ba21fd83ec66", - "sha256:489f8389261e5ed43ac8ff7b453162af39c3e8abd730af8363587ba64bb2e865", - "sha256:54f7102ad31a3de5666827526e248c3530b3a33539dbda27c6843d19d72644ec", - "sha256:560737e70cb9c6255d6dcba3de6578a9e2ec4b573659943a5e7e4af13f298f5c", - "sha256:5671583eab84af046a397d6d0ba25343c00cd50bce03787948e0fff01d4fd9b1", - "sha256:5ba1b81ee69573fe7124881762bb4cd2e4b6ed9dd28c9c60a632902fe8db8b38", - "sha256:5d4ebf8e1db4441a55c509c4baa7a0587a0210f7cd25fcfe74dbbce7a4bd1906", - "sha256:60037a8db8750e474af7ffc9faa9b5859e6c6d0a50e55c45576bf28be7419705", - "sha256:608488bdcbdb4ba7837461442b90ea6f3079397ddc968c31265c1e056964f1ef", - "sha256:6608ff3bf781eee0cd14d0901a2b9cc3d3834516532e3bd673a0a204dc8615fc", - "sha256:662da1f3f89a302cc22faa9f14a262c2e3951f9dbc9617609a47521c69dd9f8f", - "sha256:7002d0797a3e4193c7cdee3198d7c14f92c0836d6b4a3f3046a64bd1ce8df2bf", - "sha256:763782b2e03e45e2c77d7779875f4432e25121ef002a41829d8868700d119392", - "sha256:77165c4a5e7d5a284f10a6efaa39a0ae8ba839da344f20b111d62cc932fa4e5d", - "sha256:7c9af5a3b406a50e313467e3565fc99929717f780164fe6fbb7704edba0cebbe", - "sha256:7ec6f6ce99dab90b52da21cf0dc519e21095e332ff3b399a357c187b1a5eee32", - "sha256:833b86a98e0ede388fa29363159c9b1a294b0905b5128baf01db683672f230f5", - "sha256:84a6f19ce086c1bf894644b43cd129702f781ba5751ca8572f08aa40ef0ab7b7", - "sha256:8507eda3cd0608a1f94f58c64817e83ec12fa93a9436938b191b80d9e4c0fc44", - "sha256:85ec677246533e27770b0de5cf0f9d6e4ec0c212a1f89dfc941b64b21226009d", - "sha256:8aca1152d93dcc27dc55395604dcfc55bed5f25ef4c98716a928bacba90d33a3", - "sha256:8d935f924bbab8f0a9a28404422da8af4904e36d5c33fc6f677e4c4485515625", - "sha256:8f36397bf3f7d7c6a3abdea815ecf6fd14e7fcd4418ab24bae01008d8d8ca15e", - "sha256:91ec6fe47b5eb5a9968c79ad9ed78c342b1f97a091677ba0e012701add857829", - "sha256:965e4a05ef364e7b973dd17fc765f42233415974d773e82144c9bbaaaea5d089", - "sha256:96e88745a55b88a7c64fa49bceff363a1a27d9a64e04019c2281049444a571e3", - "sha256:99eb6cafb6ba90e436684e08dad8be1637efb71c4f2180ee6b8f940739406e78", - "sha256:9adf58f5d64e474bed00d69bcd86ec4bcaa4123bfa70a65ce72e424bfb88ed96", - "sha256:9b1af95c3a967bf1da94f253e56b6286b50af23392a886720f563c547e48e964", - "sha256:a0aa9417994d91301056f3d0038af1199eb7adc86e646a36b9e050b06f526597", - "sha256:a0f9bb6c80e6efcde93ffc51256d5cfb2155ff8f78292f074f60f9e70b942d99", - "sha256:a127ae76092974abfbfa38ca2d12cbeddcdeac0fb71f9627cc1135bedaf9d51a", - "sha256:aaf305d6d40bd9632198c766fb64f0c1a83ca5b667f16c1e79e1661ab5060140", - "sha256:aca1c196f407ec7cf04dcbb15d19a43c507a81f7ffc45b690899d6a76ac9fda7", - "sha256:ace6ca218308447b9077c14ea4ef381ba0b67ee78d64046b3f19cf4e1139ad16", - "sha256:b416f03d37d27290cb93597335a2f85ed446731200705b22bb927405320de903", - "sha256:bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1", - "sha256:c1170d6b195555644f0616fd6ed929dfcf6333b8675fcca044ae5ab110ded296", - "sha256:c380b27d041209b849ed246b111b7c166ba36d7933ec6e41175fd15ab9eb1572", - "sha256:c446d2245ba29820d405315083d55299a796695d747efceb5717a8b450324115", - "sha256:c830a02caeb789633863b466b9de10c015bded434deb3ec87c768e53752ad22a", - "sha256:cb841572862f629b99725ebaec3287fc6d275be9b14443ea746c1dd325053cbd", - "sha256:cfa4561277f677ecf651e2b22dc43e8f5368b74a25a8f7d1d4a3a243e573f2d4", - "sha256:cfcc2c53c06f2ccb8976fb5c71d448bdd0a07d26d8e07e321c103416444c7ad1", - "sha256:d3c6b54e304c60c4181da1c9dadf83e4a54fd266a99c70ba646a9baa626819eb", - "sha256:d3d403753c9d5adc04d4694d35cf0391f0f3d57c8e0030aac09d7678fa8030aa", - "sha256:d9c206c29b46cfd343ea7cdfe1232443072bbb270d6a46f59c259460db76779a", - "sha256:e49eb4e95ff6fd7c0c402508894b1ef0e01b99a44320ba7d8ecbabefddcc5569", - "sha256:f8286396b351785801a976b1e85ea88e937712ee2c3ac653710a4a57a8da5d9c", - "sha256:f8fc330c3370a81bbf3f88557097d1ea26cd8b019d6433aa59f71195f5ddebbf", - "sha256:fbd359831c1657d69bb81f0db962905ee05e5e9451913b18b831febfe0519082", - "sha256:fe7e1c262d3392afcf5071df9afa574544f28eac825284596ac6db56e6d11062", - "sha256:fed1e1cf6a42577953abbe8e6cf2fe2f566daebde7c34724ec8803c4c0cda579" + "sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d", + "sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de", + "sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616", + "sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839", + "sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099", + "sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a", + "sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219", + "sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106", + "sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b", + "sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412", + "sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b", + "sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7", + "sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2", + "sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7", + "sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14", + "sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f", + "sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27", + "sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57", + "sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262", + "sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28", + "sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610", + "sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172", + "sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273", + "sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e", + "sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d", + "sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818", + "sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f", + "sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9", + "sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01", + "sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7", + "sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651", + "sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312", + "sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80", + "sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666", + "sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061", + "sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b", + "sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992", + "sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593", + "sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4", + "sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db", + "sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba", + "sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd", + "sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e", + "sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212", + "sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb", + "sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2", + "sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34", + "sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256", + "sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f", + "sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2", + "sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38", + "sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996", + "sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a", + "sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793" ], - "index": "pypi", - "version": "==9.5.0" + "markers": "python_version >= '3.8'", + "version": "==10.1.0" }, "pluggy": { "hashes": [ - "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849", - "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3" + "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12", + "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7" ], - "markers": "python_version >= '3.7'", - "version": "==1.2.0" + "markers": "python_version >= '3.8'", + "version": "==1.3.0" }, "portalocker": { "hashes": [ - "sha256:032e81d534a88ec1736d03f780ba073f047a06c478b06e2937486f334e955c51", - "sha256:a07c5b4f3985c3cf4798369631fb7011adb498e2a46d8440efc75a8f29a0f983" + "sha256:2b035aa7828e46c58e9b31390ee1f169b98e1066ab10b9a6a861fe7e25ee4f33", + "sha256:cfb86acc09b9aa7c3b43594e19be1345b9d16af3feb08bf92f23d4dce513a28e" ], - "markers": "python_version >= '3.5'", - "version": "==2.7.0" + "markers": "python_version >= '3.8'", + "version": "==2.8.2" }, "prometheus-client": { "hashes": [ - "sha256:21e674f39831ae3f8acde238afd9a27a37d0d2fb5a28ea094f0ce25d2cbf2091", - "sha256:e537f37160f6807b8202a6fc4764cdd19bac5480ddd3e0d463c3002b34462101" + "sha256:35f7a8c22139e2bb7ca5a698e92d38145bc8dc74c1c0bf56f25cca886a764e17", + "sha256:8de3ae2755f890826f4b6479e5571d4f74ac17a81345fe69a6778fdb92579184" ], - "markers": "python_version >= '3.6'", - "version": "==0.17.1" + "markers": "python_version >= '3.8'", + "version": "==0.18.0" }, "prompt-toolkit": { "hashes": [ - "sha256:04505ade687dc26dc4284b1ad19a83be2f2afe83e7a828ace0c72f3a1df72aac", - "sha256:9dffbe1d8acf91e3de75f3b544e4842382fc06c6babe903ac9acb74dc6e08d88" + "sha256:941367d97fc815548822aa26c2a269fdc4eb21e9ec05fc5d447cf09bad5d75f0", + "sha256:f36fe301fafb7470e86aaf90f036eef600a3210be4decf461a5b1ca8403d3cb2" ], "markers": "python_full_version >= '3.7.0'", - "version": "==3.0.39" + "version": "==3.0.41" }, "psycopg2": { "hashes": [ - "sha256:11aca705ec888e4f4cea97289a0bf0f22a067a32614f6ef64fcf7b8bfbc53744", - "sha256:1861a53a6a0fd248e42ea37c957d36950da00266378746588eab4f4b5649e95f", - "sha256:2362ee4d07ac85ff0ad93e22c693d0f37ff63e28f0615a16b6635a645f4b9214", - "sha256:36c941a767341d11549c0fbdbb2bf5be2eda4caf87f65dfcd7d146828bd27f39", - "sha256:53f4ad0a3988f983e9b49a5d9765d663bbe84f508ed655affdb810af9d0972ad", - "sha256:869776630c04f335d4124f120b7fb377fe44b0a7645ab3c34b4ba42516951889", - "sha256:a8ad4a47f42aa6aec8d061fdae21eaed8d864d4bb0f0cade5ad32ca16fcd6258", - "sha256:b81fcb9ecfc584f661b71c889edeae70bae30d3ef74fa0ca388ecda50b1222b7", - "sha256:d24ead3716a7d093b90b27b3d73459fe8cd90fd7065cf43b3c40966221d8c394", - "sha256:ded2faa2e6dfb430af7713d87ab4abbfc764d8d7fb73eafe96a24155f906ebf5", - "sha256:f15158418fd826831b28585e2ab48ed8df2d0d98f502a2b4fe619e7d5ca29011", - "sha256:f75001a1cbbe523e00b0ef896a5a1ada2da93ccd752b7636db5a99bc57c44494", - "sha256:f7a7a5ee78ba7dc74265ba69e010ae89dae635eea0e97b055fb641a01a31d2b1" + "sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981", + "sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516", + "sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3", + "sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa", + "sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a", + "sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693", + "sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372", + "sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e", + "sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59", + "sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156", + "sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024", + "sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913", + "sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c" ], "index": "pypi", - "version": "==2.9.6" + "markers": "python_version >= '3.7'", + "version": "==2.9.9" }, "pycparser": { "hashes": [ @@ -1225,12 +1277,21 @@ ], "version": "==2.21" }, + "pygments": { + "hashes": [ + "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c", + "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367" + ], + "markers": "python_version >= '3.7'", + "version": "==2.17.2" + }, "python-dateutil": { "hashes": [ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], "index": "pypi", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.2" }, "python-dotenv": { @@ -1239,6 +1300,7 @@ "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==1.0.0" }, "python-gnupg": { @@ -1251,11 +1313,12 @@ }, "python-ipware": { "hashes": [ - "sha256:01b9fa589521c29d7573f69fc4855c6b95687f0029601b78fffef1eb17f1de27", - "sha256:ee84cd16c2cf862faae197ad5f8fae6c75e4b1f40bb13357944a5d63ddc2a373" + "sha256:802858aa13308d572876d1883edae0eae380fe70a51fdefcb46c8a2099240862", + "sha256:a52757123c718342f74b16ab2d9d4a531888d69d10b8197c073164635df0a13b" ], "index": "pypi", - "version": "==0.9.0" + "markers": "python_version >= '3.7'", + "version": "==2.0.0" }, "python-magic": { "hashes": [ @@ -1263,18 +1326,21 @@ "sha256:c212960ad306f700aa0d01e5d7a325d20548ff97eb9920dcd29513174f0294d3" ], "index": "pypi", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==0.4.27" }, "pytz": { "hashes": [ - "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588", - "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb" + "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b", + "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7" ], - "version": "==2023.3" + "version": "==2023.3.post1" }, "pyyaml": { "hashes": [ + "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5", "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc", + "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df", "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741", "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206", "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27", @@ -1282,7 +1348,10 @@ "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62", "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98", "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696", + "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290", + "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9", "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d", + "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6", "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867", "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47", "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486", @@ -1290,9 +1359,12 @@ "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3", "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007", "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938", + "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0", "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c", "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735", "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d", + "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28", + "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4", "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba", "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8", "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5", @@ -1307,7 +1379,9 @@ "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43", "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859", "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673", + "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54", "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a", + "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b", "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab", "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa", "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c", @@ -1328,391 +1402,380 @@ }, "rapidfuzz": { "hashes": [ - "sha256:017a8b5c96665426977df7e55c2e80b4177a918c802fceb6aaa31d89c7dad961", - "sha256:090bd5976d2af005c143fac5364af7eb6b71831a708031983dd78867070517d0", - "sha256:09bb9c0a7006ad6782a3ff1a50843b80551a771ad6736d66943acd3dcb68030b", - "sha256:0a44d6bd5b4b510d5bfa64363d888070fedf55d7044564e9685fc9b6572a9fa5", - "sha256:0bef51399bb733fe7a464183c35ceba092b6e06aeee6fbf52d8759e7f2bed263", - "sha256:0d4b09c39125b5f21c62a6e08e6649fed6951ffc76a0a7e56c7b29e234002721", - "sha256:0df7736854b85ee1bfa775e0cde33a1af16ef0f9127e11f1232bf125af6b038b", - "sha256:105496b727923ea98e6a788becfd018e0da3510338f19d2c7b642775dcadcc2a", - "sha256:15e3586077863d61bf948a0541c7d077ddf4b4ebc59aca1568514bc9a10b8172", - "sha256:173378a1e9503e0239e422515c8dc4dcf70048070cb1d8301adc2722de1625ec", - "sha256:178b32d806c62e4dfe1b19427af27547b565ded64f844d6d19203cede4f4f7ce", - "sha256:178bb9e57d940f22a828ec916639268c3fd6ee1d45e1cefd7a7022645d816ce0", - "sha256:1a392b4ca7bccd5e98e767305bb282d3effa466f52b8c803d7def812dd61775e", - "sha256:1b1b2eab728efc239c8aab97b4821f8e10dcd5a1b066365d0e38023e3b2289e8", - "sha256:24b84c09ad66c24fbaec0d1f72e74d0cb7ee86e8bf6429281c69377dba76ac67", - "sha256:2510fc00b47a8355485b0014b49b58437594b48a0f08d557de7ea9819ef31967", - "sha256:2bd27356081b0b5ea3164dc45945e56a9ff3aac89f6df83835852ed377e274a0", - "sha256:2e03f99ffca1774ef1fe0bec473cb95a67af254ba03a2f3ff241581edb8b7954", - "sha256:35219597d11f2d863b1bb774e98b6a0e1881d96033cf90b580b1d82192b5c809", - "sha256:37238a2e8066e1573d2035906c77e58d4bbc5c50812bb667acb7975960260fed", - "sha256:37aa3caedc3553d38076a9f90abf8e6affa35b6b3db2e06c414636a95dd646f2", - "sha256:39943285af1b3884bfbf4d51376bce180f0456a5b04e766416c1af9a4b62b93a", - "sha256:3ad583c2f6595f8c261bfdac1485449e900c580b4dff25ecec2abc13dde29447", - "sha256:3bfeb47bc0be4b032462ba066b4198e79ef96a57a6bf5f6b64f1c63e5362000d", - "sha256:3c764f61cbb999ee92ea4e46e81a1e09d75ad00433cd19e9622808134d619a1d", - "sha256:3ca6fac652b195f8eff608b00c0c79889b7cb2984125abfbd14f6fb3f6effe25", - "sha256:3d93e61486d3d4767e46b108e19586038ce4e8d374c719a1dc0b1077d6007a11", - "sha256:3dbd9bf09ed895a01d1aca3d82b1ce3656d1b121650ee8d640e0e17ba24e9e31", - "sha256:45131c2bf9b6c739ffde137e6c56af65786a17a53b0c6e6ca3bba762bb063a9a", - "sha256:45c5e5d813569c4b613965bbfc7e5413615731aea9f932ea6f1854203ea52f9a", - "sha256:45e639069ecdb2aa33a2dc4a2b4c30f0bc35067830dbe5786031121ae9ac9eb6", - "sha256:47d532d6132d5fa40a3f1d3ea7c8752ca5e2ccf50a1aee5c5da16be7f04d8218", - "sha256:493e00f8664ade67574cf0e7984f53bc1dbfd018b0a8102e326bee002acdcd3f", - "sha256:4aec1e9d5416030f77de7e909af2645cc935e999da7e15d59d7e23b37a7a10ed", - "sha256:4f97190786e089e7a413d20b6c3964981fb1e21d7580c094dde08dbb17fd1171", - "sha256:5156692990dd9ddbd4734ff50c6b511c054aa660177fca64d214de57d54257a4", - "sha256:5289d882afb7e1ec7c6d33493f7964cc75fbaf298dcc1e3fbb1f0039560ddc7d", - "sha256:54a76e7b9093c99831bd5cc6513caf1689ec7d6e5123ec547444776fdf309592", - "sha256:555053d9c4ed1ad7d0bf78617ec474ab436a7be94966e98de79cf226d7e9a341", - "sha256:5a2e2203c4b7ecfe78a443810fcf2fcc1e1d96d59d3e704734e21b6f710df3f1", - "sha256:5f1f6f18f23f2744a58b0d02f07d31f5fc104ba2e6c81fbb51ecd50e96a3374c", - "sha256:6031a0985b0ecc72f3f9704efb4a2e7db77c315f732a953a13fb0900204c3047", - "sha256:60332a597794c3b184d240c8306d6b2fc4e6fd4606c1186bb08af41986b827cd", - "sha256:621ece875ea3150bee10605ec2be957055bddd23abafb981047fe7840027f1b0", - "sha256:66fbe9d6764c92a26e3c1c391476ce29e99c5bf1b823051a2bbae4e1d23671be", - "sha256:6ceaaa418e594438240bd287f093bca33c7ee3b6c40e8ce6a74ebdcc9f280f9d", - "sha256:6e29be51831c5a839268cddfa895a4833dfe6541611759bdc485eb8ebdf0b310", - "sha256:702a238fdc50d5d545f381d817f9141baff51d3014768286a07433a0790d33ce", - "sha256:70bfe4be52b300973f16206ace8216b9a5607c89039f5ced1eb048a60e098624", - "sha256:710e107a0977d53b29a68d89fef476fb378dc97cbbe81729f9e7dcc55c86c844", - "sha256:7361a2879b827516203f61d12af8bbb7bea504d7b4d5c02a745bd6bb3fbd4326", - "sha256:7553b67e575fe506fcc760f5ca3582185cb5599845ce27d63cd653a37fede925", - "sha256:77a3724f13fbc3ef867012f353d064459f618918f74a3276bffdb523e39350c9", - "sha256:785e330257b5d6ad1b59334d5af2253fccee6f921feb85e8e18662479f29be4f", - "sha256:7a88342b03c6c41b0ee8f5504d3a30bf47070f87b8bcfc63290e908ff0a212f5", - "sha256:85a85d2a9e8c7af690fe4056c1e48ce641a77cf48688751ff95c86f2a44fc5ec", - "sha256:8be1910ff15bc5f22ac5fadcd3f0877a6eb9eba40f2d17303e8cd898d36f49f5", - "sha256:93c004f0656d683ea69f8b6e41cd14313b94e9d108529c9dca4a9e864d5dac48", - "sha256:94af8500ec952154144f54918d150f04bd2e520c94a27bdd186f57323b0b7b5b", - "sha256:a45faa1a24fd3e078567ee31b953fe6e5819e9286a14f68c72c5689f14242f68", - "sha256:a7c41b1ab1532993d203eda9ab82bb8b7269717a7dc424b05ba39f1e39be5ddc", - "sha256:a996bf1859fb103ef34c24fe13d420714bbd4a43c50fa2cf44bb7d60b6060de3", - "sha256:a9c0bdb945a8fc6cb8d661da3d3969dd0a26202d7c17adb896c393c12cce9d10", - "sha256:a9dd80426417b07e3b86be44b7f7076086cd8290e1bbf1aa391f79e2807b1b8c", - "sha256:afa9a09ff78e40b2372ce2d4acee44165d2f7db7e253d670db93fe8a5d4b00b9", - "sha256:b5d3558e949f3de0081a5f6f8fa74a5a260ca9612e03be9cab8d7289c6bee8ad", - "sha256:b6e847d7558255483b399b6931e425143f68b8e0c176d30034c36a87dda4b9a9", - "sha256:b93f443705985f5d8c3594015caa2e89749875c9596c834dbc9f86d3c8331a5a", - "sha256:b9abdadae018d7d7fa15e850d5c47ec5e45cf3796258d503986ce17ba4d8a71d", - "sha256:ba1a336b41b71326b2ba735ce9d0b6b22c5160b23fddd9024e0717ead3e0bb90", - "sha256:bbe026e4c8ce47d7f5b802b31e6a0cd35e402b80ff29fa9373ec5ece54629aff", - "sha256:bd04785eaed247cc79149e1c0b01a4ca60efde6976e617231f5bb5ec84eb4c80", - "sha256:be05b3fc71b5a92085b4017551b6e3e1c13199c762f82dea0c3fbbae86d24f66", - "sha256:bfbf2e8923874379d035d08f38ef25595ab13a074605fc78b04c79ae3d6b6bdf", - "sha256:c00b7ece60047c3e022e6769f98a343a300976764711ac354c71229f1185787e", - "sha256:c0c15395d1763d89aea084d24564d0b6808988f05a0303d58dc633c27939fcb4", - "sha256:c0ee0733a17e9cc920838b46c43bab43c0e2cee78f091d8c788b162088ffc552", - "sha256:d30297b1ca6666db9171f500ac731e41d57fb5105d629b9115000d3e47cc5823", - "sha256:d45a0c8043e3e543032475d334c4058070865bc75b162dd11959aeebe75dd27f", - "sha256:ddf043aba44e951a6c8ff1addee57d9c3438f1ab3a7edd87ebc951621d8befda", - "sha256:e05b0e3d1803071221eeea695a5a247f3b66f55c3d2e9c2a13ed33ccf67a3f30", - "sha256:e7fc11a86be3df506149d1bf59e9b3edc818fbcada0a4786697b54707e6fc374", - "sha256:e88af8e86fb011adc0221419a5615ed507a54cd74956b07345b8881d81a329e5", - "sha256:eabb81ff00550d77e6a91b127f08a2e3feebc238596c37dad29dca4df4c212da", - "sha256:ef867fa13f7f064200a41299a442d92180b178edd0fe81a1f5222739b2572249", - "sha256:f0e128aa3dcc422c55d55de39dbbcce1401947c4215a5dcd36331151e8ee77ce", - "sha256:f1b9e00ae857fdd6d52bd6d7e1b5598c54bcd0194f4626abfd2eb4e93a8dfebd", - "sha256:f28e33a5940cbaec2095aab516423728aa11d93d01ab6574c304894abe71e007", - "sha256:f3c69967ba33327e8e22a3a0ff3c22b3879ad0f885a097ff2a5c1fe7dbd8505f", - "sha256:fa05dd24202001c2d9811cae12ed9942de240faff3cb37fc25ba2722026b7acb", - "sha256:fa439e73f8aa4f66e89fbc2bce6b2ae882d75ea4e4d75e5e584376db4f5fd73a", - "sha256:fa910442085e9e141259110e4a228f6a2860fa7bd85872707188f9ddd2479153" + "sha256:00be97f9219355945c46f37ac9fa447046e6f7930f7c901e5d881120d1695458", + "sha256:04e1e02b182283c43c866e215317735e91d22f5d34e65400121c04d5ed7ed859", + "sha256:089a7e96e5032821af5964d8457fcb38877cc321cdd06ad7c5d6e3d852264cb9", + "sha256:0fef4705459842ef8f79746d6f6a0b5d2b6a61a145d7d8bbe10b2e756ea337c8", + "sha256:1062425c8358a547ae5ebad148f2e0f02417716a571b803b0c68e4d552e99d32", + "sha256:120316824333e376b88b284724cfd394c6ccfcb9818519eab5d58a502e5533f0", + "sha256:12424a06ad9bd0cbf5f7cea1015e78d924a0034a0e75a5a7b39c0703dcd94095", + "sha256:1962d5ccf8602589dbf8e85246a0ee2b4050d82fade1568fb76f8a4419257704", + "sha256:1a047d6e58833919d742bbc0dfa66d1de4f79e8562ee195007d3eae96635df39", + "sha256:1a4a7832737f87583f3863dc62e6f56dd4a9fefc5f04a7bdcb4c433a0f36bb1b", + "sha256:1d5a686ea258931aaa38019204bdc670bbe14b389a230b1363d84d6cf4b9dc38", + "sha256:1dd2542e5103fb8ca46500a979ae14d1609dcba11d2f9fe01e99eec03420e193", + "sha256:22877c027c492b7dc7e3387a576a33ed5aad891104aa90da2e0844c83c5493ef", + "sha256:25510b5d142c47786dbd27cfd9da7cae5bdea28d458379377a3644d8460a3404", + "sha256:27689361c747b5f7b8a26056bc60979875323f1c3dcaaa9e2fec88f03b20a365", + "sha256:2bacce6bbc0362f0789253424269cc742b1f45e982430387db3abe1d0496e371", + "sha256:2cf9f2ed4a97b388cffd48d534452a564c2491f68f4fd5bc140306f774ceb63a", + "sha256:2d876dba9a11fcf60dcf1562c5a84ef559db14c2ceb41e1ad2d93cd1dc085889", + "sha256:2da3a24c2f7dfca7f26ba04966b848e3bbeb93e54d899908ff88dfe3e1def9dc", + "sha256:2fbaf546f15a924613f89d609ff66b85b4f4c2307ac14d93b80fe1025b713138", + "sha256:32d580df0e130ed85400ff77e1c32d965e9bc7be29ac4072ab637f57e26d29fb", + "sha256:358a0fbc49343de20fee8ebdb33c7fa8f55a9ff93ff42d1ffe097d2caa248f1b", + "sha256:365e544aba3ac13acf1a62cb2e5909ad2ba078d0bfc7d69b1f801dfd673b9782", + "sha256:40139552961018216b8cd88f6df4ecbbe984f907a62a5c823ccd907132c29a14", + "sha256:43fb368998b9703fa8c63db292a8ab9e988bf6da0c8a635754be8e69da1e7c1d", + "sha256:467a4d730ae3bade87dba6bd769e837ab97e176968ce20591fe8f7bf819115b1", + "sha256:51b5166be86e09e011e92d9862b1fe64c4c7b9385f443fb535024e646d890460", + "sha256:53df7aea3cf301633cfa2b4b2c2d2441a87dfc878ef810e5b4eddcd3e68723ad", + "sha256:54576669c1502b751b534bd76a4aeaaf838ed88b30af5d5c1b7d0a3ca5d4f7b5", + "sha256:54f0061028723c026020f5bb20649c22bc8a0d9f5363c283bdc5901d4d3bff01", + "sha256:58e3e21f6f13a7cca265cce492bc797425bd4cb2025fdd161a9e86a824ad65ce", + "sha256:58ee34350f8c292dd24a050186c0e18301d80da904ef572cf5fda7be6a954929", + "sha256:5afc1fcf1830f9bb87d3b490ba03691081b9948a794ea851befd2643069a30c1", + "sha256:6541ffb70097885f7302cd73e2efd77be99841103023c2f9408551f27f45f7a5", + "sha256:666928ee735562a909d81bd2f63207b3214afd4ca41f790ab3025d066975c814", + "sha256:66be181965aff13301dd5f9b94b646ce39d99c7fe2fd5de1656f4ca7fafcb38c", + "sha256:6b2ad5516f7068c7d9cbcda8ac5906c589e99bc427df2e1050282ee2d8bc2d58", + "sha256:73e14617a520c0f1bc15eb78c215383477e5ca70922ecaff1d29c63c060e04ca", + "sha256:75d8a52bf8d1aa2ac968ae4b21b83b94fc7e5ea3dfbab34811fc60f32df505b2", + "sha256:76639dca5eb0afc6424ac5f42d43d3bd342ac710e06f38a8c877d5b96de09589", + "sha256:7cdf92116e9dfe40da17f921cdbfa0039dde9eb158914fa5f01b1e67a20b19cb", + "sha256:7fb21e182dc6d83617e88dea002963d5cf99cf5eabbdbf04094f503d8fe8d723", + "sha256:84be69ea65f64fa01e5c4976be9826a5aa949f037508887add42da07420d65d6", + "sha256:8501d7875b176930e6ed9dbc1bc35adb37ef312f6106bd6bb5c204adb90160ac", + "sha256:852b3f93c15fce58b8dc668bd54123713bfdbbb0796ba905ea5df99cfd083132", + "sha256:8658c1045766e87e0038323aa38b4a9f49b7f366563271f973c8890a98aa24b5", + "sha256:8f2df3968738a38d2a0058b5e721753f5d3d602346a1027b0dde31b0476418f3", + "sha256:8f808dcb0088a7a496cc9895e66a7b8de55ffea0eb9b547c75dfb216dd5f76ed", + "sha256:908ff2de9c442b379143d1da3c886c63119d4eba22986806e2533cee603fe64b", + "sha256:97b043fe8185ec53bb3ff0e59deb89425c0fc6ece6e118939963aab473505801", + "sha256:97f811ca7709c6ee8c0b55830f63b3d87086f4abbcbb189b4067e1cd7014db7b", + "sha256:99c9fc5265566fb94731dc6826f43c5109e797078264e6389a36d47814473692", + "sha256:9cdbe8e80cc186d55f748a34393533a052d855357d5398a1ccb71a5021b58e8d", + "sha256:9e9b395743e12c36a3167a3a9fd1b4e11d92fb0aa21ec98017ee6df639ed385e", + "sha256:a42c7a8c62b29c4810e39da22b42524295fcb793f41c395c2cb07c126b729e83", + "sha256:a8162d81486de85ab1606e48e076431b66d44cf431b2b678e9cae458832e7147", + "sha256:abafeb82f85a651a9d6d642a33dc021606bc459c33e250925b25d6b9e7105a2e", + "sha256:ada0d8d57e0f556ef38c24fee71bfe8d0db29c678bff2acd1819fc1b74f331c2", + "sha256:af5221e4f7800db3e84c46b79dba4112e3b3cc2678f808bdff4fcd2487073846", + "sha256:affb8fe36157c2dc8a7bc45b6a1875eb03e2c49167a1d52789144bdcb7ab3b8c", + "sha256:b2e8b369f23f00678f6e673572209a5d3b0832f4991888e3df97af7b8b9decf3", + "sha256:b4e9ded8e80530bd7205a7a2b01802f934a4695ca9e9fbe1ce9644f5e0697864", + "sha256:b581107ec0c610cdea48b25f52030770be390db4a9a73ca58b8d70fa8a5ec32e", + "sha256:b61f77d834f94b0099fa9ed35c189b7829759d4e9c2743697a130dd7ba62259f", + "sha256:b685abb8b6d97989f6c69556d7934e0e533aa8822f50b9517ff2da06a1d29f23", + "sha256:b847a49377e64e92e11ef3d0a793de75451526c83af015bdafdd5d04de8a058a", + "sha256:bf3093443751e5a419834162af358d1e31dec75f84747a91dbbc47b2c04fc085", + "sha256:bff7d3127ebc5cd908f3a72f6517f31f5247b84666137556a8fcc5177c560939", + "sha256:c04f9f1310ce414ab00bdcbf26d0906755094bfc59402cb66a7722c6f06d70b2", + "sha256:c1d33a622572d384f4c90b5f7a139328246ab5600141e90032b521c2127bd605", + "sha256:c29958265e4c2b937269e804b8a160c027ee1c2627d6152655008a8b8083630e", + "sha256:c5075ce7b9286624cafcf36720ef1cfb2946d75430b87cb4d1f006e82cd71244", + "sha256:d05146497672f869baf41147d5ec1222788c70e5b8b0cfcd6e95597c75b5b96b", + "sha256:d4b05a8f4ab7e7344459394094587b033fe259eea3a8720035e8ba30e79ab39b", + "sha256:d55de67c48f06b7772541e8d4c062a2679205799ce904236e2836cb04c106442", + "sha256:db45028eae2fda7a24759c69ebeb2a7fbcc1a326606556448ed43ee480237a3c", + "sha256:dd6384780c2a16097d47588844cd677316a90e0f41ef96ff485b62d58de79dcf", + "sha256:de89585268ed8ee44e80126814cae63ff6b00d08416481f31b784570ef07ec59", + "sha256:df8fae2515a1e4936affccac3e7d506dd904de5ff82bc0b1433b4574a51b9bfb", + "sha256:dfc63fabb7d8da8483ca836bae7e55766fe39c63253571e103c034ba8ea80950", + "sha256:e0f448b0eacbcc416feb634e1232a48d1cbde5e60f269c84e4fb0912f7bbb001", + "sha256:e3f2be79d4114d01f383096dbee51b57df141cb8b209c19d0cf65f23a24e75ba", + "sha256:e414e1ca40386deda4291aa2d45062fea0fbaa14f95015738f8bb75c4d27f862", + "sha256:e5fd627e604ddc02db2ddb9ddc4a91dd92b7a6d6378fcf30bb37b49229072b89", + "sha256:f2059cd73b7ea779a9307d7a78ed743f0e3d33b88ccdcd84569abd2953cd859f", + "sha256:f6da61cc38c1a95efc5edcedf258759e6dbab73191651a28c5719587f32a56ad", + "sha256:f823fd1977071486739f484e27092765d693da6beedaceece54edce1dfeec9b2", + "sha256:fa4c0612893716bbb6595066ca9ecb517c982355abe39ba9d1f4ab834ace91ad", + "sha256:fb379ac0ddfc86c5542a225d194f76ed468b071b6f79ff57c4b72e635605ad7d", + "sha256:fdfdb3685b631d8efbb6d6d3d86eb631be2b408d9adafcadc11e63e3f9c96dec" ], "index": "pypi", - "version": "==3.1.2" + "markers": "python_version >= '3.8'", + "version": "==3.5.2" }, "redis": { "extras": [ "hiredis" ], "hashes": [ - "sha256:585dc516b9eb042a619ef0a39c3d7d55fe81bdb4df09a52c9cdde0d07bf1aa7d", - "sha256:e2b03db868160ee4591de3cb90d40ebb50a90dd302138775937f6a42b7ed183c" + "sha256:0dab495cd5753069d3bc650a0dde8a8f9edde16fc5691b689a566eda58100d0f", + "sha256:ed4802971884ae19d640775ba3b03aa2e7bd5e8fb8dfaed2decce4d0fc48391f" ], - "index": "pypi", - "version": "==4.6.0" + "markers": "python_version >= '3.7'", + "version": "==5.0.1" }, "regex": { "hashes": [ - "sha256:0385e73da22363778ef2324950e08b689abdf0b108a7d8decb403ad7f5191938", - "sha256:051da80e6eeb6e239e394ae60704d2b566aa6a7aed6f2890a7967307267a5dc6", - "sha256:05ed27acdf4465c95826962528f9e8d41dbf9b1aa8531a387dee6ed215a3e9ef", - "sha256:0654bca0cdf28a5956c83839162692725159f4cda8d63e0911a2c0dc76166525", - "sha256:09e4a1a6acc39294a36b7338819b10baceb227f7f7dbbea0506d419b5a1dd8af", - "sha256:0b49c764f88a79160fa64f9a7b425620e87c9f46095ef9c9920542ab2495c8bc", - "sha256:0b71e63226e393b534105fcbdd8740410dc6b0854c2bfa39bbda6b0d40e59a54", - "sha256:0c29ca1bd61b16b67be247be87390ef1d1ef702800f91fbd1991f5c4421ebae8", - "sha256:10590510780b7541969287512d1b43f19f965c2ece6c9b1c00fc367b29d8dce7", - "sha256:10cb847aeb1728412c666ab2e2000ba6f174f25b2bdc7292e7dd71b16db07568", - "sha256:12b74fbbf6cbbf9dbce20eb9b5879469e97aeeaa874145517563cca4029db65c", - "sha256:20326216cc2afe69b6e98528160b225d72f85ab080cbdf0b11528cbbaba2248f", - "sha256:2239d95d8e243658b8dbb36b12bd10c33ad6e6933a54d36ff053713f129aa536", - "sha256:25be746a8ec7bc7b082783216de8e9473803706723b3f6bef34b3d0ed03d57e2", - "sha256:271f0bdba3c70b58e6f500b205d10a36fb4b58bd06ac61381b68de66442efddb", - "sha256:29cdd471ebf9e0f2fb3cac165efedc3c58db841d83a518b082077e612d3ee5df", - "sha256:2d44dc13229905ae96dd2ae2dd7cebf824ee92bc52e8cf03dcead37d926da019", - "sha256:3676f1dd082be28b1266c93f618ee07741b704ab7b68501a173ce7d8d0d0ca18", - "sha256:36efeba71c6539d23c4643be88295ce8c82c88bbd7c65e8a24081d2ca123da3f", - "sha256:3e5219bf9e75993d73ab3d25985c857c77e614525fac9ae02b1bebd92f7cecac", - "sha256:43e1dd9d12df9004246bacb79a0e5886b3b6071b32e41f83b0acbf293f820ee8", - "sha256:457b6cce21bee41ac292d6753d5e94dcbc5c9e3e3a834da285b0bde7aa4a11e9", - "sha256:463b6a3ceb5ca952e66550a4532cef94c9a0c80dc156c4cc343041951aec1697", - "sha256:4959e8bcbfda5146477d21c3a8ad81b185cd252f3d0d6e4724a5ef11c012fb06", - "sha256:4d3850beab9f527f06ccc94b446c864059c57651b3f911fddb8d9d3ec1d1b25d", - "sha256:5708089ed5b40a7b2dc561e0c8baa9535b77771b64a8330b684823cfd5116036", - "sha256:5c6b48d0fa50d8f4df3daf451be7f9689c2bde1a52b1225c5926e3f54b6a9ed1", - "sha256:61474f0b41fe1a80e8dfa70f70ea1e047387b7cd01c85ec88fa44f5d7561d787", - "sha256:6343c6928282c1f6a9db41f5fd551662310e8774c0e5ebccb767002fcf663ca9", - "sha256:65ba8603753cec91c71de423a943ba506363b0e5c3fdb913ef8f9caa14b2c7e0", - "sha256:687ea9d78a4b1cf82f8479cab23678aff723108df3edeac098e5b2498879f4a7", - "sha256:6b2675068c8b56f6bfd5a2bda55b8accbb96c02fd563704732fd1c95e2083461", - "sha256:7117d10690c38a622e54c432dfbbd3cbd92f09401d622902c32f6d377e2300ee", - "sha256:7178bbc1b2ec40eaca599d13c092079bf529679bf0371c602edaa555e10b41c3", - "sha256:72d1a25bf36d2050ceb35b517afe13864865268dfb45910e2e17a84be6cbfeb0", - "sha256:742e19a90d9bb2f4a6cf2862b8b06dea5e09b96c9f2df1779e53432d7275331f", - "sha256:74390d18c75054947e4194019077e243c06fbb62e541d8817a0fa822ea310c14", - "sha256:74419d2b50ecb98360cfaa2974da8689cb3b45b9deff0dcf489c0d333bcc1477", - "sha256:824bf3ac11001849aec3fa1d69abcb67aac3e150a933963fb12bda5151fe1bfd", - "sha256:83320a09188e0e6c39088355d423aa9d056ad57a0b6c6381b300ec1a04ec3d16", - "sha256:837328d14cde912af625d5f303ec29f7e28cdab588674897baafaf505341f2fc", - "sha256:841d6e0e5663d4c7b4c8099c9997be748677d46cbf43f9f471150e560791f7ff", - "sha256:87b2a5bb5e78ee0ad1de71c664d6eb536dc3947a46a69182a90f4410f5e3f7dd", - "sha256:890e5a11c97cf0d0c550eb661b937a1e45431ffa79803b942a057c4fb12a2da2", - "sha256:8abbc5d54ea0ee80e37fef009e3cec5dafd722ed3c829126253d3e22f3846f1e", - "sha256:8e3f1316c2293e5469f8f09dc2d76efb6c3982d3da91ba95061a7e69489a14ef", - "sha256:8f56fcb7ff7bf7404becdfc60b1e81a6d0561807051fd2f1860b0d0348156a07", - "sha256:9427a399501818a7564f8c90eced1e9e20709ece36be701f394ada99890ea4b3", - "sha256:976d7a304b59ede34ca2921305b57356694f9e6879db323fd90a80f865d355a3", - "sha256:9a5bfb3004f2144a084a16ce19ca56b8ac46e6fd0651f54269fc9e230edb5e4a", - "sha256:9beb322958aaca059f34975b0df135181f2e5d7a13b84d3e0e45434749cb20f7", - "sha256:9edcbad1f8a407e450fbac88d89e04e0b99a08473f666a3f3de0fd292badb6aa", - "sha256:9edce5281f965cf135e19840f4d93d55b3835122aa76ccacfd389e880ba4cf82", - "sha256:a4c3b7fa4cdaa69268748665a1a6ff70c014d39bb69c50fda64b396c9116cf77", - "sha256:a8105e9af3b029f243ab11ad47c19b566482c150c754e4c717900a798806b222", - "sha256:a99b50300df5add73d307cf66abea093304a07eb017bce94f01e795090dea87c", - "sha256:aad51907d74fc183033ad796dd4c2e080d1adcc4fd3c0fd4fd499f30c03011cd", - "sha256:af4dd387354dc83a3bff67127a124c21116feb0d2ef536805c454721c5d7993d", - "sha256:b28f5024a3a041009eb4c333863d7894d191215b39576535c6734cd88b0fcb68", - "sha256:b4598b1897837067a57b08147a68ac026c1e73b31ef6e36deeeb1fa60b2933c9", - "sha256:b6192d5af2ccd2a38877bfef086d35e6659566a335b1492786ff254c168b1693", - "sha256:b862c2b9d5ae38a68b92e215b93f98d4c5e9454fa36aae4450f61dd33ff48487", - "sha256:b956231ebdc45f5b7a2e1f90f66a12be9610ce775fe1b1d50414aac1e9206c06", - "sha256:bb60b503ec8a6e4e3e03a681072fa3a5adcbfa5479fa2d898ae2b4a8e24c4591", - "sha256:bbb02fd4462f37060122e5acacec78e49c0fbb303c30dd49c7f493cf21fc5b27", - "sha256:bdff5eab10e59cf26bc479f565e25ed71a7d041d1ded04ccf9aee1d9f208487a", - "sha256:c123f662be8ec5ab4ea72ea300359023a5d1df095b7ead76fedcd8babbedf969", - "sha256:c2b867c17a7a7ae44c43ebbeb1b5ff406b3e8d5b3e14662683e5e66e6cc868d3", - "sha256:c5f8037000eb21e4823aa485149f2299eb589f8d1fe4b448036d230c3f4e68e0", - "sha256:c6a57b742133830eec44d9b2290daf5cbe0a2f1d6acee1b3c7b1c7b2f3606df7", - "sha256:ccf91346b7bd20c790310c4147eee6ed495a54ddb6737162a36ce9dbef3e4751", - "sha256:cf67ca618b4fd34aee78740bea954d7c69fdda419eb208c2c0c7060bb822d747", - "sha256:d2da3abc88711bce7557412310dfa50327d5769a31d1c894b58eb256459dc289", - "sha256:d4f03bb71d482f979bda92e1427f3ec9b220e62a7dd337af0aa6b47bf4498f72", - "sha256:d54af539295392611e7efbe94e827311eb8b29668e2b3f4cadcfe6f46df9c777", - "sha256:d77f09bc4b55d4bf7cc5eba785d87001d6757b7c9eec237fe2af57aba1a071d9", - "sha256:d831c2f8ff278179705ca59f7e8524069c1a989e716a1874d6d1aab6119d91d1", - "sha256:dbbbfce33cd98f97f6bffb17801b0576e653f4fdb1d399b2ea89638bc8d08ae1", - "sha256:dcba6dae7de533c876255317c11f3abe4907ba7d9aa15d13e3d9710d4315ec0e", - "sha256:e0bb18053dfcfed432cc3ac632b5e5e5c5b7e55fb3f8090e867bfd9b054dbcbf", - "sha256:e2fbd6236aae3b7f9d514312cdb58e6494ee1c76a9948adde6eba33eb1c4264f", - "sha256:e5087a3c59eef624a4591ef9eaa6e9a8d8a94c779dade95d27c0bc24650261cd", - "sha256:e8915cc96abeb8983cea1df3c939e3c6e1ac778340c17732eb63bb96247b91d2", - "sha256:ea353ecb6ab5f7e7d2f4372b1e779796ebd7b37352d290096978fea83c4dba0c", - "sha256:ee2d1a9a253b1729bb2de27d41f696ae893507c7db224436abe83ee25356f5c1", - "sha256:f415f802fbcafed5dcc694c13b1292f07fe0befdb94aa8a52905bd115ff41e88", - "sha256:fb5ec16523dc573a4b277663a2b5a364e2099902d3944c9419a40ebd56a118f9", - "sha256:fea75c3710d4f31389eed3c02f62d0b66a9da282521075061ce875eb5300cf23" + "sha256:00ba3c9818e33f1fa974693fb55d24cdc8ebafcb2e4207680669d8f8d7cca79a", + "sha256:00e871d83a45eee2f8688d7e6849609c2ca2a04a6d48fba3dff4deef35d14f07", + "sha256:06e9abc0e4c9ab4779c74ad99c3fc10d3967d03114449acc2c2762ad4472b8ca", + "sha256:0b9ac09853b2a3e0d0082104036579809679e7715671cfbf89d83c1cb2a30f58", + "sha256:0d47840dc05e0ba04fe2e26f15126de7c755496d5a8aae4a08bda4dd8d646c54", + "sha256:0f649fa32fe734c4abdfd4edbb8381c74abf5f34bc0b3271ce687b23729299ed", + "sha256:107ac60d1bfdc3edb53be75e2a52aff7481b92817cfdddd9b4519ccf0e54a6ff", + "sha256:11175910f62b2b8c055f2b089e0fedd694fe2be3941b3e2633653bc51064c528", + "sha256:12bd4bc2c632742c7ce20db48e0d99afdc05e03f0b4c1af90542e05b809a03d9", + "sha256:16f8740eb6dbacc7113e3097b0a36065a02e37b47c936b551805d40340fb9971", + "sha256:1c0e8fae5b27caa34177bdfa5a960c46ff2f78ee2d45c6db15ae3f64ecadde14", + "sha256:2c54e23836650bdf2c18222c87f6f840d4943944146ca479858404fedeb9f9af", + "sha256:3367007ad1951fde612bf65b0dffc8fd681a4ab98ac86957d16491400d661302", + "sha256:36362386b813fa6c9146da6149a001b7bd063dabc4d49522a1f7aa65b725c7ec", + "sha256:39807cbcbe406efca2a233884e169d056c35aa7e9f343d4e78665246a332f597", + "sha256:39cdf8d141d6d44e8d5a12a8569d5a227f645c87df4f92179bd06e2e2705e76b", + "sha256:3b2c3502603fab52d7619b882c25a6850b766ebd1b18de3df23b2f939360e1bd", + "sha256:3ccf2716add72f80714b9a63899b67fa711b654be3fcdd34fa391d2d274ce767", + "sha256:3fef4f844d2290ee0ba57addcec17eec9e3df73f10a2748485dfd6a3a188cc0f", + "sha256:4023e2efc35a30e66e938de5aef42b520c20e7eda7bb5fb12c35e5d09a4c43f6", + "sha256:4a3ee019a9befe84fa3e917a2dd378807e423d013377a884c1970a3c2792d293", + "sha256:4a8bf76e3182797c6b1afa5b822d1d5802ff30284abe4599e1247be4fd6b03be", + "sha256:4a992f702c9be9c72fa46f01ca6e18d131906a7180950958f766c2aa294d4b41", + "sha256:4c34d4f73ea738223a094d8e0ffd6d2c1a1b4c175da34d6b0de3d8d69bee6bcc", + "sha256:4cd1bccf99d3ef1ab6ba835308ad85be040e6a11b0977ef7ea8c8005f01a3c29", + "sha256:4ef80829117a8061f974b2fda8ec799717242353bff55f8a29411794d635d964", + "sha256:58837f9d221744d4c92d2cf7201c6acd19623b50c643b56992cbd2b745485d3d", + "sha256:5a8f91c64f390ecee09ff793319f30a0f32492e99f5dc1c72bc361f23ccd0a9a", + "sha256:5addc9d0209a9afca5fc070f93b726bf7003bd63a427f65ef797a931782e7edc", + "sha256:6239d4e2e0b52c8bd38c51b760cd870069f0bdf99700a62cd509d7a031749a55", + "sha256:66e2fe786ef28da2b28e222c89502b2af984858091675044d93cb50e6f46d7af", + "sha256:69c0771ca5653c7d4b65203cbfc5e66db9375f1078689459fe196fe08b7b4930", + "sha256:6ac965a998e1388e6ff2e9781f499ad1eaa41e962a40d11c7823c9952c77123e", + "sha256:6c56c3d47da04f921b73ff9415fbaa939f684d47293f071aa9cbb13c94afc17d", + "sha256:6f85739e80d13644b981a88f529d79c5bdf646b460ba190bffcaf6d57b2a9863", + "sha256:706e7b739fdd17cb89e1fbf712d9dc21311fc2333f6d435eac2d4ee81985098c", + "sha256:741ba2f511cc9626b7561a440f87d658aabb3d6b744a86a3c025f866b4d19e7f", + "sha256:7434a61b158be563c1362d9071358f8ab91b8d928728cd2882af060481244c9e", + "sha256:76066d7ff61ba6bf3cb5efe2428fc82aac91802844c022d849a1f0f53820502d", + "sha256:7979b834ec7a33aafae34a90aad9f914c41fd6eaa8474e66953f3f6f7cbd4368", + "sha256:7eece6fbd3eae4a92d7c748ae825cbc1ee41a89bb1c3db05b5578ed3cfcfd7cb", + "sha256:7ef1e014eed78ab650bef9a6a9cbe50b052c0aebe553fb2881e0453717573f52", + "sha256:81dce2ddc9f6e8f543d94b05d56e70d03a0774d32f6cca53e978dc01e4fc75b8", + "sha256:82fcc1f1cc3ff1ab8a57ba619b149b907072e750815c5ba63e7aa2e1163384a4", + "sha256:8d1f21af4c1539051049796a0f50aa342f9a27cde57318f2fc41ed50b0dbc4ac", + "sha256:90a79bce019c442604662d17bf69df99090e24cdc6ad95b18b6725c2988a490e", + "sha256:9145f092b5d1977ec8c0ab46e7b3381b2fd069957b9862a43bd383e5c01d18c2", + "sha256:91dc1d531f80c862441d7b66c4505cd6ea9d312f01fb2f4654f40c6fdf5cc37a", + "sha256:979c24cbefaf2420c4e377ecd1f165ea08cc3d1fbb44bdc51bccbbf7c66a2cb4", + "sha256:994645a46c6a740ee8ce8df7911d4aee458d9b1bc5639bc968226763d07f00fa", + "sha256:9b98b7681a9437262947f41c7fac567c7e1f6eddd94b0483596d320092004533", + "sha256:9c6b4d23c04831e3ab61717a707a5d763b300213db49ca680edf8bf13ab5d91b", + "sha256:9c6d0ced3c06d0f183b73d3c5920727268d2201aa0fe6d55c60d68c792ff3588", + "sha256:9fd88f373cb71e6b59b7fa597e47e518282455c2734fd4306a05ca219a1991b0", + "sha256:a8f4e49fc3ce020f65411432183e6775f24e02dff617281094ba6ab079ef0915", + "sha256:a9e908ef5889cda4de038892b9accc36d33d72fb3e12c747e2799a0e806ec841", + "sha256:ad08a69728ff3c79866d729b095872afe1e0557251da4abb2c5faff15a91d19a", + "sha256:adbccd17dcaff65704c856bd29951c58a1bd4b2b0f8ad6b826dbd543fe740988", + "sha256:b0c7d2f698e83f15228ba41c135501cfe7d5740181d5903e250e47f617eb4292", + "sha256:b3ab05a182c7937fb374f7e946f04fb23a0c0699c0450e9fb02ef567412d2fa3", + "sha256:b6104f9a46bd8743e4f738afef69b153c4b8b592d35ae46db07fc28ae3d5fb7c", + "sha256:ba7cd6dc4d585ea544c1412019921570ebd8a597fabf475acc4528210d7c4a6f", + "sha256:bc72c231f5449d86d6c7d9cc7cd819b6eb30134bb770b8cfdc0765e48ef9c420", + "sha256:bce8814b076f0ce5766dc87d5a056b0e9437b8e0cd351b9a6c4e1134a7dfbda9", + "sha256:be5e22bbb67924dea15039c3282fa4cc6cdfbe0cbbd1c0515f9223186fc2ec5f", + "sha256:be6b7b8d42d3090b6c80793524fa66c57ad7ee3fe9722b258aec6d0672543fd0", + "sha256:bfe50b61bab1b1ec260fa7cd91106fa9fece57e6beba05630afe27c71259c59b", + "sha256:bff507ae210371d4b1fe316d03433ac099f184d570a1a611e541923f78f05037", + "sha256:c148bec483cc4b421562b4bcedb8e28a3b84fcc8f0aa4418e10898f3c2c0eb9b", + "sha256:c15ad0aee158a15e17e0495e1e18741573d04eb6da06d8b84af726cfc1ed02ee", + "sha256:c2169b2dcabf4e608416f7f9468737583ce5f0a6e8677c4efbf795ce81109d7c", + "sha256:c55853684fe08d4897c37dfc5faeff70607a5f1806c8be148f1695be4a63414b", + "sha256:c65a3b5330b54103e7d21cac3f6bf3900d46f6d50138d73343d9e5b2900b2353", + "sha256:c7964c2183c3e6cce3f497e3a9f49d182e969f2dc3aeeadfa18945ff7bdd7051", + "sha256:cc3f1c053b73f20c7ad88b0d1d23be7e7b3901229ce89f5000a8399746a6e039", + "sha256:ce615c92d90df8373d9e13acddd154152645c0dc060871abf6bd43809673d20a", + "sha256:d29338556a59423d9ff7b6eb0cb89ead2b0875e08fe522f3e068b955c3e7b59b", + "sha256:d8a993c0a0ffd5f2d3bda23d0cd75e7086736f8f8268de8a82fbc4bd0ac6791e", + "sha256:d9c727bbcf0065cbb20f39d2b4f932f8fa1631c3e01fcedc979bd4f51fe051c5", + "sha256:dac37cf08fcf2094159922edc7a2784cfcc5c70f8354469f79ed085f0328ebdf", + "sha256:dd829712de97753367153ed84f2de752b86cd1f7a88b55a3a775eb52eafe8a94", + "sha256:e54ddd0bb8fb626aa1f9ba7b36629564544954fff9669b15da3610c22b9a0991", + "sha256:e77c90ab5997e85901da85131fd36acd0ed2221368199b65f0d11bca44549711", + "sha256:ebedc192abbc7fd13c5ee800e83a6df252bec691eb2c4bedc9f8b2e2903f5e2a", + "sha256:ef71561f82a89af6cfcbee47f0fabfdb6e63788a9258e913955d89fdd96902ab", + "sha256:f0a47efb1dbef13af9c9a54a94a0b814902e547b7f21acb29434504d18f36e3a", + "sha256:f4f2ca6df64cbdd27f27b34f35adb640b5d2d77264228554e68deda54456eb11", + "sha256:fb02e4257376ae25c6dd95a5aec377f9b18c09be6ebdefa7ad209b9137b73d48" ], - "markers": "python_version >= '3.6'", - "version": "==2023.6.3" + "markers": "python_version >= '3.7'", + "version": "==2023.10.3" }, "reportlab": { "hashes": [ - "sha256:07fdd968df7941c2bfb67b9bb4532f424992dfafc71b72a4e4b291ff707e6b0e", - "sha256:090ea99ff829d918f7b6140594373b1340a34e1e6876eddae5aa06662ec10d64", - "sha256:109009b02fc225882ea766a5ed8be0ef473fa1356e252a3f651a6aa89b4a195f", - "sha256:1dd0307b2b13b0482ac8314fd793fbbce263a428b189371addf0466784e1d597", - "sha256:236a6483210049205f6180d7a7595d0ca2e4ce343d83cc94ca719a4145809c6f", - "sha256:26c25ea4afa8b92a2c14f4edc41c8fc30505745ce84cae86538e80cacadd7ae2", - "sha256:2a0bc7a1d64fe754b62e175ba0cf47a630b529c0488ec9ac4e4c7655e295ea4d", - "sha256:2c9b0861d8f40d7a24b094b8834f6a489b9e8c70bceaa7fa98237eed229671ce", - "sha256:39e92fa4ab2a8f0f2cc051d9c1e3acb881340c07ef59c0c8b627861343d653c0", - "sha256:3a62e51a4a47616896bd0f1e9cc3fbfb174b713794a5031a34b84f69dbe01775", - "sha256:3fd1ffdd5204301eb4c290a5752ac62f44d2d0b262e02e35a1e5234c13e14662", - "sha256:498b4ec7e73426de64c6bf6ec03c5b3f10dedf5db8a9e13fdf195f95a3d065aa", - "sha256:4c599645af9b5b2241a23e977a82c965a59c24cd94b2600b8d34373c66cad763", - "sha256:4fa3cdf490f3828b055381e8c7dc7819b3e5f7a442d7af7a8f90e9806a7fff51", - "sha256:55a070206580e161b6bbe1a96abf816c18d4c2c225d49916654714c93d842835", - "sha256:666bdba4958b348460a765c48b8c0640e7085540846ed9494f47d8651604b33c", - "sha256:69f41295d696c822224334f0994f1f107df7efed72211d45a1118696f1427c84", - "sha256:6dfcf7bd6db5d80711cbbd0996b6e7a79cc414ca81457960367df11d2860f92a", - "sha256:71cf73f9907c444ef663ea653dbac24af07c307079572c3ff8f20ad1463af3b7", - "sha256:72ec333f089b4fce5a6d740ed0a1963a3994146be195722da0d8e14d4a7e1600", - "sha256:759495c2b8c15cb0d6b539c246896029e4cde42a896c3956f77e311c5f6b0807", - "sha256:7a7c3369fa618eca79f9554ce06c618a5e738e592d61d96aa09b2457ca3ea410", - "sha256:8b1215facead57cc5325aef4229ef886e85d270b2ba02080fb5809ce9d2b81b4", - "sha256:907f7cd4832bb295d0c1573de15cc5aab5988282caf2ee7a2b1276fb6cdf502b", - "sha256:93e229519d046491b798f2c12dbbf2f3e237e89589aa5cbb5e1d8c1a978816db", - "sha256:a12049314497d872f6788f811e2b331654db207937f8a2fb34ff3e3cd9897faa", - "sha256:a8dddc52e0e486291be0ad39184da0607fae9cc665fdba1881211de9cfc0b332", - "sha256:adf78ccb2defad5b6ecb2e2e9f2a672719b0a8e2278592a7d77f6c220a042388", - "sha256:b13cebf4e397bba14542bcd023338b6ff2c151a3a12aabca89eecbf972cb361a", - "sha256:b3648f3c340b6b6aabf9352341478c708cee6f00c5cd5c902311fcf4ce870f3c", - "sha256:b6a1b685da0b9a8000bb980e02d9d5be202d0cc539af113b661c76c051fca6f1", - "sha256:b777ddc57b2d3366cbc540616034cdc1089ca0a31fefc907028e1dd62a6bf16c", - "sha256:bb83df8f7840321d34cb5b24c972c617a8c1716c8a36e5050fff56adf5891b8c", - "sha256:c07ec796a2a5d44bf787f2b623b6e668a389b0cafb78af34cf74554ff3bc532b", - "sha256:c40e108072379ff83dd7442159ebc249d12eb8eec15b70614953fecd2c403792", - "sha256:c4863c49602722237e35cbce5aa91af4539cc63a671f59504d2b3f3767d898cf", - "sha256:c56d701f7dc662e1d3d7fe364e66fa1339eafce54a488c2d16ec0ea49dc213c2", - "sha256:c84afd5bef6e407c80ba9f99b6abbe3ea78e8243b0f19897a871a7bcad1f749d", - "sha256:cdd206883e999278d2af656f988dfcc89eb0c175ce6d75e87b713cf1e792c0c4", - "sha256:ce85a204f46c871c8af6fa64b9bbed165456935c1d0bfb2f570a3194f6723ddb", - "sha256:cee3b6ebef5e4a8654ec5f0effeb1a2bb157ad87b0ac856871d25a805c0f2f90", - "sha256:d4cecfb48a6cfbfe2caf0fc280cecea999699e63bc98cb02254bd87b39eff677", - "sha256:db62bed0774778fdf82c609cb9efd0062f2fdcd285be527d01f6be9fd9755888", - "sha256:f51dcb39e910a853749250c0f82aced80bca3f7315e9c4ee14349eb7cab6a3f8", - "sha256:f5808e1dac6b66c109d6205ce2aebf84bb89e1a1493b7e6df38932df5ebfb9cf" + "sha256:956d5874ee56e88753cf4c49452d6a7fa54a64e049a0382bd0c0b2013a26ef9a", + "sha256:967c77f00efd918cc231cf8b6d8f4e477dc973b5c16557e3bd18dfaeb5a70234" ], - "index": "pypi", - "version": "==3.6.12" + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==4.0.7" + }, + "rich": { + "hashes": [ + "sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa", + "sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235" + ], + "markers": "python_full_version >= '3.7.0'", + "version": "==13.7.0" }, "scikit-learn": { "hashes": [ - "sha256:0e8102d5036e28d08ab47166b48c8d5e5810704daecf3a476a4282d562be9a28", - "sha256:151ac2bf65ccf363664a689b8beafc9e6aae36263db114b4ca06fbbbf827444a", - "sha256:1d54fb9e6038284548072df22fd34777e434153f7ffac72c8596f2d6987110dd", - "sha256:3a11936adbc379a6061ea32fa03338d4ca7248d86dd507c81e13af428a5bc1db", - "sha256:436aaaae2c916ad16631142488e4c82f4296af2404f480e031d866863425d2a2", - "sha256:552fd1b6ee22900cf1780d7386a554bb96949e9a359999177cf30211e6b20df6", - "sha256:6a885a9edc9c0a341cab27ec4f8a6c58b35f3d449c9d2503a6fd23e06bbd4f6a", - "sha256:7617164951c422747e7c32be4afa15d75ad8044f42e7d70d3e2e0429a50e6718", - "sha256:79970a6d759eb00a62266a31e2637d07d2d28446fca8079cf9afa7c07b0427f8", - "sha256:850a00b559e636b23901aabbe79b73dc604b4e4248ba9e2d6e72f95063765603", - "sha256:8be549886f5eda46436b6e555b0e4873b4f10aa21c07df45c4bc1735afbccd7a", - "sha256:981287869e576d42c682cf7ca96af0c6ac544ed9316328fd0d9292795c742cf5", - "sha256:9877af9c6d1b15486e18a94101b742e9d0d2f343d35a634e337411ddb57783f3", - "sha256:998d38fcec96584deee1e79cd127469b3ad6fefd1ea6c2dfc54e8db367eb396b", - "sha256:9d953531f5d9f00c90c34fa3b7d7cfb43ecff4c605dac9e4255a20b114a27369", - "sha256:ae80c08834a473d08a204d966982a62e11c976228d306a2648c575e3ead12111", - "sha256:c470f53cea065ff3d588050955c492793bb50c19a92923490d18fcb637f6383a", - "sha256:c7e28d8fa47a0b30ae1bd7a079519dd852764e31708a7804da6cb6f8b36e3630", - "sha256:ded35e810438a527e17623ac6deae3b360134345b7c598175ab7741720d7ffa7", - "sha256:ee04835fb016e8062ee9fe9074aef9b82e430504e420bff51e3e5fffe72750ca", - "sha256:fd6e2d7389542eae01077a1ee0318c4fec20c66c957f45c7aac0c6eb0fe3c612" + "sha256:0402638c9a7c219ee52c94cbebc8fcb5eb9fe9c773717965c1f4185588ad3107", + "sha256:0ee107923a623b9f517754ea2f69ea3b62fc898a3641766cb7deb2f2ce450161", + "sha256:1215e5e58e9880b554b01187b8c9390bf4dc4692eedeaf542d3273f4785e342c", + "sha256:15e1e94cc23d04d39da797ee34236ce2375ddea158b10bee3c343647d615581d", + "sha256:18424efee518a1cde7b0b53a422cde2f6625197de6af36da0b57ec502f126157", + "sha256:1d08ada33e955c54355d909b9c06a4789a729977f165b8bae6f225ff0a60ec4a", + "sha256:3271552a5eb16f208a6f7f617b8cc6d1f137b52c8a1ef8edf547db0259b2c9fb", + "sha256:35a22e8015048c628ad099da9df5ab3004cdbf81edc75b396fd0cff8699ac58c", + "sha256:535805c2a01ccb40ca4ab7d081d771aea67e535153e35a1fd99418fcedd1648a", + "sha256:5b2de18d86f630d68fe1f87af690d451388bb186480afc719e5f770590c2ef6c", + "sha256:61a6efd384258789aa89415a410dcdb39a50e19d3d8410bd29be365bcdd512d5", + "sha256:64381066f8aa63c2710e6b56edc9f0894cc7bf59bd71b8ce5613a4559b6145e0", + "sha256:67f37d708f042a9b8d59551cf94d30431e01374e00dc2645fa186059c6c5d78b", + "sha256:6c43290337f7a4b969d207e620658372ba3c1ffb611f8bc2b6f031dc5c6d1d03", + "sha256:6fb6bc98f234fda43163ddbe36df8bcde1d13ee176c6dc9b92bb7d3fc842eb66", + "sha256:763f0ae4b79b0ff9cca0bf3716bcc9915bdacff3cebea15ec79652d1cc4fa5c9", + "sha256:785a2213086b7b1abf037aeadbbd6d67159feb3e30263434139c98425e3dcfcf", + "sha256:8db94cd8a2e038b37a80a04df8783e09caac77cbe052146432e67800e430c028", + "sha256:a19f90f95ba93c1a7f7924906d0576a84da7f3b2282ac3bfb7a08a32801add93", + "sha256:a2f54c76accc15a34bfb9066e6c7a56c1e7235dda5762b990792330b52ccfb05", + "sha256:b8692e395a03a60cd927125eef3a8e3424d86dde9b2370d544f0ea35f78a8073", + "sha256:cb06f8dce3f5ddc5dee1715a9b9f19f20d295bed8e3cd4fa51e1d050347de525", + "sha256:dc9002fc200bed597d5d34e90c752b74df516d592db162f756cc52836b38fe0e", + "sha256:e326c0eb5cf4d6ba40f93776a20e9a7a69524c4db0757e7ce24ba222471ee8a1", + "sha256:ed932ea780517b00dae7431e031faae6b49b20eb6950918eb83bd043237950e0", + "sha256:fc4144a5004a676d5022b798d9e573b05139e77f271253a4703eed295bde0433" ], "index": "pypi", - "version": "==1.3.0" + "markers": "python_version >= '3.8'", + "version": "==1.3.2" }, "scipy": { "hashes": [ - "sha256:02b567e722d62bddd4ac253dafb01ce7ed8742cf8031aea030a41414b86c1125", - "sha256:1166514aa3bbf04cb5941027c6e294a000bba0cf00f5cdac6c77f2dad479b434", - "sha256:1da52b45ce1a24a4a22db6c157c38b39885a990a566748fc904ec9f03ed8c6ba", - "sha256:23b22fbeef3807966ea42d8163322366dd89da9bebdc075da7034cee3a1441ca", - "sha256:28d2cab0c6ac5aa131cc5071a3a1d8e1366dad82288d9ec2ca44df78fb50e649", - "sha256:2ef0fbc8bcf102c1998c1f16f15befe7cffba90895d6e84861cd6c6a33fb54f6", - "sha256:3b69b90c9419884efeffaac2c38376d6ef566e6e730a231e15722b0ab58f0328", - "sha256:4b93ec6f4c3c4d041b26b5f179a6aab8f5045423117ae7a45ba9710301d7e462", - "sha256:4e53a55f6a4f22de01ffe1d2f016e30adedb67a699a310cdcac312806807ca81", - "sha256:6311e3ae9cc75f77c33076cb2794fb0606f14c8f1b1c9ff8ce6005ba2c283621", - "sha256:65b77f20202599c51eb2771d11a6b899b97989159b7975e9b5259594f1d35ef4", - "sha256:6cc6b33139eb63f30725d5f7fa175763dc2df6a8f38ddf8df971f7c345b652dc", - "sha256:70de2f11bf64ca9921fda018864c78af7147025e467ce9f4a11bc877266900a6", - "sha256:70ebc84134cf0c504ce6a5f12d6db92cb2a8a53a49437a6bb4edca0bc101f11c", - "sha256:83606129247e7610b58d0e1e93d2c5133959e9cf93555d3c27e536892f1ba1f2", - "sha256:93d07494a8900d55492401917a119948ed330b8c3f1d700e0b904a578f10ead4", - "sha256:9c4e3ae8a716c8b3151e16c05edb1daf4cb4d866caa385e861556aff41300c14", - "sha256:9dd4012ac599a1e7eb63c114d1eee1bcfc6dc75a29b589ff0ad0bb3d9412034f", - "sha256:9e3fb1b0e896f14a85aa9a28d5f755daaeeb54c897b746df7a55ccb02b340f33", - "sha256:a0aa8220b89b2e3748a2836fbfa116194378910f1a6e78e4675a095bcd2c762d", - "sha256:d3b3c8924252caaffc54d4a99f1360aeec001e61267595561089f8b5900821bb", - "sha256:e013aed00ed776d790be4cb32826adb72799c61e318676172495383ba4570aa4", - "sha256:f3e7a8867f307e3359cc0ed2c63b61a1e33a19080f92fe377bc7d49f646f2ec1" + "sha256:00f325434b6424952fbb636506f0567898dca7b0f7654d48f1c382ea338ce9a3", + "sha256:033c3fd95d55012dd1148b201b72ae854d5086d25e7c316ec9850de4fe776929", + "sha256:0d3a136ae1ff0883fffbb1b05b0b2fea251cb1046a5077d0b435a1839b3e52b7", + "sha256:15f237e890c24aef6891c7d008f9ff7e758c6ef39a2b5df264650eb7900403c0", + "sha256:370f569c57e1d888304052c18e58f4a927338eafdaef78613c685ca2ea0d1fa0", + "sha256:3e1a8a4657673bfae1e05e1e1d6e94b0cabe5ed0c7c144c8aa7b7dbb774ce5c1", + "sha256:4b4bb134c7aa457e26cc6ea482b016fef45db71417d55cc6d8f43d799cdf9ef2", + "sha256:5305792c7110e32ff155aed0df46aa60a60fc6e52cd4ee02cdeb67eaccd5356e", + "sha256:5664e364f90be8219283eeb844323ff8cd79d7acbd64e15eb9c46b9bc7f6a42a", + "sha256:5f290cf561a4b4edfe8d1001ee4be6da60c1c4ea712985b58bf6bc62badee221", + "sha256:74e89dc5e00201e71dd94f5f382ab1c6a9f3ff806c7d24e4e90928bb1aafb280", + "sha256:7abda0e62ef00cde826d441485e2e32fe737bdddee3324e35c0e01dee65e2a88", + "sha256:90271dbde4be191522b3903fc97334e3956d7cfb9cce3f0718d0ab4fd7d8bfd6", + "sha256:91770cb3b1e81ae19463b3c235bf1e0e330767dca9eb4cd73ba3ded6c4151e4d", + "sha256:925c6f09d0053b1c0f90b2d92d03b261e889b20d1c9b08a3a51f61afc5f58165", + "sha256:9885e3e4f13b2bd44aaf2a1a6390a11add9f48d5295f7a592393ceb8991577a3", + "sha256:9ea7f579182d83d00fed0e5c11a4aa5ffe01460444219dedc448a36adf0c3917", + "sha256:a63d1ec9cadecce838467ce0631c17c15c7197ae61e49429434ba01d618caa83", + "sha256:bae66a2d7d5768eaa33008fa5a974389f167183c87bf39160d3fefe6664f8ddc", + "sha256:bba4d955f54edd61899776bad459bf7326e14b9fa1c552181f0479cc60a568cd", + "sha256:c77da50c9a91e23beb63c2a711ef9e9ca9a2060442757dffee34ea41847d8156", + "sha256:d2f6dee6cbb0e263b8142ed587bc93e3ed5e777f1f75448d24fb923d9fd4dce6", + "sha256:dfcc1552add7cb7c13fb70efcb2389d0624d571aaf2c80b04117e2755a0c5d15", + "sha256:e04aa19acc324a1a076abb4035dabe9b64badb19f76ad9c798bde39d41025cdc", + "sha256:e1f97cd89c0fe1a0685f8f89d85fa305deb3067d0668151571ba50913e445820" ], - "index": "pypi", - "version": "==1.8.1" + "markers": "python_version < '3.13' and python_version >= '3.9'", + "version": "==1.11.3" }, "setproctitle": { "hashes": [ - "sha256:1c5d5dad7c28bdd1ec4187d818e43796f58a845aa892bb4481587010dc4d362b", - "sha256:1c8d9650154afaa86a44ff195b7b10d683c73509d085339d174e394a22cccbb9", - "sha256:1f0cde41857a644b7353a0060b5f94f7ba7cf593ebde5a1094da1be581ac9a31", - "sha256:1f29b75e86260b0ab59adb12661ef9f113d2f93a59951373eb6d68a852b13e83", - "sha256:1fa1a0fbee72b47dc339c87c890d3c03a72ea65c061ade3204f285582f2da30f", - "sha256:1ff863a20d1ff6ba2c24e22436a3daa3cd80be1dfb26891aae73f61b54b04aca", - "sha256:265ecbe2c6eafe82e104f994ddd7c811520acdd0647b73f65c24f51374cf9494", - "sha256:288943dec88e178bb2fd868adf491197cc0fc8b6810416b1c6775e686bab87fe", - "sha256:2a97d51c17d438cf5be284775a322d57b7ca9505bb7e118c28b1824ecaf8aeaa", - "sha256:2e3ac25bfc4a0f29d2409650c7532d5ddfdbf29f16f8a256fc31c47d0dc05172", - "sha256:2fbd8187948284293f43533c150cd69a0e4192c83c377da837dbcd29f6b83084", - "sha256:37ece938110cab2bb3957e3910af8152ca15f2b6efdf4f2612e3f6b7e5459b80", - "sha256:4058564195b975ddc3f0462375c533cce310ccdd41b80ac9aed641c296c3eff4", - "sha256:4749a2b0c9ac52f864d13cee94546606f92b981b50e46226f7f830a56a9dc8e1", - "sha256:4bba3be4c1fabf170595b71f3af46c6d482fbe7d9e0563999b49999a31876f77", - "sha256:4d8938249a7cea45ab7e1e48b77685d0f2bab1ebfa9dde23e94ab97968996a7c", - "sha256:5194b4969f82ea842a4f6af2f82cd16ebdc3f1771fb2771796e6add9835c1973", - "sha256:55ce1e9925ce1765865442ede9dca0ba9bde10593fcd570b1f0fa25d3ec6b31c", - "sha256:570d255fd99c7f14d8f91363c3ea96bd54f8742275796bca67e1414aeca7d8c3", - "sha256:587c7d6780109fbd8a627758063d08ab0421377c0853780e5c356873cdf0f077", - "sha256:589be87172b238f839e19f146b9ea47c71e413e951ef0dc6db4218ddacf3c202", - "sha256:5b932c3041aa924163f4aab970c2f0e6b4d9d773f4d50326e0ea1cd69240e5c5", - "sha256:5fb4f769c02f63fac90989711a3fee83919f47ae9afd4758ced5d86596318c65", - "sha256:630f6fe5e24a619ccf970c78e084319ee8be5be253ecc9b5b216b0f474f5ef18", - "sha256:65d884e22037b23fa25b2baf1a3316602ed5c5971eb3e9d771a38c3a69ce6e13", - "sha256:6c877691b90026670e5a70adfbcc735460a9f4c274d35ec5e8a43ce3f8443005", - "sha256:710e16fa3bade3b026907e4a5e841124983620046166f355bbb84be364bf2a02", - "sha256:7a55fe05f15c10e8c705038777656fe45e3bd676d49ad9ac8370b75c66dd7cd7", - "sha256:7aa0aac1711fadffc1d51e9d00a3bea61f68443d6ac0241a224e4d622489d665", - "sha256:7f0bed90a216ef28b9d227d8d73e28a8c9b88c0f48a082d13ab3fa83c581488f", - "sha256:7f2719a398e1a2c01c2a63bf30377a34d0b6ef61946ab9cf4d550733af8f1ef1", - "sha256:7fe9df7aeb8c64db6c34fc3b13271a363475d77bc157d3f00275a53910cb1989", - "sha256:88486e6cce2a18a033013d17b30a594f1c5cb42520c49c19e6ade40b864bb7ff", - "sha256:8e4f8f12258a8739c565292a551c3db62cca4ed4f6b6126664e2381acb4931bf", - "sha256:8ff3c8cb26afaed25e8bca7b9dd0c1e36de71f35a3a0706b5c0d5172587a3827", - "sha256:9124bedd8006b0e04d4e8a71a0945da9b67e7a4ab88fdad7b1440dc5b6122c42", - "sha256:92c626edc66169a1b09e9541b9c0c9f10488447d8a2b1d87c8f0672e771bc927", - "sha256:a149a5f7f2c5a065d4e63cb0d7a4b6d3b66e6e80f12e3f8827c4f63974cbf122", - "sha256:a47d97a75fd2d10c37410b180f67a5835cb1d8fdea2648fd7f359d4277f180b9", - "sha256:a499fff50387c1520c085a07578a000123f519e5f3eee61dd68e1d301659651f", - "sha256:a8e0881568c5e6beff91ef73c0ec8ac2a9d3ecc9edd6bd83c31ca34f770910c4", - "sha256:ab45146c71ca6592c9cc8b354a2cc9cc4843c33efcbe1d245d7d37ce9696552d", - "sha256:b2c9cb2705fc84cb8798f1ba74194f4c080aaef19d9dae843591c09b97678e98", - "sha256:b34baef93bfb20a8ecb930e395ccd2ae3268050d8cf4fe187de5e2bd806fd796", - "sha256:b617f12c9be61e8f4b2857be4a4319754756845dbbbd9c3718f468bbb1e17bcb", - "sha256:b9fb97907c830d260fa0658ed58afd48a86b2b88aac521135c352ff7fd3477fd", - "sha256:bae283e85fc084b18ffeb92e061ff7ac5af9e183c9d1345c93e178c3e5069cbe", - "sha256:c2c46200656280a064073447ebd363937562debef329482fd7e570c8d498f806", - "sha256:c8a09d570b39517de10ee5b718730e171251ce63bbb890c430c725c8c53d4484", - "sha256:c91b9bc8985d00239f7dc08a49927a7ca1ca8a6af2c3890feec3ed9665b6f91e", - "sha256:ca58cd260ea02759238d994cfae844fc8b1e206c684beb8f38877dcab8451dfc", - "sha256:d7d17c8bd073cbf8d141993db45145a70b307385b69171d6b54bcf23e5d644de", - "sha256:dad42e676c5261eb50fdb16bdf3e2771cf8f99a79ef69ba88729aeb3472d8575", - "sha256:db684d6bbb735a80bcbc3737856385b55d53f8a44ce9b46e9a5682c5133a9bf7", - "sha256:de3a540cd1817ede31f530d20e6a4935bbc1b145fd8f8cf393903b1e02f1ae76", - "sha256:e00c9d5c541a2713ba0e657e0303bf96ddddc412ef4761676adc35df35d7c246", - "sha256:e1aafc91cbdacc9e5fe712c52077369168e6b6c346f3a9d51bf600b53eae56bb", - "sha256:e425be62524dc0c593985da794ee73eb8a17abb10fe692ee43bb39e201d7a099", - "sha256:e43f315c68aa61cbdef522a2272c5a5b9b8fd03c301d3167b5e1343ef50c676c", - "sha256:e49ae693306d7624015f31cb3e82708916759d592c2e5f72a35c8f4cc8aef258", - "sha256:e5c50e164cd2459bc5137c15288a9ef57160fd5cbf293265ea3c45efe7870865", - "sha256:e8579a43eafd246e285eb3a5b939e7158073d5087aacdd2308f23200eac2458b", - "sha256:e85e50b9c67854f89635a86247412f3ad66b132a4d8534ac017547197c88f27d", - "sha256:e932089c35a396dc31a5a1fc49889dd559548d14cb2237adae260382a090382e", - "sha256:f0452282258dfcc01697026a8841258dd2057c4438b43914b611bccbcd048f10", - "sha256:f4bfc89bd33ebb8e4c0e9846a09b1f5a4a86f5cb7a317e75cc42fee1131b4f4f", - "sha256:fa2f50678f04fda7a75d0fe5dd02bbdd3b13cbe6ed4cf626e4472a7ccf47ae94", - "sha256:faec934cfe5fd6ac1151c02e67156c3f526e82f96b24d550b5d51efa4a5527c6", - "sha256:fcd3cf4286a60fdc95451d8d14e0389a6b4f5cebe02c7f2609325eb016535963", - "sha256:fe8a988c7220c002c45347430993830666e55bc350179d91fcee0feafe64e1d4", - "sha256:fed18e44711c5af4b681c2b3b18f85e6f0f1b2370a28854c645d636d5305ccd8", - "sha256:ffc61a388a5834a97953d6444a2888c24a05f2e333f9ed49f977a87bb1ad4761" + "sha256:00e6e7adff74796ef12753ff399491b8827f84f6c77659d71bd0b35870a17d8f", + "sha256:059f4ce86f8cc92e5860abfc43a1dceb21137b26a02373618d88f6b4b86ba9b2", + "sha256:088b9efc62d5aa5d6edf6cba1cf0c81f4488b5ce1c0342a8b67ae39d64001120", + "sha256:0d3a953c50776751e80fe755a380a64cb14d61e8762bd43041ab3f8cc436092f", + "sha256:1342f4fdb37f89d3e3c1c0a59d6ddbedbde838fff5c51178a7982993d238fe4f", + "sha256:184239903bbc6b813b1a8fc86394dc6ca7d20e2ebe6f69f716bec301e4b0199d", + "sha256:195c961f54a09eb2acabbfc90c413955cf16c6e2f8caa2adbf2237d1019c7dd8", + "sha256:1f5d9027eeda64d353cf21a3ceb74bb1760bd534526c9214e19f052424b37e42", + "sha256:200620c3b15388d7f3f97e0ae26599c0c378fdf07ae9ac5a13616e933cbd2086", + "sha256:200ede6fd11233085ba9b764eb055a2a191fb4ffb950c68675ac53c874c22e20", + "sha256:21112fcd2195d48f25760f0eafa7a76510871bbb3b750219310cf88b04456ae3", + "sha256:224602f0939e6fb9d5dd881be1229d485f3257b540f8a900d4271a2c2aa4e5f4", + "sha256:287490eb90e7a0ddd22e74c89a92cc922389daa95babc833c08cf80c84c4df0a", + "sha256:2982efe7640c4835f7355fdb4da313ad37fb3b40f5c69069912f8048f77b28c8", + "sha256:2df2b67e4b1d7498632e18c56722851ba4db5d6a0c91aaf0fd395111e51cdcf4", + "sha256:2e4a8104db15d3462e29d9946f26bed817a5b1d7a47eabca2d9dc2b995991503", + "sha256:2e71f6365744bf53714e8bd2522b3c9c1d83f52ffa6324bd7cbb4da707312cd8", + "sha256:334f7ed39895d692f753a443102dd5fed180c571eb6a48b2a5b7f5b3564908c8", + "sha256:33c5609ad51cd99d388e55651b19148ea99727516132fb44680e1f28dd0d1de9", + "sha256:37a62cbe16d4c6294e84670b59cf7adcc73faafe6af07f8cb9adaf1f0e775b19", + "sha256:38ae9a02766dad331deb06855fb7a6ca15daea333b3967e214de12cfae8f0ef5", + "sha256:38da436a0aaace9add67b999eb6abe4b84397edf4a78ec28f264e5b4c9d53cd5", + "sha256:415bfcfd01d1fbf5cbd75004599ef167a533395955305f42220a585f64036081", + "sha256:417de6b2e214e837827067048f61841f5d7fc27926f2e43954567094051aff18", + "sha256:477d3da48e216d7fc04bddab67b0dcde633e19f484a146fd2a34bb0e9dbb4a1e", + "sha256:4a6ba2494a6449b1f477bd3e67935c2b7b0274f2f6dcd0f7c6aceae10c6c6ba3", + "sha256:4fe1c49486109f72d502f8be569972e27f385fe632bd8895f4730df3c87d5ac8", + "sha256:507e8dc2891021350eaea40a44ddd887c9f006e6b599af8d64a505c0f718f170", + "sha256:53bc0d2358507596c22b02db079618451f3bd720755d88e3cccd840bafb4c41c", + "sha256:554eae5a5b28f02705b83a230e9d163d645c9a08914c0ad921df363a07cf39b1", + "sha256:59335d000c6250c35989394661eb6287187854e94ac79ea22315469ee4f4c244", + "sha256:5a740f05d0968a5a17da3d676ce6afefebeeeb5ce137510901bf6306ba8ee002", + "sha256:5bc94cf128676e8fac6503b37763adb378e2b6be1249d207630f83fc325d9b11", + "sha256:64286f8a995f2cd934082b398fc63fca7d5ffe31f0e27e75b3ca6b4efda4e353", + "sha256:664698ae0013f986118064b6676d7dcd28fefd0d7d5a5ae9497cbc10cba48fa5", + "sha256:68f960bc22d8d8e4ac886d1e2e21ccbd283adcf3c43136161c1ba0fa509088e0", + "sha256:69d565d20efe527bd8a9b92e7f299ae5e73b6c0470f3719bd66f3cd821e0d5bd", + "sha256:6a143b31d758296dc2f440175f6c8e0b5301ced3b0f477b84ca43cdcf7f2f476", + "sha256:6a249415f5bb88b5e9e8c4db47f609e0bf0e20a75e8d744ea787f3092ba1f2d0", + "sha256:6b9e62ddb3db4b5205c0321dd69a406d8af9ee1693529d144e86bd43bcb4b6c0", + "sha256:7f1d36a1e15a46e8ede4e953abb104fdbc0845a266ec0e99cc0492a4364f8c44", + "sha256:816330675e3504ae4d9a2185c46b573105d2310c20b19ea2b4596a9460a4f674", + "sha256:87e668f9561fd3a457ba189edfc9e37709261287b52293c115ae3487a24b92f6", + "sha256:897a73208da48db41e687225f355ce993167079eda1260ba5e13c4e53be7f754", + "sha256:8c331e91a14ba4076f88c29c777ad6b58639530ed5b24b5564b5ed2fd7a95452", + "sha256:950f6476d56ff7817a8fed4ab207727fc5260af83481b2a4b125f32844df513a", + "sha256:9617b676b95adb412bb69645d5b077d664b6882bb0d37bfdafbbb1b999568d85", + "sha256:9e3b99b338598de0bd6b2643bf8c343cf5ff70db3627af3ca427a5e1a1a90dd9", + "sha256:a1fcac43918b836ace25f69b1dca8c9395253ad8152b625064415b1d2f9be4fb", + "sha256:a680d62c399fa4b44899094027ec9a1bdaf6f31c650e44183b50d4c4d0ccc085", + "sha256:a6d50252377db62d6a0bb82cc898089916457f2db2041e1d03ce7fadd4a07381", + "sha256:a83ca086fbb017f0d87f240a8f9bbcf0809f3b754ee01cec928fff926542c450", + "sha256:a911b26264dbe9e8066c7531c0591cfab27b464459c74385b276fe487ca91c12", + "sha256:ab2900d111e93aff5df9fddc64cf51ca4ef2c9f98702ce26524f1acc5a786ae7", + "sha256:ab92e51cd4a218208efee4c6d37db7368fdf182f6e7ff148fb295ecddf264287", + "sha256:accb66d7b3ccb00d5cd11d8c6e07055a4568a24c95cf86109894dcc0c134cc89", + "sha256:ad6d20f9541f5f6ac63df553b6d7a04f313947f550eab6a61aa758b45f0d5657", + "sha256:aeaa71fb9568ebe9b911ddb490c644fbd2006e8c940f21cb9a1e9425bd709574", + "sha256:af2c67ae4c795d1674a8d3ac1988676fa306bcfa1e23fddb5e0bd5f5635309ca", + "sha256:af4061f67fd7ec01624c5e3c21f6b7af2ef0e6bab7fbb43f209e6506c9ce0092", + "sha256:b1067647ac7aba0b44b591936118a22847bda3c507b0a42d74272256a7a798e9", + "sha256:b5901a31012a40ec913265b64e48c2a4059278d9f4e6be628441482dd13fb8b5", + "sha256:bbbd6c7de0771c84b4aa30e70b409565eb1fc13627a723ca6be774ed6b9d9fa3", + "sha256:bdfd7254745bb737ca1384dee57e6523651892f0ea2a7344490e9caefcc35e64", + "sha256:c05ac48ef16ee013b8a326c63e4610e2430dbec037ec5c5b58fcced550382b74", + "sha256:c1c84beab776b0becaa368254801e57692ed749d935469ac10e2b9b825dbdd8e", + "sha256:c32c41ace41f344d317399efff4cffb133e709cec2ef09c99e7a13e9f3b9483c", + "sha256:c3ba57029c9c50ecaf0c92bb127224cc2ea9fda057b5d99d3f348c9ec2855ad3", + "sha256:c7951820b77abe03d88b114b998867c0f99da03859e5ab2623d94690848d3e45", + "sha256:c913e151e7ea01567837ff037a23ca8740192880198b7fbb90b16d181607caae", + "sha256:c9a402881ec269d0cc9c354b149fc29f9ec1a1939a777f1c858cdb09c7a261df", + "sha256:cbf16381c7bf7f963b58fb4daaa65684e10966ee14d26f5cc90f07049bfd8c1e", + "sha256:d4460795a8a7a391e3567b902ec5bdf6c60a47d791c3b1d27080fc203d11c9dc", + "sha256:d7f27e0268af2d7503386e0e6be87fb9b6657afd96f5726b733837121146750d", + "sha256:d876d355c53d975c2ef9c4f2487c8f83dad6aeaaee1b6571453cb0ee992f55f6", + "sha256:da0d57edd4c95bf221b2ebbaa061e65b1788f1544977288bdf95831b6e44e44d", + "sha256:ddedd300cd690a3b06e7eac90ed4452348b1348635777ce23d460d913b5b63c3", + "sha256:df3f4274b80709d8bcab2f9a862973d453b308b97a0b423a501bcd93582852e3", + "sha256:e18b7bd0898398cc97ce2dfc83bb192a13a087ef6b2d5a8a36460311cb09e775", + "sha256:e5119a211c2e98ff18b9908ba62a3bd0e3fabb02a29277a7232a6fb4b2560aa0", + "sha256:e5e08e232b78ba3ac6bc0d23ce9e2bee8fad2be391b7e2da834fc9a45129eb87", + "sha256:eae8988e78192fd1a3245a6f4f382390b61bce6cfcc93f3809726e4c885fa68d", + "sha256:f05e66746bf9fe6a3397ec246fe481096664a9c97eb3fea6004735a4daf867fd", + "sha256:f1da82c3e11284da4fcbf54957dafbf0655d2389cd3d54e4eaba636faf6d117a", + "sha256:f38d48abc121263f3b62943f84cbaede05749047e428409c2c199664feb6abc7", + "sha256:f5e7266498cd31a4572378c61920af9f6b4676a73c299fce8ba93afd694f8ae7", + "sha256:fc74e84fdfa96821580fb5e9c0b0777c1c4779434ce16d3d62a9c4d8c710df39", + "sha256:ff814dea1e5c492a4980e3e7d094286077054e7ea116cbeda138819db194b2cd" ], "index": "pypi", - "version": "==1.3.2" + "markers": "python_version >= '3.7'", + "version": "==1.3.3" }, "six": { "hashes": [ @@ -1748,44 +1811,46 @@ }, "tika-client": { "hashes": [ - "sha256:60950b7956932ed6f16f881d490c976c508fac03963ac388415fb7fdac5043cc", - "sha256:ac6bea262dfcf1526416f25c27a88de3ce62615d1b2ceea3a2c4eeaaf054cffa" + "sha256:b4271a82f1416a1a62ed9100640b3bc16b1014c244ee787b4be5becd0fdcd304", + "sha256:f719fbf20f9ef47d12132b38c5848024b260e79c5f0b9ae5ff95c0b2fe3ba350" ], "index": "pypi", - "version": "==0.4.0" + "markers": "python_version >= '3.8'", + "version": "==0.5.0" }, "tornado": { "hashes": [ - "sha256:05615096845cf50a895026f749195bf0b10b8909f9be672f50b0fe69cba368e4", - "sha256:0c325e66c8123c606eea33084976c832aa4e766b7dff8aedd7587ea44a604cdf", - "sha256:29e71c847a35f6e10ca3b5c2990a52ce38b233019d8e858b755ea6ce4dcdd19d", - "sha256:4b927c4f19b71e627b13f3db2324e4ae660527143f9e1f2e2fb404f3a187e2ba", - "sha256:5b17b1cf5f8354efa3d37c6e28fdfd9c1c1e5122f2cb56dac121ac61baa47cbe", - "sha256:6a0848f1aea0d196a7c4f6772197cbe2abc4266f836b0aac76947872cd29b411", - "sha256:7efcbcc30b7c654eb6a8c9c9da787a851c18f8ccd4a5a3a95b05c7accfa068d2", - "sha256:834ae7540ad3a83199a8da8f9f2d383e3c3d5130a328889e4cc991acc81e87a0", - "sha256:b46a6ab20f5c7c1cb949c72c1994a4585d2eaa0be4853f50a03b5031e964fc7c", - "sha256:c2de14066c4a38b4ecbbcd55c5cc4b5340eb04f1c5e81da7451ef555859c833f", - "sha256:c367ab6c0393d71171123ca5515c61ff62fe09024fa6bf299cd1339dc9456829" + "sha256:1bd19ca6c16882e4d37368e0152f99c099bad93e0950ce55e71daed74045908f", + "sha256:22d3c2fa10b5793da13c807e6fc38ff49a4f6e1e3868b0a6f4164768bb8e20f5", + "sha256:502fba735c84450974fec147340016ad928d29f1e91f49be168c0a4c18181e1d", + "sha256:65ceca9500383fbdf33a98c0087cb975b2ef3bfb874cb35b8de8740cf7f41bd3", + "sha256:71a8db65160a3c55d61839b7302a9a400074c9c753040455494e2af74e2501f2", + "sha256:7ac51f42808cca9b3613f51ffe2a965c8525cb1b00b7b2d56828b8045354f76a", + "sha256:7d01abc57ea0dbb51ddfed477dfe22719d376119844e33c661d873bf9c0e4a16", + "sha256:805d507b1f588320c26f7f097108eb4023bbaa984d63176d1652e184ba24270a", + "sha256:9dc4444c0defcd3929d5c1eb5706cbe1b116e762ff3e0deca8b715d14bf6ec17", + "sha256:ceb917a50cd35882b57600709dd5421a418c29ddc852da8bcdab1f0db33406b0", + "sha256:e7d8db41c0181c80d76c982aacc442c0783a2c54d6400fe028954201a2e032fe" ], "markers": "python_version >= '3.8'", - "version": "==6.3.2" + "version": "==6.3.3" }, "tqdm": { "hashes": [ - "sha256:1871fb68a86b8fb3b59ca4cdd3dcccbc7e6d613eeed31f4c332531977b89beb5", - "sha256:c4f53a17fe37e132815abceec022631be8ffe1b9381c2e6e30aa70edc99e9671" + "sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386", + "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7" ], "index": "pypi", - "version": "==4.65.0" + "markers": "python_version >= '3.7'", + "version": "==4.66.1" }, "typing-extensions": { "hashes": [ - "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36", - "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2" + "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", + "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" ], - "markers": "python_version < '3.10'", - "version": "==4.7.1" + "markers": "python_version < '3.11'", + "version": "==4.8.0" }, "tzdata": { "hashes": [ @@ -1797,65 +1862,66 @@ }, "tzlocal": { "hashes": [ - "sha256:46eb99ad4bdb71f3f72b7d24f4267753e240944ecfc16f25d2719ba89827a803", - "sha256:f3596e180296aaf2dbd97d124fe76ae3a0e3d32b258447de7b939b3fd4be992f" + "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8", + "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e" ], - "markers": "python_version >= '3.7'", - "version": "==5.0.1" + "markers": "python_version >= '3.8'", + "version": "==5.2" }, "uvicorn": { "extras": [ "standard" ], "hashes": [ - "sha256:1d55d46b83ee4ce82b4e82f621f2050adb3eb7b5481c13f9af1744951cae2f1f", - "sha256:da9b0c8443b2d7ee9db00a345f1eee6db7317432c9d4400f5049cc8d358383be" + "sha256:09c8e5a79dc466bdf28dead50093957db184de356fcdc48697bad3bde4c2588e", + "sha256:7c84fea70c619d4a710153482c0d230929af7bcf76c7bfa6de151f0a3a80121e" ], - "index": "pypi", - "version": "==0.23.1" + "markers": "python_version >= '3.8'", + "version": "==0.24.0.post1" }, "uvloop": { "hashes": [ - "sha256:0949caf774b9fcefc7c5756bacbbbd3fc4c05a6b7eebc7c7ad6f825b23998d6d", - "sha256:0ddf6baf9cf11a1a22c71487f39f15b2cf78eb5bde7e5b45fbb99e8a9d91b9e1", - "sha256:1436c8673c1563422213ac6907789ecb2b070f5939b9cbff9ef7113f2b531595", - "sha256:23609ca361a7fc587031429fa25ad2ed7242941adec948f9d10c045bfecab06b", - "sha256:2a6149e1defac0faf505406259561bc14b034cdf1d4711a3ddcdfbaa8d825a05", - "sha256:2deae0b0fb00a6af41fe60a675cec079615b01d68beb4cc7b722424406b126a8", - "sha256:307958f9fc5c8bb01fad752d1345168c0abc5d62c1b72a4a8c6c06f042b45b20", - "sha256:30babd84706115626ea78ea5dbc7dd8d0d01a2e9f9b306d24ca4ed5796c66ded", - "sha256:3378eb62c63bf336ae2070599e49089005771cc651c8769aaad72d1bd9385a7c", - "sha256:3d97672dc709fa4447ab83276f344a165075fd9f366a97b712bdd3fee05efae8", - "sha256:3db8de10ed684995a7f34a001f15b374c230f7655ae840964d51496e2f8a8474", - "sha256:3ebeeec6a6641d0adb2ea71dcfb76017602ee2bfd8213e3fcc18d8f699c5104f", - "sha256:45cea33b208971e87a31c17622e4b440cac231766ec11e5d22c76fab3bf9df62", - "sha256:6708f30db9117f115eadc4f125c2a10c1a50d711461699a0cbfaa45b9a78e376", - "sha256:68532f4349fd3900b839f588972b3392ee56042e440dd5873dfbbcd2cc67617c", - "sha256:6aafa5a78b9e62493539456f8b646f85abc7093dd997f4976bb105537cf2635e", - "sha256:7d37dccc7ae63e61f7b96ee2e19c40f153ba6ce730d8ba4d3b4e9738c1dccc1b", - "sha256:864e1197139d651a76c81757db5eb199db8866e13acb0dfe96e6fc5d1cf45fc4", - "sha256:8887d675a64cfc59f4ecd34382e5b4f0ef4ae1da37ed665adba0c2badf0d6578", - "sha256:8efcadc5a0003d3a6e887ccc1fb44dec25594f117a94e3127954c05cf144d811", - "sha256:9b09e0f0ac29eee0451d71798878eae5a4e6a91aa275e114037b27f7db72702d", - "sha256:a4aee22ece20958888eedbad20e4dbb03c37533e010fb824161b4f05e641f738", - "sha256:a5abddb3558d3f0a78949c750644a67be31e47936042d4f6c888dd6f3c95f4aa", - "sha256:c092a2c1e736086d59ac8e41f9c98f26bbf9b9222a76f21af9dfe949b99b2eb9", - "sha256:c686a47d57ca910a2572fddfe9912819880b8765e2f01dc0dd12a9bf8573e539", - "sha256:cbbe908fda687e39afd6ea2a2f14c2c3e43f2ca88e3a11964b297822358d0e6c", - "sha256:ce9f61938d7155f79d3cb2ffa663147d4a76d16e08f65e2c66b77bd41b356718", - "sha256:dbbaf9da2ee98ee2531e0c780455f2841e4675ff580ecf93fe5c48fe733b5667", - "sha256:f1e507c9ee39c61bfddd79714e4f85900656db1aec4d40c6de55648e85c2799c", - "sha256:ff3d00b70ce95adce264462c930fbaecb29718ba6563db354608f37e49e09024" + "sha256:0246f4fd1bf2bf702e06b0d45ee91677ee5c31242f39aab4ea6fe0c51aedd0fd", + "sha256:02506dc23a5d90e04d4f65c7791e65cf44bd91b37f24cfc3ef6cf2aff05dc7ec", + "sha256:13dfdf492af0aa0a0edf66807d2b465607d11c4fa48f4a1fd41cbea5b18e8e8b", + "sha256:2693049be9d36fef81741fddb3f441673ba12a34a704e7b4361efb75cf30befc", + "sha256:271718e26b3e17906b28b67314c45d19106112067205119dddbd834c2b7ce797", + "sha256:2df95fca285a9f5bfe730e51945ffe2fa71ccbfdde3b0da5772b4ee4f2e770d5", + "sha256:31e672bb38b45abc4f26e273be83b72a0d28d074d5b370fc4dcf4c4eb15417d2", + "sha256:34175c9fd2a4bc3adc1380e1261f60306344e3407c20a4d684fd5f3be010fa3d", + "sha256:45bf4c24c19fb8a50902ae37c5de50da81de4922af65baf760f7c0c42e1088be", + "sha256:472d61143059c84947aa8bb74eabbace30d577a03a1805b77933d6bd13ddebbd", + "sha256:47bf3e9312f63684efe283f7342afb414eea4d3011542155c7e625cd799c3b12", + "sha256:492e2c32c2af3f971473bc22f086513cedfc66a130756145a931a90c3958cb17", + "sha256:4ce6b0af8f2729a02a5d1575feacb2a94fc7b2e983868b009d51c9a9d2149bef", + "sha256:5138821e40b0c3e6c9478643b4660bd44372ae1e16a322b8fc07478f92684e24", + "sha256:5588bd21cf1fcf06bded085f37e43ce0e00424197e7c10e77afd4bbefffef428", + "sha256:570fc0ed613883d8d30ee40397b79207eedd2624891692471808a95069a007c1", + "sha256:5a05128d315e2912791de6088c34136bfcdd0c7cbc1cf85fd6fd1bb321b7c849", + "sha256:5daa304d2161d2918fa9a17d5635099a2f78ae5b5960e742b2fcfbb7aefaa593", + "sha256:5f17766fb6da94135526273080f3455a112f82570b2ee5daa64d682387fe0dcd", + "sha256:6e3d4e85ac060e2342ff85e90d0c04157acb210b9ce508e784a944f852a40e67", + "sha256:7010271303961c6f0fe37731004335401eb9075a12680738731e9c92ddd96ad6", + "sha256:7207272c9520203fea9b93843bb775d03e1cf88a80a936ce760f60bb5add92f3", + "sha256:78ab247f0b5671cc887c31d33f9b3abfb88d2614b84e4303f1a63b46c046c8bd", + "sha256:7b1fd71c3843327f3bbc3237bedcdb6504fd50368ab3e04d0410e52ec293f5b8", + "sha256:8ca4956c9ab567d87d59d49fa3704cf29e37109ad348f2d5223c9bf761a332e7", + "sha256:91ab01c6cd00e39cde50173ba4ec68a1e578fee9279ba64f5221810a9e786533", + "sha256:cd81bdc2b8219cb4b2556eea39d2e36bfa375a2dd021404f90a62e44efaaf957", + "sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650", + "sha256:de4313d7f575474c8f5a12e163f6d89c0a878bc49219641d49e6f1444369a90e", + "sha256:e27f100e1ff17f6feeb1f33968bc185bf8ce41ca557deee9d9bbbffeb72030b7", + "sha256:f467a5fd23b4fc43ed86342641f3936a68ded707f4627622fa3f82a120e18256" ], - "version": "==0.17.0" + "version": "==0.19.0" }, "vine": { "hashes": [ - "sha256:4c9dceab6f76ed92105027c49c823800dd33cacce13bdedc5b914e3514b7fb30", - "sha256:7d3b1624a953da82ef63462013bbd271d3eb75751489f9807598e8f340bd637e" + "sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc", + "sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0" ], "markers": "python_version >= '3.6'", - "version": "==5.0.0" + "version": "==5.1.0" }, "watchdog": { "hashes": [ @@ -1888,41 +1954,95 @@ "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==3.0.0" }, "watchfiles": { "hashes": [ - "sha256:0089c6dc24d436b373c3c57657bf4f9a453b13767150d17284fc6162b2791911", - "sha256:09ea3397aecbc81c19ed7f025e051a7387feefdb789cf768ff994c1228182fda", - "sha256:176a9a7641ec2c97b24455135d58012a5be5c6217fc4d5fef0b2b9f75dbf5154", - "sha256:18b28f6ad871b82df9542ff958d0c86bb0d8310bb09eb8e87d97318a3b5273af", - "sha256:20b44221764955b1e703f012c74015306fb7e79a00c15370785f309b1ed9aa8d", - "sha256:3d7d267d27aceeeaa3de0dd161a0d64f0a282264d592e335fff7958cc0cbae7c", - "sha256:5471582658ea56fca122c0f0d0116a36807c63fefd6fdc92c71ca9a4491b6b48", - "sha256:5569fc7f967429d4bc87e355cdfdcee6aabe4b620801e2cf5805ea245c06097c", - "sha256:68dce92b29575dda0f8d30c11742a8e2b9b8ec768ae414b54f7453f27bdf9545", - "sha256:79c533ff593db861ae23436541f481ec896ee3da4e5db8962429b441bbaae16e", - "sha256:7f3920b1285a7d3ce898e303d84791b7bf40d57b7695ad549dc04e6a44c9f120", - "sha256:91633e64712df3051ca454ca7d1b976baf842d7a3640b87622b323c55f3345e7", - "sha256:945be0baa3e2440151eb3718fd8846751e8b51d8de7b884c90b17d271d34cae8", - "sha256:9afd0d69429172c796164fd7fe8e821ade9be983f51c659a38da3faaaaac44dc", - "sha256:9c75eff897786ee262c9f17a48886f4e98e6cfd335e011c591c305e5d083c056", - "sha256:b538014a87f94d92f98f34d3e6d2635478e6be6423a9ea53e4dd96210065e193", - "sha256:b6577b8c6c8701ba8642ea9335a129836347894b666dd1ec2226830e263909d3", - "sha256:c0376deac92377817e4fb8f347bf559b7d44ff556d9bc6f6208dd3f79f104aaf", - "sha256:cae3dde0b4b2078f31527acff6f486e23abed307ba4d3932466ba7cdd5ecec79", - "sha256:cb5d45c4143c1dd60f98a16187fd123eda7248f84ef22244818c18d531a249d1", - "sha256:d9b073073e048081e502b6c6b0b88714c026a1a4c890569238d04aca5f9ca74b", - "sha256:fac19dc9cbc34052394dbe81e149411a62e71999c0a19e1e09ce537867f95ae0" + "sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc", + "sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365", + "sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0", + "sha256:08dca260e85ffae975448e344834d765983237ad6dc308231aa16e7933db763e", + "sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124", + "sha256:0dd5fad9b9c0dd89904bbdea978ce89a2b692a7ee8a0ce19b940e538c88a809c", + "sha256:11cd0c3100e2233e9c53106265da31d574355c288e15259c0d40a4405cbae317", + "sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094", + "sha256:18d5b4da8cf3e41895b34e8c37d13c9ed294954907929aacd95153508d5d89d7", + "sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235", + "sha256:1b8d1eae0f65441963d805f766c7e9cd092f91e0c600c820c764a4ff71a0764c", + "sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c", + "sha256:1c9198c989f47898b2c22201756f73249de3748e0fc9de44adaf54a8b259cc0c", + "sha256:1fd9a5205139f3c6bb60d11f6072e0552f0a20b712c85f43d42342d162be1235", + "sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293", + "sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa", + "sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef", + "sha256:3ad692bc7792be8c32918c699638b660c0de078a6cbe464c46e1340dadb94c19", + "sha256:3ccceb50c611c433145502735e0370877cced72a6c70fd2410238bcbc7fe51d8", + "sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d", + "sha256:3f92944efc564867bbf841c823c8b71bb0be75e06b8ce45c084b46411475a915", + "sha256:40bca549fdc929b470dd1dbfcb47b3295cb46a6d2c90e50588b0a1b3bd98f429", + "sha256:43babacef21c519bc6631c5fce2a61eccdfc011b4bcb9047255e9620732c8097", + "sha256:4566006aa44cb0d21b8ab53baf4b9c667a0ed23efe4aaad8c227bfba0bf15cbe", + "sha256:49f56e6ecc2503e7dbe233fa328b2be1a7797d31548e7a193237dcdf1ad0eee0", + "sha256:4c48a10d17571d1275701e14a601e36959ffada3add8cdbc9e5061a6e3579a5d", + "sha256:4ea10a29aa5de67de02256a28d1bf53d21322295cb00bd2d57fcd19b850ebd99", + "sha256:511f0b034120cd1989932bf1e9081aa9fb00f1f949fbd2d9cab6264916ae89b1", + "sha256:51ddac60b96a42c15d24fbdc7a4bfcd02b5a29c047b7f8bf63d3f6f5a860949a", + "sha256:57d430f5fb63fea141ab71ca9c064e80de3a20b427ca2febcbfcef70ff0ce895", + "sha256:59137c0c6826bd56c710d1d2bda81553b5e6b7c84d5a676747d80caf0409ad94", + "sha256:5a03651352fc20975ee2a707cd2d74a386cd303cc688f407296064ad1e6d1562", + "sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab", + "sha256:642d66b75eda909fd1112d35c53816d59789a4b38c141a96d62f50a3ef9b3360", + "sha256:6674b00b9756b0af620aa2a3346b01f8e2a3dc729d25617e1b89cf6af4a54eb1", + "sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7", + "sha256:66fac0c238ab9a2e72d026b5fb91cb902c146202bbd29a9a1a44e8db7b710b6f", + "sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03", + "sha256:6c889025f59884423428c261f212e04d438de865beda0b1e1babab85ef4c0f01", + "sha256:6cb8fdc044909e2078c248986f2fc76f911f72b51ea4a4fbbf472e01d14faa58", + "sha256:6e9be3ef84e2bb9710f3f777accce25556f4a71e15d2b73223788d528fcc2052", + "sha256:7f762a1a85a12cc3484f77eee7be87b10f8c50b0b787bb02f4e357403cad0c0e", + "sha256:83a696da8922314ff2aec02987eefb03784f473281d740bf9170181829133765", + "sha256:853853cbf7bf9408b404754b92512ebe3e3a83587503d766d23e6bf83d092ee6", + "sha256:8ad3fe0a3567c2f0f629d800409cd528cb6251da12e81a1f765e5c5345fd0137", + "sha256:8c6ed10c2497e5fedadf61e465b3ca12a19f96004c15dcffe4bd442ebadc2d85", + "sha256:8d5f400326840934e3507701f9f7269247f7c026d1b6cfd49477d2be0933cfca", + "sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f", + "sha256:9a0aa47f94ea9a0b39dd30850b0adf2e1cd32a8b4f9c7aa443d852aacf9ca214", + "sha256:9b37a7ba223b2f26122c148bb8d09a9ff312afca998c48c725ff5a0a632145f7", + "sha256:9c873345680c1b87f1e09e0eaf8cf6c891b9851d8b4d3645e7efe2ec20a20cc7", + "sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3", + "sha256:9d353c4cfda586db2a176ce42c88f2fc31ec25e50212650c89fdd0f560ee507b", + "sha256:a1e3014a625bcf107fbf38eece0e47fa0190e52e45dc6eee5a8265ddc6dc5ea7", + "sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6", + "sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994", + "sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9", + "sha256:b3cab0e06143768499384a8a5efb9c4dc53e19382952859e4802f294214f36ec", + "sha256:b4a21f71885aa2744719459951819e7bf5a906a6448a6b2bbce8e9cc9f2c8128", + "sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c", + "sha256:be6dd5d52b73018b21adc1c5d28ac0c68184a64769052dfeb0c5d9998e7f56a2", + "sha256:c550a56bf209a3d987d5a975cdf2063b3389a5d16caf29db4bdddeae49f22078", + "sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3", + "sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e", + "sha256:cfb92d49dbb95ec7a07511bc9efb0faff8fe24ef3805662b8d6808ba8409a71a", + "sha256:d23bcd6c8eaa6324fe109d8cac01b41fe9a54b8c498af9ce464c1aeeb99903d6", + "sha256:d5b1dc0e708fad9f92c296ab2f948af403bf201db8fb2eb4c8179db143732e49", + "sha256:d78f30cbe8b2ce770160d3c08cff01b2ae9306fe66ce899b73f0409dc1846c1b", + "sha256:d8f57c4461cd24fda22493109c45b3980863c58a25b8bec885ca8bea6b8d4b28", + "sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9", + "sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586", + "sha256:ebe684d7d26239e23d102a2bad2a358dedf18e462e8808778703427d1f584400", + "sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165", + "sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303", + "sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d" ], - "version": "==0.19.0" + "version": "==0.21.0" }, "wcwidth": { "hashes": [ - "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e", - "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0" + "sha256:f01c104efdf57971bcb756f054dd58ddec5204dd15fa31d6503ea57947d97c02", + "sha256:f26ec43d96c8cbfed76a5075dac87680124fa84e0855195a6184da9c187f133c" ], - "version": "==0.2.6" + "version": "==0.2.12" }, "webencodings": { "hashes": [ @@ -1933,86 +2053,89 @@ }, "websockets": { "hashes": [ - "sha256:01f5567d9cf6f502d655151645d4e8b72b453413d3819d2b6f1185abc23e82dd", - "sha256:03aae4edc0b1c68498f41a6772d80ac7c1e33c06c6ffa2ac1c27a07653e79d6f", - "sha256:0ac56b661e60edd453585f4bd68eb6a29ae25b5184fd5ba51e97652580458998", - "sha256:0ee68fe502f9031f19d495dae2c268830df2760c0524cbac5d759921ba8c8e82", - "sha256:1553cb82942b2a74dd9b15a018dce645d4e68674de2ca31ff13ebc2d9f283788", - "sha256:1a073fc9ab1c8aff37c99f11f1641e16da517770e31a37265d2755282a5d28aa", - "sha256:1d2256283fa4b7f4c7d7d3e84dc2ece74d341bce57d5b9bf385df109c2a1a82f", - "sha256:1d5023a4b6a5b183dc838808087033ec5df77580485fc533e7dab2567851b0a4", - "sha256:1fdf26fa8a6a592f8f9235285b8affa72748dc12e964a5518c6c5e8f916716f7", - "sha256:2529338a6ff0eb0b50c7be33dc3d0e456381157a31eefc561771ee431134a97f", - "sha256:279e5de4671e79a9ac877427f4ac4ce93751b8823f276b681d04b2156713b9dd", - "sha256:2d903ad4419f5b472de90cd2d40384573b25da71e33519a67797de17ef849b69", - "sha256:332d126167ddddec94597c2365537baf9ff62dfcc9db4266f263d455f2f031cb", - "sha256:34fd59a4ac42dff6d4681d8843217137f6bc85ed29722f2f7222bd619d15e95b", - "sha256:3580dd9c1ad0701169e4d6fc41e878ffe05e6bdcaf3c412f9d559389d0c9e016", - "sha256:3ccc8a0c387629aec40f2fc9fdcb4b9d5431954f934da3eaf16cdc94f67dbfac", - "sha256:41f696ba95cd92dc047e46b41b26dd24518384749ed0d99bea0a941ca87404c4", - "sha256:42cc5452a54a8e46a032521d7365da775823e21bfba2895fb7b77633cce031bb", - "sha256:4841ed00f1026dfbced6fca7d963c4e7043aa832648671b5138008dc5a8f6d99", - "sha256:4b253869ea05a5a073ebfdcb5cb3b0266a57c3764cf6fe114e4cd90f4bfa5f5e", - "sha256:54c6e5b3d3a8936a4ab6870d46bdd6ec500ad62bde9e44462c32d18f1e9a8e54", - "sha256:619d9f06372b3a42bc29d0cd0354c9bb9fb39c2cbc1a9c5025b4538738dbffaf", - "sha256:6505c1b31274723ccaf5f515c1824a4ad2f0d191cec942666b3d0f3aa4cb4007", - "sha256:660e2d9068d2bedc0912af508f30bbeb505bbbf9774d98def45f68278cea20d3", - "sha256:6681ba9e7f8f3b19440921e99efbb40fc89f26cd71bf539e45d8c8a25c976dc6", - "sha256:68b977f21ce443d6d378dbd5ca38621755f2063d6fdb3335bda981d552cfff86", - "sha256:69269f3a0b472e91125b503d3c0b3566bda26da0a3261c49f0027eb6075086d1", - "sha256:6f1a3f10f836fab6ca6efa97bb952300b20ae56b409414ca85bff2ad241d2a61", - "sha256:7622a89d696fc87af8e8d280d9b421db5133ef5b29d3f7a1ce9f1a7bf7fcfa11", - "sha256:777354ee16f02f643a4c7f2b3eff8027a33c9861edc691a2003531f5da4f6bc8", - "sha256:84d27a4832cc1a0ee07cdcf2b0629a8a72db73f4cf6de6f0904f6661227f256f", - "sha256:8531fdcad636d82c517b26a448dcfe62f720e1922b33c81ce695d0edb91eb931", - "sha256:86d2a77fd490ae3ff6fae1c6ceaecad063d3cc2320b44377efdde79880e11526", - "sha256:88fc51d9a26b10fc331be344f1781224a375b78488fc343620184e95a4b27016", - "sha256:8a34e13a62a59c871064dfd8ffb150867e54291e46d4a7cf11d02c94a5275bae", - "sha256:8c82f11964f010053e13daafdc7154ce7385ecc538989a354ccc7067fd7028fd", - "sha256:92b2065d642bf8c0a82d59e59053dd2fdde64d4ed44efe4870fa816c1232647b", - "sha256:97b52894d948d2f6ea480171a27122d77af14ced35f62e5c892ca2fae9344311", - "sha256:9d9acd80072abcc98bd2c86c3c9cd4ac2347b5a5a0cae7ed5c0ee5675f86d9af", - "sha256:9f59a3c656fef341a99e3d63189852be7084c0e54b75734cde571182c087b152", - "sha256:aa5003845cdd21ac0dc6c9bf661c5beddd01116f6eb9eb3c8e272353d45b3288", - "sha256:b16fff62b45eccb9c7abb18e60e7e446998093cdcb50fed33134b9b6878836de", - "sha256:b30c6590146e53149f04e85a6e4fcae068df4289e31e4aee1fdf56a0dead8f97", - "sha256:b58cbf0697721120866820b89f93659abc31c1e876bf20d0b3d03cef14faf84d", - "sha256:b67c6f5e5a401fc56394f191f00f9b3811fe843ee93f4a70df3c389d1adf857d", - "sha256:bceab846bac555aff6427d060f2fcfff71042dba6f5fca7dc4f75cac815e57ca", - "sha256:bee9fcb41db2a23bed96c6b6ead6489702c12334ea20a297aa095ce6d31370d0", - "sha256:c114e8da9b475739dde229fd3bc6b05a6537a88a578358bc8eb29b4030fac9c9", - "sha256:c1f0524f203e3bd35149f12157438f406eff2e4fb30f71221c8a5eceb3617b6b", - "sha256:c792ea4eabc0159535608fc5658a74d1a81020eb35195dd63214dcf07556f67e", - "sha256:c7f3cb904cce8e1be667c7e6fef4516b98d1a6a0635a58a57528d577ac18a128", - "sha256:d67ac60a307f760c6e65dad586f556dde58e683fab03323221a4e530ead6f74d", - "sha256:dcacf2c7a6c3a84e720d1bb2b543c675bf6c40e460300b628bab1b1efc7c034c", - "sha256:de36fe9c02995c7e6ae6efe2e205816f5f00c22fd1fbf343d4d18c3d5ceac2f5", - "sha256:def07915168ac8f7853812cc593c71185a16216e9e4fa886358a17ed0fd9fcf6", - "sha256:df41b9bc27c2c25b486bae7cf42fccdc52ff181c8c387bfd026624a491c2671b", - "sha256:e052b8467dd07d4943936009f46ae5ce7b908ddcac3fda581656b1b19c083d9b", - "sha256:e063b1865974611313a3849d43f2c3f5368093691349cf3c7c8f8f75ad7cb280", - "sha256:e1459677e5d12be8bbc7584c35b992eea142911a6236a3278b9b5ce3326f282c", - "sha256:e1a99a7a71631f0efe727c10edfba09ea6bee4166a6f9c19aafb6c0b5917d09c", - "sha256:e590228200fcfc7e9109509e4d9125eace2042fd52b595dd22bbc34bb282307f", - "sha256:e6316827e3e79b7b8e7d8e3b08f4e331af91a48e794d5d8b099928b6f0b85f20", - "sha256:e7837cb169eca3b3ae94cc5787c4fed99eef74c0ab9506756eea335e0d6f3ed8", - "sha256:e848f46a58b9fcf3d06061d17be388caf70ea5b8cc3466251963c8345e13f7eb", - "sha256:ed058398f55163a79bb9f06a90ef9ccc063b204bb346c4de78efc5d15abfe602", - "sha256:f2e58f2c36cc52d41f2659e4c0cbf7353e28c8c9e63e30d8c6d3494dc9fdedcf", - "sha256:f467ba0050b7de85016b43f5a22b46383ef004c4f672148a8abf32bc999a87f0", - "sha256:f61bdb1df43dc9c131791fbc2355535f9024b9a04398d3bd0684fc16ab07df74", - "sha256:fb06eea71a00a7af0ae6aefbb932fb8a7df3cb390cc217d51a9ad7343de1b8d0", - "sha256:ffd7dcaf744f25f82190856bc26ed81721508fc5cbf2a330751e135ff1283564" + "sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b", + "sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6", + "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df", + "sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b", + "sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205", + "sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892", + "sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53", + "sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2", + "sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed", + "sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c", + "sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd", + "sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b", + "sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931", + "sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30", + "sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370", + "sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be", + "sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec", + "sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf", + "sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62", + "sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b", + "sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402", + "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f", + "sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123", + "sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9", + "sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603", + "sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45", + "sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558", + "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4", + "sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438", + "sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137", + "sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480", + "sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447", + "sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8", + "sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04", + "sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c", + "sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb", + "sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967", + "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b", + "sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d", + "sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def", + "sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c", + "sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92", + "sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2", + "sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113", + "sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b", + "sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28", + "sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7", + "sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d", + "sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f", + "sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468", + "sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8", + "sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae", + "sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611", + "sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d", + "sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9", + "sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca", + "sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f", + "sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2", + "sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077", + "sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2", + "sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6", + "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374", + "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc", + "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e", + "sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53", + "sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399", + "sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547", + "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3", + "sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870", + "sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5", + "sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8", + "sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7" ], - "version": "==11.0.3" + "version": "==12.0" }, "whitenoise": { "hashes": [ - "sha256:15fe60546ac975b58e357ccaeb165a4ca2d0ab697e48450b8f0307ca368195a8", - "sha256:16468e9ad2189f09f4a8c635a9031cc9bb2cdbc8e5e53365407acf99f7ade9ec" + "sha256:8998f7370973447fac1e8ef6e8ded2c5209a7b1f67c1012866dbcd09681c3251", + "sha256:b1f9db9bf67dc183484d760b99f4080185633136a273a03f6436034a41064146" ], "index": "pypi", - "version": "==6.5.0" + "markers": "python_version >= '3.8'", + "version": "==6.6.0" }, "whoosh": { "hashes": [ @@ -2023,62 +2146,133 @@ "index": "pypi", "version": "==2.7.4" }, - "zipp": { + "wrapt": { "hashes": [ - "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0", - "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147" + "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc", + "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81", + "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09", + "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e", + "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca", + "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0", + "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb", + "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487", + "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40", + "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c", + "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060", + "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202", + "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41", + "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9", + "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b", + "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664", + "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d", + "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362", + "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00", + "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc", + "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1", + "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267", + "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956", + "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966", + "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1", + "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228", + "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72", + "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d", + "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292", + "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0", + "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0", + "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36", + "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c", + "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5", + "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f", + "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73", + "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b", + "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2", + "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593", + "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39", + "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389", + "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf", + "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf", + "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89", + "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c", + "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c", + "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f", + "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440", + "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465", + "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136", + "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b", + "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8", + "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3", + "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8", + "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6", + "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e", + "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f", + "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c", + "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e", + "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8", + "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2", + "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020", + "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35", + "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d", + "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3", + "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537", + "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809", + "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d", + "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a", + "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4" ], - "markers": "python_version < '3.10'", - "version": "==3.16.2" + "markers": "python_version >= '3.6'", + "version": "==1.16.0" }, "zstandard": { "hashes": [ - "sha256:0aad6090ac164a9d237d096c8af241b8dcd015524ac6dbec1330092dba151657", - "sha256:0bdbe350691dec3078b187b8304e6a9c4d9db3eb2d50ab5b1d748533e746d099", - "sha256:0e1e94a9d9e35dc04bf90055e914077c80b1e0c15454cc5419e82529d3e70728", - "sha256:1243b01fb7926a5a0417120c57d4c28b25a0200284af0525fddba812d575f605", - "sha256:144a4fe4be2e747bf9c646deab212666e39048faa4372abb6a250dab0f347a29", - "sha256:14e10ed461e4807471075d4b7a2af51f5234c8f1e2a0c1d37d5ca49aaaad49e8", - "sha256:1545fb9cb93e043351d0cb2ee73fa0ab32e61298968667bb924aac166278c3fc", - "sha256:1e6e131a4df2eb6f64961cea6f979cdff22d6e0d5516feb0d09492c8fd36f3bc", - "sha256:25fbfef672ad798afab12e8fd204d122fca3bc8e2dcb0a2ba73bf0a0ac0f5f07", - "sha256:2769730c13638e08b7a983b32cb67775650024632cd0476bf1ba0e6360f5ac7d", - "sha256:48b6233b5c4cacb7afb0ee6b4f91820afbb6c0e3ae0fa10abbc20000acdf4f11", - "sha256:4af612c96599b17e4930fe58bffd6514e6c25509d120f4eae6031b7595912f85", - "sha256:52b2b5e3e7670bd25835e0e0730a236f2b0df87672d99d3bf4bf87248aa659fb", - "sha256:57ac078ad7333c9db7a74804684099c4c77f98971c151cee18d17a12649bc25c", - "sha256:62957069a7c2626ae80023998757e27bd28d933b165c487ab6f83ad3337f773d", - "sha256:649a67643257e3b2cff1c0a73130609679a5673bf389564bc6d4b164d822a7ce", - "sha256:67829fdb82e7393ca68e543894cd0581a79243cc4ec74a836c305c70a5943f07", - "sha256:7d3bc4de588b987f3934ca79140e226785d7b5e47e31756761e48644a45a6766", - "sha256:7f2afab2c727b6a3d466faee6974a7dad0d9991241c498e7317e5ccf53dbc766", - "sha256:8070c1cdb4587a8aa038638acda3bd97c43c59e1e31705f2766d5576b329e97c", - "sha256:8257752b97134477fb4e413529edaa04fc0457361d304c1319573de00ba796b1", - "sha256:9980489f066a391c5572bc7dc471e903fb134e0b0001ea9b1d3eff85af0a6f1b", - "sha256:9cff89a036c639a6a9299bf19e16bfb9ac7def9a7634c52c257166db09d950e7", - "sha256:a8d200617d5c876221304b0e3fe43307adde291b4a897e7b0617a61611dfff6a", - "sha256:a9fec02ce2b38e8b2e86079ff0b912445495e8ab0b137f9c0505f88ad0d61296", - "sha256:b1367da0dde8ae5040ef0413fb57b5baeac39d8931c70536d5f013b11d3fc3a5", - "sha256:b69cccd06a4a0a1d9fb3ec9a97600055cf03030ed7048d4bcb88c574f7895773", - "sha256:b72060402524ab91e075881f6b6b3f37ab715663313030d0ce983da44960a86f", - "sha256:c053b7c4cbf71cc26808ed67ae955836232f7638444d709bfc302d3e499364fa", - "sha256:cff891e37b167bc477f35562cda1248acc115dbafbea4f3af54ec70821090965", - "sha256:d12fa383e315b62630bd407477d750ec96a0f438447d0e6e496ab67b8b451d39", - "sha256:d2d61675b2a73edcef5e327e38eb62bdfc89009960f0e3991eae5cc3d54718de", - "sha256:db62cbe7a965e68ad2217a056107cc43d41764c66c895be05cf9c8b19578ce9c", - "sha256:ddb086ea3b915e50f6604be93f4f64f168d3fc3cef3585bb9a375d5834392d4f", - "sha256:df28aa5c241f59a7ab524f8ad8bb75d9a23f7ed9d501b0fed6d40ec3064784e8", - "sha256:e1e0c62a67ff425927898cf43da2cf6b852289ebcc2054514ea9bf121bec10a5", - "sha256:e6048a287f8d2d6e8bc67f6b42a766c61923641dd4022b7fd3f7439e17ba5a4d", - "sha256:e7d560ce14fd209db6adacce8908244503a009c6c39eee0c10f138996cd66d3e", - "sha256:ea68b1ba4f9678ac3d3e370d96442a6332d431e5050223626bdce748692226ea", - "sha256:f08e3a10d01a247877e4cb61a82a319ea746c356a3786558bed2481e6c405546", - "sha256:f1b9703fe2e6b6811886c44052647df7c37478af1b4a1a9078585806f42e5b15", - "sha256:fe6c821eb6870f81d73bf10e5deed80edcac1e63fbc40610e61f340723fd5f7c", - "sha256:ff0852da2abe86326b20abae912d0367878dd0854b8931897d44cfeb18985472" + "sha256:11f0d1aab9516a497137b41e3d3ed4bbf7b2ee2abc79e5c8b010ad286d7464bd", + "sha256:1958100b8a1cc3f27fa21071a55cb2ed32e9e5df4c3c6e661c193437f171cba2", + "sha256:1a90ba9a4c9c884bb876a14be2b1d216609385efb180393df40e5172e7ecf356", + "sha256:1d43501f5f31e22baf822720d82b5547f8a08f5386a883b32584a185675c8fbf", + "sha256:23d2b3c2b8e7e5a6cb7922f7c27d73a9a615f0a5ab5d0e03dd533c477de23004", + "sha256:2612e9bb4977381184bb2463150336d0f7e014d6bb5d4a370f9a372d21916f69", + "sha256:275df437ab03f8c033b8a2c181e51716c32d831082d93ce48002a5227ec93019", + "sha256:2ac9957bc6d2403c4772c890916bf181b2653640da98f32e04b96e4d6fb3252a", + "sha256:2b11ea433db22e720758cba584c9d661077121fcf60ab43351950ded20283440", + "sha256:2fdd53b806786bd6112d97c1f1e7841e5e4daa06810ab4b284026a1a0e484c0b", + "sha256:33591d59f4956c9812f8063eff2e2c0065bc02050837f152574069f5f9f17775", + "sha256:36a47636c3de227cd765e25a21dc5dace00539b82ddd99ee36abae38178eff9e", + "sha256:39b2853efc9403927f9065cc48c9980649462acbdf81cd4f0cb773af2fd734bc", + "sha256:3db41c5e49ef73641d5111554e1d1d3af106410a6c1fb52cf68912ba7a343a0d", + "sha256:445b47bc32de69d990ad0f34da0e20f535914623d1e506e74d6bc5c9dc40bb09", + "sha256:466e6ad8caefb589ed281c076deb6f0cd330e8bc13c5035854ffb9c2014b118c", + "sha256:48f260e4c7294ef275744210a4010f116048e0c95857befb7462e033f09442fe", + "sha256:4ac59d5d6910b220141c1737b79d4a5aa9e57466e7469a012ed42ce2d3995e88", + "sha256:53866a9d8ab363271c9e80c7c2e9441814961d47f88c9bc3b248142c32141d94", + "sha256:589402548251056878d2e7c8859286eb91bd841af117dbe4ab000e6450987e08", + "sha256:68953dc84b244b053c0d5f137a21ae8287ecf51b20872eccf8eaac0302d3e3b0", + "sha256:6c25b8eb733d4e741246151d895dd0308137532737f337411160ff69ca24f93a", + "sha256:7034d381789f45576ec3f1fa0e15d741828146439228dc3f7c59856c5bcd3292", + "sha256:73a1d6bd01961e9fd447162e137ed949c01bdb830dfca487c4a14e9742dccc93", + "sha256:8226a33c542bcb54cd6bd0a366067b610b41713b64c9abec1bc4533d69f51e70", + "sha256:888196c9c8893a1e8ff5e89b8f894e7f4f0e64a5af4d8f3c410f0319128bb2f8", + "sha256:88c5b4b47a8a138338a07fc94e2ba3b1535f69247670abfe422de4e0b344aae2", + "sha256:8a1b2effa96a5f019e72874969394edd393e2fbd6414a8208fea363a22803b45", + "sha256:93e1856c8313bc688d5df069e106a4bc962eef3d13372020cc6e3ebf5e045202", + "sha256:9501f36fac6b875c124243a379267d879262480bf85b1dbda61f5ad4d01b75a3", + "sha256:959665072bd60f45c5b6b5d711f15bdefc9849dd5da9fb6c873e35f5d34d8cfb", + "sha256:a1d67d0d53d2a138f9e29d8acdabe11310c185e36f0a848efa104d4e40b808e4", + "sha256:a493d470183ee620a3df1e6e55b3e4de8143c0ba1b16f3ded83208ea8ddfd91d", + "sha256:a7ccf5825fd71d4542c8ab28d4d482aace885f5ebe4b40faaa290eed8e095a4c", + "sha256:a88b7df61a292603e7cd662d92565d915796b094ffb3d206579aaebac6b85d5f", + "sha256:a97079b955b00b732c6f280d5023e0eefe359045e8b83b08cf0333af9ec78f26", + "sha256:d22fdef58976457c65e2796e6730a3ea4a254f3ba83777ecfc8592ff8d77d303", + "sha256:d75f693bb4e92c335e0645e8845e553cd09dc91616412d1d4650da835b5449df", + "sha256:d8593f8464fb64d58e8cb0b905b272d40184eac9a18d83cf8c10749c3eafcd7e", + "sha256:d8fff0f0c1d8bc5d866762ae95bd99d53282337af1be9dc0d88506b340e74b73", + "sha256:de20a212ef3d00d609d0b22eb7cc798d5a69035e81839f549b538eff4105d01c", + "sha256:e9e9d4e2e336c529d4c435baad846a181e39a982f823f7e4495ec0b0ec8538d2", + "sha256:f058a77ef0ece4e210bb0450e68408d4223f728b109764676e1a13537d056bb0", + "sha256:f1a4b358947a65b94e2501ce3e078bbc929b039ede4679ddb0460829b12f7375", + "sha256:f9b2cde1cd1b2a10246dbc143ba49d942d14fb3d2b4bccf4618d475c65464912", + "sha256:fe3390c538f12437b859d815040763abc728955a52ca6ff9c5d4ac707c4ad98e" ], - "markers": "python_version >= '3.7'", - "version": "==0.21.0" + "markers": "python_version >= '3.8'", + "version": "==0.22.0" }, "zxing-cpp": { "hashes": [ @@ -2099,19 +2293,18 @@ "sha256:d7ba898e4f5ee9cd426d4271ff8b26911e3346b1cb4262f06fdc917e42b7c123", "sha256:da081b763032b05326ddc53d3ad28a8b7603d662ccce2ff29fd204d587d3cac9" ], - "index": "pypi", - "markers": "platform_machine == 'x86_64'", + "markers": "platform_machine == 'x86_64' and python_version >= '3.6'", "version": "==2.1.0" } }, "develop": { "anyio": { "hashes": [ - "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780", - "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5" + "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f", + "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a" ], - "markers": "python_version >= '3.7'", - "version": "==3.7.1" + "markers": "python_version >= '3.8'", + "version": "==4.0.0" }, "asgiref": { "hashes": [ @@ -2131,10 +2324,10 @@ }, "autobahn": { "hashes": [ - "sha256:c5ef8ca7422015a1af774a883b8aef73d4954c9fcd182c9b5244e08e973f7c3a" + "sha256:ec9421c52a2103364d1ef0468036e6019ee84f71721e86b36fe19ad6966c1181" ], - "markers": "python_version >= '3.7'", - "version": "==23.1.2" + "markers": "python_version >= '3.9'", + "version": "==23.6.2" }, "automat": { "hashes": [ @@ -2143,33 +2336,38 @@ ], "version": "==22.10.0" }, + "babel": { + "hashes": [ + "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900", + "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed" + ], + "markers": "python_version >= '3.7'", + "version": "==2.13.1" + }, "black": { "hashes": [ - "sha256:01ede61aac8c154b55f35301fac3e730baf0c9cf8120f65a9cd61a81cfb4a0c3", - "sha256:022a582720b0d9480ed82576c920a8c1dde97cc38ff11d8d8859b3bd6ca9eedb", - "sha256:25cc308838fe71f7065df53aedd20327969d05671bac95b38fdf37ebe70ac087", - "sha256:27eb7a0c71604d5de083757fbdb245b1a4fae60e9596514c6ec497eb63f95320", - "sha256:327a8c2550ddc573b51e2c352adb88143464bb9d92c10416feb86b0f5aee5ff6", - "sha256:47e56d83aad53ca140da0af87678fb38e44fd6bc0af71eebab2d1f59b1acf1d3", - "sha256:501387a9edcb75d7ae8a4412bb8749900386eaef258f1aefab18adddea1936bc", - "sha256:552513d5cd5694590d7ef6f46e1767a4df9af168d449ff767b13b084c020e63f", - "sha256:5c4bc552ab52f6c1c506ccae05681fab58c3f72d59ae6e6639e8885e94fe2587", - "sha256:642496b675095d423f9b8448243336f8ec71c9d4d57ec17bf795b67f08132a91", - "sha256:6d1c6022b86f83b632d06f2b02774134def5d4d4f1dac8bef16d90cda18ba28a", - "sha256:7f3bf2dec7d541b4619b8ce526bda74a6b0bffc480a163fed32eb8b3c9aed8ad", - "sha256:831d8f54c3a8c8cf55f64d0422ee875eecac26f5f649fb6c1df65316b67c8926", - "sha256:8417dbd2f57b5701492cd46edcecc4f9208dc75529bcf76c514864e48da867d9", - "sha256:86cee259349b4448adb4ef9b204bb4467aae74a386bce85d56ba4f5dc0da27be", - "sha256:893695a76b140881531062d48476ebe4a48f5d1e9388177e175d76234ca247cd", - "sha256:9fd59d418c60c0348505f2ddf9609c1e1de8e7493eab96198fc89d9f865e7a96", - "sha256:ad0014efc7acf0bd745792bd0d8857413652979200ab924fbf239062adc12491", - "sha256:b5b0ee6d96b345a8b420100b7d71ebfdd19fab5e8301aff48ec270042cd40ac2", - "sha256:c333286dc3ddca6fdff74670b911cccedacb4ef0a60b34e491b8a67c833b343a", - "sha256:f9062af71c59c004cd519e2fb8f5d25d39e46d3af011b41ab43b9c74e27e236f", - "sha256:fb074d8b213749fa1d077d630db0d5f8cc3b2ae63587ad4116e8a436e9bbe995" + "sha256:250d7e60f323fcfc8ea6c800d5eba12f7967400eb6c2d21ae85ad31c204fb1f4", + "sha256:2a9acad1451632021ee0d146c8765782a0c3846e0e0ea46659d7c4f89d9b212b", + "sha256:412f56bab20ac85927f3a959230331de5614aecda1ede14b373083f62ec24e6f", + "sha256:421f3e44aa67138ab1b9bfbc22ee3780b22fa5b291e4db8ab7eee95200726b07", + "sha256:45aa1d4675964946e53ab81aeec7a37613c1cb71647b5394779e6efb79d6d187", + "sha256:4c44b7211a3a0570cc097e81135faa5f261264f4dfaa22bd5ee2875a4e773bd6", + "sha256:4c68855825ff432d197229846f971bc4d6666ce90492e5b02013bcaca4d9ab05", + "sha256:5133f5507007ba08d8b7b263c7aa0f931af5ba88a29beacc4b2dc23fcefe9c06", + "sha256:54caaa703227c6e0c87b76326d0862184729a69b73d3b7305b6288e1d830067e", + "sha256:58e5f4d08a205b11800332920e285bd25e1a75c54953e05502052738fe16b3b5", + "sha256:698c1e0d5c43354ec5d6f4d914d0d553a9ada56c85415700b81dc90125aac244", + "sha256:6c1cac07e64433f646a9a838cdc00c9768b3c362805afc3fce341af0e6a9ae9f", + "sha256:760415ccc20f9e8747084169110ef75d545f3b0932ee21368f63ac0fee86b221", + "sha256:7f622b6822f02bfaf2a5cd31fdb7cd86fcf33dab6ced5185c35f5db98260b055", + "sha256:cf57719e581cfd48c4efe28543fea3d139c6b6f1238b3f0102a9c73992cbb479", + "sha256:d136ef5b418c81660ad847efe0e55c58c8208b77a57a28a503a5f345ccf01394", + "sha256:dbea0bb8575c6b6303cc65017b46351dc5953eea5c0a59d7b7e3a2d2f433a911", + "sha256:fc7f6a44d52747e65a02558e1d807c82df1d66ffa80a601862040a43ec2e3142" ], "index": "pypi", - "version": "==23.7.0" + "markers": "python_version >= '3.8'", + "version": "==23.11.0" }, "certifi": { "hashes": [ @@ -2181,169 +2379,173 @@ }, "cffi": { "hashes": [ - "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5", - "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef", - "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104", - "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426", - "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405", - "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375", - "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a", - "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e", - "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc", - "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf", - "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185", - "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497", - "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3", - "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35", - "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c", - "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83", - "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21", - "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca", - "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984", - "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac", - "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd", - "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee", - "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a", - "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2", - "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192", - "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7", - "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585", - "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f", - "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e", - "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27", - "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b", - "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e", - "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e", - "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d", - "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c", - "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415", - "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82", - "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02", - "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314", - "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325", - "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c", - "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3", - "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914", - "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045", - "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d", - "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9", - "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5", - "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2", - "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c", - "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3", - "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2", - "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8", - "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d", - "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d", - "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9", - "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162", - "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76", - "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4", - "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e", - "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9", - "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6", - "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b", - "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01", - "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0" + "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc", + "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a", + "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417", + "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab", + "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520", + "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36", + "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743", + "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8", + "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed", + "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684", + "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56", + "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324", + "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d", + "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235", + "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e", + "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088", + "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000", + "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7", + "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e", + "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673", + "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c", + "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe", + "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2", + "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098", + "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8", + "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a", + "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0", + "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b", + "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896", + "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e", + "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9", + "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2", + "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b", + "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6", + "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404", + "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f", + "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0", + "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4", + "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc", + "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936", + "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba", + "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872", + "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb", + "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614", + "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1", + "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d", + "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969", + "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b", + "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4", + "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627", + "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956", + "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357" ], - "version": "==1.15.1" + "markers": "python_version >= '3.8'", + "version": "==1.16.0" }, "cfgv": { "hashes": [ - "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426", - "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736" + "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", + "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560" ], - "markers": "python_full_version >= '3.6.1'", - "version": "==3.3.1" + "markers": "python_version >= '3.8'", + "version": "==3.4.0" }, "charset-normalizer": { "hashes": [ - "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96", - "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c", - "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710", - "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706", - "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020", - "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252", - "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad", - "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329", - "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a", - "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f", - "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6", - "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4", - "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a", - "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46", - "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2", - "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23", - "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace", - "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd", - "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982", - "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10", - "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2", - "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea", - "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09", - "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5", - "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149", - "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489", - "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9", - "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80", - "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592", - "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3", - "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6", - "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed", - "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c", - "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200", - "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a", - "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e", - "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d", - "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6", - "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623", - "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669", - "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3", - "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa", - "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9", - "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2", - "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f", - "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1", - "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4", - "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a", - "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8", - "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3", - "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029", - "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f", - "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959", - "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22", - "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7", - "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952", - "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346", - "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e", - "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d", - "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299", - "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd", - "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a", - "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3", - "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037", - "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94", - "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c", - "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858", - "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a", - "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449", - "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c", - "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918", - "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1", - "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c", - "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac", - "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa" + "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027", + "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087", + "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786", + "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8", + "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09", + "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185", + "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574", + "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e", + "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519", + "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898", + "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269", + "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3", + "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f", + "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6", + "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8", + "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a", + "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73", + "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc", + "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714", + "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2", + "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc", + "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce", + "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d", + "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e", + "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6", + "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269", + "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96", + "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d", + "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a", + "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4", + "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77", + "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d", + "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0", + "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed", + "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068", + "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac", + "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25", + "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8", + "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab", + "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26", + "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2", + "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db", + "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f", + "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5", + "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99", + "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c", + "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d", + "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811", + "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa", + "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a", + "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03", + "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b", + "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04", + "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c", + "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001", + "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458", + "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389", + "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99", + "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985", + "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537", + "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238", + "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f", + "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d", + "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796", + "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a", + "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143", + "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8", + "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c", + "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5", + "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5", + "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711", + "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4", + "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6", + "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c", + "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7", + "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4", + "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b", + "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae", + "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12", + "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c", + "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae", + "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8", + "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887", + "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b", + "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4", + "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f", + "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5", + "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33", + "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519", + "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561" ], "markers": "python_full_version >= '3.7.0'", - "version": "==3.2.0" + "version": "==3.3.2" }, "click": { "hashes": [ - "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd", - "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5" + "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", + "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de" ], "markers": "python_version >= '3.7'", - "version": "==8.1.6" + "version": "==8.1.7" }, "colorama": { "hashes": [ @@ -2355,104 +2557,101 @@ }, "constantly": { "hashes": [ - "sha256:586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35", - "sha256:dd2fa9d6b1a51a83f0d7dd76293d734046aa176e384bf6e33b7e44880eb37c5d" + "sha256:3fd9b4d1c3dc1ec9757f3c52aef7e53ad9323dbe39f51dfd4c43853b68dfa3f9", + "sha256:aa92b70a33e2ac0bb33cd745eb61776594dc48764b06c35e0efd050b7f1c7cbd" ], - "version": "==15.1.0" + "markers": "python_version >= '3.8'", + "version": "==23.10.4" }, "coverage": { "extras": [ "toml" ], "hashes": [ - "sha256:06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f", - "sha256:06fb182e69f33f6cd1d39a6c597294cff3143554b64b9825d1dc69d18cc2fff2", - "sha256:0a5f9e1dbd7fbe30196578ca36f3fba75376fb99888c395c5880b355e2875f8a", - "sha256:0e1f928eaf5469c11e886fe0885ad2bf1ec606434e79842a879277895a50942a", - "sha256:171717c7cb6b453aebac9a2ef603699da237f341b38eebfee9be75d27dc38e01", - "sha256:1e9d683426464e4a252bf70c3498756055016f99ddaec3774bf368e76bbe02b6", - "sha256:201e7389591af40950a6480bd9edfa8ed04346ff80002cec1a66cac4549c1ad7", - "sha256:245167dd26180ab4c91d5e1496a30be4cd721a5cf2abf52974f965f10f11419f", - "sha256:2aee274c46590717f38ae5e4650988d1af340fe06167546cc32fe2f58ed05b02", - "sha256:2e07b54284e381531c87f785f613b833569c14ecacdcb85d56b25c4622c16c3c", - "sha256:31563e97dae5598556600466ad9beea39fb04e0229e61c12eaa206e0aa202063", - "sha256:33d6d3ea29d5b3a1a632b3c4e4f4ecae24ef170b0b9ee493883f2df10039959a", - "sha256:3d376df58cc111dc8e21e3b6e24606b5bb5dee6024f46a5abca99124b2229ef5", - "sha256:419bfd2caae268623dd469eff96d510a920c90928b60f2073d79f8fe2bbc5959", - "sha256:48c19d2159d433ccc99e729ceae7d5293fbffa0bdb94952d3579983d1c8c9d97", - "sha256:49969a9f7ffa086d973d91cec8d2e31080436ef0fb4a359cae927e742abfaaa6", - "sha256:52edc1a60c0d34afa421c9c37078817b2e67a392cab17d97283b64c5833f427f", - "sha256:537891ae8ce59ef63d0123f7ac9e2ae0fc8b72c7ccbe5296fec45fd68967b6c9", - "sha256:54b896376ab563bd38453cecb813c295cf347cf5906e8b41d340b0321a5433e5", - "sha256:58c2ccc2f00ecb51253cbe5d8d7122a34590fac9646a960d1430d5b15321d95f", - "sha256:5b7540161790b2f28143191f5f8ec02fb132660ff175b7747b95dcb77ac26562", - "sha256:5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe", - "sha256:5e330fc79bd7207e46c7d7fd2bb4af2963f5f635703925543a70b99574b0fea9", - "sha256:61b9a528fb348373c433e8966535074b802c7a5d7f23c4f421e6c6e2f1697a6f", - "sha256:63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb", - "sha256:6d040ef7c9859bb11dfeb056ff5b3872436e3b5e401817d87a31e1750b9ae2fb", - "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1", - "sha256:7ee7d9d4822c8acc74a5e26c50604dff824710bc8de424904c0982e25c39c6cb", - "sha256:81c13a1fc7468c40f13420732805a4c38a105d89848b7c10af65a90beff25250", - "sha256:8d13c64ee2d33eccf7437961b6ea7ad8673e2be040b4f7fd4fd4d4d28d9ccb1e", - "sha256:8de8bb0e5ad103888d65abef8bca41ab93721647590a3f740100cd65c3b00511", - "sha256:8fa03bce9bfbeeef9f3b160a8bed39a221d82308b4152b27d82d8daa7041fee5", - "sha256:924d94291ca674905fe9481f12294eb11f2d3d3fd1adb20314ba89e94f44ed59", - "sha256:975d70ab7e3c80a3fe86001d8751f6778905ec723f5b110aed1e450da9d4b7f2", - "sha256:976b9c42fb2a43ebf304fa7d4a310e5f16cc99992f33eced91ef6f908bd8f33d", - "sha256:9e31cb64d7de6b6f09702bb27c02d1904b3aebfca610c12772452c4e6c21a0d3", - "sha256:a342242fe22407f3c17f4b499276a02b01e80f861f1682ad1d95b04018e0c0d4", - "sha256:a3d33a6b3eae87ceaefa91ffdc130b5e8536182cd6dfdbfc1aa56b46ff8c86de", - "sha256:a895fcc7b15c3fc72beb43cdcbdf0ddb7d2ebc959edac9cef390b0d14f39f8a9", - "sha256:afb17f84d56068a7c29f5fa37bfd38d5aba69e3304af08ee94da8ed5b0865833", - "sha256:b1c546aca0ca4d028901d825015dc8e4d56aac4b541877690eb76490f1dc8ed0", - "sha256:b29019c76039dc3c0fd815c41392a044ce555d9bcdd38b0fb60fb4cd8e475ba9", - "sha256:b46517c02ccd08092f4fa99f24c3b83d8f92f739b4657b0f146246a0ca6a831d", - "sha256:b7aa5f8a41217360e600da646004f878250a0d6738bcdc11a0a39928d7dc2050", - "sha256:b7b4c971f05e6ae490fef852c218b0e79d4e52f79ef0c8475566584a8fb3e01d", - "sha256:ba90a9563ba44a72fda2e85302c3abc71c5589cea608ca16c22b9804262aaeb6", - "sha256:cb017fd1b2603ef59e374ba2063f593abe0fc45f2ad9abdde5b4d83bd922a353", - "sha256:d22656368f0e6189e24722214ed8d66b8022db19d182927b9a248a2a8a2f67eb", - "sha256:d2c2db7fd82e9b72937969bceac4d6ca89660db0a0967614ce2481e81a0b771e", - "sha256:d39b5b4f2a66ccae8b7263ac3c8170994b65266797fb96cbbfd3fb5b23921db8", - "sha256:d62a5c7dad11015c66fbb9d881bc4caa5b12f16292f857842d9d1871595f4495", - "sha256:e7d9405291c6928619403db1d10bd07888888ec1abcbd9748fdaa971d7d661b2", - "sha256:e84606b74eb7de6ff581a7915e2dab7a28a0517fbe1c9239eb227e1354064dcd", - "sha256:eb393e5ebc85245347950143969b241d08b52b88a3dc39479822e073a1a8eb27", - "sha256:ebba1cd308ef115925421d3e6a586e655ca5a77b5bf41e02eb0e4562a111f2d1", - "sha256:ee57190f24fba796e36bb6d3aa8a8783c643d8fa9760c89f7a98ab5455fbf818", - "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4", - "sha256:f6951407391b639504e3b3be51b7ba5f3528adbf1a8ac3302b687ecababf929e", - "sha256:f75f7168ab25dd93110c8a8117a22450c19976afbc44234cbf71481094c1b850", - "sha256:fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3" + "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1", + "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63", + "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9", + "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312", + "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3", + "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb", + "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25", + "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92", + "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda", + "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148", + "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6", + "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216", + "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a", + "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640", + "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836", + "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c", + "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f", + "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2", + "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901", + "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed", + "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a", + "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074", + "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc", + "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84", + "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083", + "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f", + "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c", + "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c", + "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637", + "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2", + "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82", + "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f", + "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce", + "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef", + "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f", + "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611", + "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c", + "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76", + "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9", + "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce", + "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9", + "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf", + "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf", + "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9", + "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6", + "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2", + "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a", + "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a", + "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf", + "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738", + "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a", + "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4" ], - "markers": "python_version >= '3.7'", - "version": "==7.2.7" + "markers": "python_version >= '3.8'", + "version": "==7.3.2" }, "cryptography": { "hashes": [ - "sha256:0a4e3406cfed6b1f6d6e87ed243363652b2586b2d917b0609ca4f97072994405", - "sha256:1e0af458515d5e4028aad75f3bb3fe7a31e46ad920648cd59b64d3da842e4356", - "sha256:2803f2f8b1e95f614419926c7e6f55d828afc614ca5ed61543877ae668cc3472", - "sha256:28d63d75bf7ae4045b10de5413fb1d6338616e79015999ad9cf6fc538f772d41", - "sha256:32057d3d0ab7d4453778367ca43e99ddb711770477c4f072a51b3ca69602780a", - "sha256:3a4805a4ca729d65570a1b7cac84eac1e431085d40387b7d3bbaa47e39890b88", - "sha256:63dac2d25c47f12a7b8aa60e528bfb3c51c5a6c5a9f7c86987909c6c79765554", - "sha256:650883cc064297ef3676b1db1b7b1df6081794c4ada96fa457253c4cc40f97db", - "sha256:6f2bbd72f717ce33100e6467572abaedc61f1acb87b8d546001328d7f466b778", - "sha256:7c872413353c70e0263a9368c4993710070e70ab3e5318d85510cc91cce77e7c", - "sha256:918cb89086c7d98b1b86b9fdb70c712e5a9325ba6f7d7cfb509e784e0cfc6917", - "sha256:9618a87212cb5200500e304e43691111570e1f10ec3f35569fdfcd17e28fd797", - "sha256:a805a7bce4a77d51696410005b3e85ae2839bad9aa38894afc0aa99d8e0c3160", - "sha256:cc3a621076d824d75ab1e1e530e66e7e8564e357dd723f2533225d40fe35c60c", - "sha256:cd033d74067d8928ef00a6b1327c8ea0452523967ca4463666eeba65ca350d4c", - "sha256:cf91e428c51ef692b82ce786583e214f58392399cf65c341bc7301d096fa3ba2", - "sha256:d36bbeb99704aabefdca5aee4eba04455d7a27ceabd16f3b3ba9bdcc31da86c4", - "sha256:d8aa3609d337ad85e4eb9bb0f8bcf6e4409bfb86e706efa9a027912169e89122", - "sha256:f5d7b79fa56bc29580faafc2ff736ce05ba31feaa9d4735048b0de7d9ceb2b94" + "sha256:0c327cac00f082013c7c9fb6c46b7cc9fa3c288ca702c74773968173bda421bf", + "sha256:0d2a6a598847c46e3e321a7aef8af1436f11c27f1254933746304ff014664d84", + "sha256:227ec057cd32a41c6651701abc0328135e472ed450f47c2766f23267b792a88e", + "sha256:22892cc830d8b2c89ea60148227631bb96a7da0c1b722f2aac8824b1b7c0b6b8", + "sha256:392cb88b597247177172e02da6b7a63deeff1937fa6fec3bbf902ebd75d97ec7", + "sha256:3be3ca726e1572517d2bef99a818378bbcf7d7799d5372a46c79c29eb8d166c1", + "sha256:573eb7128cbca75f9157dcde974781209463ce56b5804983e11a1c462f0f4e88", + "sha256:580afc7b7216deeb87a098ef0674d6ee34ab55993140838b14c9b83312b37b86", + "sha256:5a70187954ba7292c7876734183e810b728b4f3965fbe571421cb2434d279179", + "sha256:73801ac9736741f220e20435f84ecec75ed70eda90f781a148f1bad546963d81", + "sha256:7d208c21e47940369accfc9e85f0de7693d9a5d843c2509b3846b2db170dfd20", + "sha256:8254962e6ba1f4d2090c44daf50a547cd5f0bf446dc658a8e5f8156cae0d8548", + "sha256:88417bff20162f635f24f849ab182b092697922088b477a7abd6664ddd82291d", + "sha256:a48e74dad1fb349f3dc1d449ed88e0017d792997a7ad2ec9587ed17405667e6d", + "sha256:b948e09fe5fb18517d99994184854ebd50b57248736fd4c720ad540560174ec5", + "sha256:c707f7afd813478e2019ae32a7c49cd932dd60ab2d2a93e796f68236b7e1fbf1", + "sha256:d38e6031e113b7421db1de0c1b1f7739564a88f1684c6b89234fbf6c11b75147", + "sha256:d3977f0e276f6f5bf245c403156673db103283266601405376f075c849a0b936", + "sha256:da6a0ff8f1016ccc7477e6339e1d50ce5f59b88905585f77193ebd5068f1e797", + "sha256:e270c04f4d9b5671ebcc792b3ba5d4488bf7c42c3c241a3748e2599776f29696", + "sha256:e886098619d3815e0ad5790c973afeee2c0e6e04b4da90b88e6bd06e2a0b1b72", + "sha256:ec3b055ff8f1dce8e6ef28f626e0972981475173d7973d63f271b29c8a2897da", + "sha256:fba1e91467c65fe64a82c689dc6cf58151158993b13eb7a7f3f4b7f395636723" ], - "index": "pypi", - "version": "==40.0.1" + "markers": "python_version >= '3.7'", + "version": "==41.0.5" }, "daphne": { "hashes": [ @@ -2460,6 +2659,7 @@ "sha256:cce9afc8f49a4f15d4270b8cfb0e0fe811b770a5cc795474e97e4da287497666" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==4.0.0" }, "distlib": { @@ -2471,11 +2671,11 @@ }, "exceptiongroup": { "hashes": [ - "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5", - "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f" + "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9", + "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3" ], "markers": "python_version < '3.11'", - "version": "==1.1.2" + "version": "==1.1.3" }, "execnet": { "hashes": [ @@ -2491,23 +2691,25 @@ "sha256:bc76d97d1a65bbd9842a6d722882098eb549ec8ee1081f9fb2e8ff29f0c300f1" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==3.3.0" }, "faker": { "hashes": [ - "sha256:78840b94843f3aa32a34a220b2b5e8b309e3ffff3a231b0c54e841bb68e0757d", - "sha256:c6c1218482faf79ae1d791bb7124067d12339e0b8f400de855e2c281bcf78c77" + "sha256:171b27ba106cf69e30a91ac471407c2362bd6af27738e2461dc441aeff5eed91", + "sha256:df44b68b9d231e784f4bfe616d781576cfef9f0c5d9a17671bf84dc10d7b44d6" ], "markers": "python_version >= '3.8'", - "version": "==19.2.0" + "version": "==20.0.0" }, "filelock": { "hashes": [ - "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81", - "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec" + "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e", + "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c" ], "index": "pypi", - "version": "==3.12.2" + "markers": "python_version >= '3.8'", + "version": "==3.13.1" }, "ghp-import": { "hashes": [ @@ -2526,19 +2728,22 @@ }, "httpcore": { "hashes": [ - "sha256:a6f30213335e34c1ade7be6ec7c47f19f50c56db36abef1a9dfa3815b1cb3888", - "sha256:c2789b767ddddfa2a5782e3199b2b7f6894540b17b16ec26b2c4d8e103510b87" + "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7", + "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535" ], - "markers": "python_version >= '3.7'", - "version": "==0.17.3" + "markers": "python_version >= '3.8'", + "version": "==1.0.2" }, "httpx": { - "hashes": [ - "sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd", - "sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd" + "extras": [ + "http2" ], - "markers": "python_version >= '3.7'", - "version": "==0.24.1" + "hashes": [ + "sha256:fec7d6cc5c27c578a391f7e87b9aa7d3d8fbcd034f6399f9f79b45bcc12a866a", + "sha256:ffd96d5cf901e63863d9f1b4b6807861dbea4d301613415d9e6e57ead15fc5d0" + ], + "markers": "python_version >= '3.9'", + "version": "==0.25.1" }, "hyperlink": { "hashes": [ @@ -2549,11 +2754,11 @@ }, "identify": { "hashes": [ - "sha256:7243800bce2f58404ed41b7c002e53d4d22bcf3ae1b7900c2d7aefd95394bf7f", - "sha256:c22a8ead0d4ca11f1edd6c9418c3220669b3b7533ada0a0ffa6cc0ef85cf9b54" + "sha256:7736b3c7a28233637e3c36550646fc6389bedd74ae84cb788200cc8e2dd60b75", + "sha256:90199cb9e7bd3c5407a9b7e81b4abec4bb9d249991c79439ec8af740afc6293d" ], "markers": "python_version >= '3.8'", - "version": "==2.5.26" + "version": "==2.5.31" }, "idna": { "hashes": [ @@ -2604,11 +2809,11 @@ }, "markdown": { "hashes": [ - "sha256:225c6123522495d4119a90b3a3ba31a1e87a70369e03f14799ea9c0d7183a3d6", - "sha256:a4c1b65c0957b4bd9e7d86ddc7b3c9868fb9670660f6f99f6d1bca8954d5a941" + "sha256:5874b47d4ee3f0b14d764324d2c94c03ea66bee56f2d929da9f2508d65e722dc", + "sha256:b65d7beb248dc22f2e8a31fb706d93798093c308dc1aba295aedeb9d41a813bd" ], - "markers": "python_version >= '3.7'", - "version": "==3.4.4" + "markers": "python_version >= '3.8'", + "version": "==3.5.1" }, "markupsafe": { "hashes": [ @@ -2616,8 +2821,11 @@ "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e", "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431", "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686", + "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c", "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559", "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc", + "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb", + "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939", "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c", "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0", "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4", @@ -2625,6 +2833,7 @@ "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575", "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba", "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d", + "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd", "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3", "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00", "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155", @@ -2633,6 +2842,7 @@ "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f", "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8", "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b", + "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007", "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24", "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea", "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198", @@ -2640,9 +2850,12 @@ "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee", "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be", "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2", + "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1", "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707", "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6", + "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c", "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58", + "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823", "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779", "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636", "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c", @@ -2661,7 +2874,9 @@ "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9", "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57", "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc", - "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2" + "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc", + "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2", + "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11" ], "markers": "python_version >= '3.7'", "version": "==2.1.3" @@ -2676,27 +2891,36 @@ }, "mkdocs": { "hashes": [ - "sha256:91a75e3a5a75e006b2149814d5c56af170039ceda0732f51e7af1a463599c00d", - "sha256:ff54eac0b74bf39a2e91f179e2ac16ef36f0294b9ab161c22f564382b30a31ae" + "sha256:3b3a78e736b31158d64dbb2f8ba29bd46a379d0c6e324c2246c3bc3d2189cfc1", + "sha256:eb7c99214dcb945313ba30426c2451b735992c73c2e10838f76d09e39ff4d0e2" ], "markers": "python_version >= '3.7'", - "version": "==1.5.0" + "version": "==1.5.3" + }, + "mkdocs-glightbox": { + "hashes": [ + "sha256:8f894435b4f75231164e5d9fb023c01e922e6769e74a121e822c4914f310a41d", + "sha256:96aaf98216f83c0d0fad2e42a8d805cfa6329d6ab25b54265012ccb2154010d8" + ], + "index": "pypi", + "version": "==0.3.4" }, "mkdocs-material": { "hashes": [ - "sha256:152db66f667825d5aa3398386fe4d227640ec393c31e7cf109b114a569fc40fc", - "sha256:91621b6a6002138c72d50a0beef20ed12cf367d2af27d1f53382562b3a9625c7" + "sha256:8b20f6851bddeef37dced903893cd176cf13a21a482e97705a103c45f06ce9b9", + "sha256:f0c101453e8bc12b040e8b64ca39a405d950d8402609b1378cc2b98976e74b5f" ], "index": "pypi", - "version": "==9.1.20" + "markers": "python_version >= '3.8'", + "version": "==9.4.8" }, "mkdocs-material-extensions": { "hashes": [ - "sha256:9c003da71e2cc2493d910237448c672e00cefc800d3d6ae93d2fc69979e3bd93", - "sha256:e41d9f38e4798b6617ad98ca8f7f1157b1e4385ac1459ca1e4ea219b556df945" + "sha256:0297cc48ba68a9fdd1ef3780a3b41b534b0d0df1d1181a44676fda5f464eeadc", + "sha256:f0446091503acb110a7cab9349cbc90eeac51b58d1caa92a704a81ca1e24ddbd" ], - "markers": "python_version >= '3.7'", - "version": "==1.1.1" + "markers": "python_version >= '3.8'", + "version": "==1.3" }, "mypy-extensions": { "hashes": [ @@ -2716,157 +2940,152 @@ }, "numpy": { "hashes": [ - "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f", - "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61", - "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7", - "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400", - "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef", - "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2", - "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d", - "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc", - "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835", - "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706", - "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5", - "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4", - "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6", - "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463", - "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a", - "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f", - "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e", - "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e", - "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694", - "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8", - "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64", - "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d", - "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc", - "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254", - "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2", - "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1", - "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810", - "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9" + "sha256:06fa1ed84aa60ea6ef9f91ba57b5ed963c3729534e6e54055fc151fad0423f0a", + "sha256:174a8880739c16c925799c018f3f55b8130c1f7c8e75ab0a6fa9d41cab092fd6", + "sha256:1a13860fdcd95de7cf58bd6f8bc5a5ef81c0b0625eb2c9a783948847abbef2c2", + "sha256:1cc3d5029a30fb5f06704ad6b23b35e11309491c999838c31f124fee32107c79", + "sha256:22f8fc02fdbc829e7a8c578dd8d2e15a9074b630d4da29cda483337e300e3ee9", + "sha256:26c9d33f8e8b846d5a65dd068c14e04018d05533b348d9eaeef6c1bd787f9919", + "sha256:2b3fca8a5b00184828d12b073af4d0fc5fdd94b1632c2477526f6bd7842d700d", + "sha256:2beef57fb031dcc0dc8fa4fe297a742027b954949cabb52a2a376c144e5e6060", + "sha256:36340109af8da8805d8851ef1d74761b3b88e81a9bd80b290bbfed61bd2b4f75", + "sha256:3703fc9258a4a122d17043e57b35e5ef1c5a5837c3db8be396c82e04c1cf9b0f", + "sha256:3ced40d4e9e18242f70dd02d739e44698df3dcb010d31f495ff00a31ef6014fe", + "sha256:4a06263321dfd3598cacb252f51e521a8cb4b6df471bb12a7ee5cbab20ea9167", + "sha256:4eb8df4bf8d3d90d091e0146f6c28492b0be84da3e409ebef54349f71ed271ef", + "sha256:5d5244aabd6ed7f312268b9247be47343a654ebea52a60f002dc70c769048e75", + "sha256:64308ebc366a8ed63fd0bf426b6a9468060962f1a4339ab1074c228fa6ade8e3", + "sha256:6a3cdb4d9c70e6b8c0814239ead47da00934666f668426fc6e94cce869e13fd7", + "sha256:854ab91a2906ef29dc3925a064fcd365c7b4da743f84b123002f6139bcb3f8a7", + "sha256:94cc3c222bb9fb5a12e334d0479b97bb2df446fbe622b470928f5284ffca3f8d", + "sha256:96ca5482c3dbdd051bcd1fce8034603d6ebfc125a7bd59f55b40d8f5d246832b", + "sha256:a2bbc29fcb1771cd7b7425f98b05307776a6baf43035d3b80c4b0f29e9545186", + "sha256:a4cd6ed4a339c21f1d1b0fdf13426cb3b284555c27ac2f156dfdaaa7e16bfab0", + "sha256:aa18428111fb9a591d7a9cc1b48150097ba6a7e8299fb56bdf574df650e7d1f1", + "sha256:aa317b2325f7aa0a9471663e6093c210cb2ae9c0ad824732b307d2c51983d5b6", + "sha256:b04f5dc6b3efdaab541f7857351aac359e6ae3c126e2edb376929bd3b7f92d7e", + "sha256:b272d4cecc32c9e19911891446b72e986157e6a1809b7b56518b4f3755267523", + "sha256:b361d369fc7e5e1714cf827b731ca32bff8d411212fccd29ad98ad622449cc36", + "sha256:b96e7b9c624ef3ae2ae0e04fa9b460f6b9f17ad8b4bec6d7756510f1f6c0c841", + "sha256:baf8aab04a2c0e859da118f0b38617e5ee65d75b83795055fb66c0d5e9e9b818", + "sha256:bcc008217145b3d77abd3e4d5ef586e3bdfba8fe17940769f8aa09b99e856c00", + "sha256:bd3f0091e845164a20bd5a326860c840fe2af79fa12e0469a12768a3ec578d80", + "sha256:cc392fdcbd21d4be6ae1bb4475a03ce3b025cd49a9be5345d76d7585aea69440", + "sha256:d73a3abcac238250091b11caef9ad12413dab01669511779bc9b29261dd50210", + "sha256:f43740ab089277d403aa07567be138fc2a89d4d9892d113b76153e0e412409f8", + "sha256:f65738447676ab5777f11e6bbbdb8ce11b785e105f690bc45966574816b6d3ea", + "sha256:f79b231bf5c16b1f39c7f4875e1ded36abee1591e98742b05d8a0fb55d8a3eec", + "sha256:fe6b44fb8fcdf7eda4ef4461b97b3f63c466b27ab151bec2366db8b197387841" ], - "markers": "python_version >= '3.8'", - "version": "==1.24.4" + "markers": "python_version >= '3.9'", + "version": "==1.26.2" }, "packaging": { "hashes": [ - "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61", - "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" + "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", + "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" ], "markers": "python_version >= '3.7'", - "version": "==23.1" + "version": "==23.2" + }, + "paginate": { + "hashes": [ + "sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d" + ], + "version": "==0.5.6" }, "pathspec": { "hashes": [ - "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687", - "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293" + "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20", + "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3" ], "markers": "python_version >= '3.7'", - "version": "==0.11.1" - }, - "pdfminer.six": { - "hashes": [ - "sha256:1eaddd712d5b2732f8ac8486824533514f8ba12a0787b3d5fe1e686cd826532d", - "sha256:8448ab7b939d18b64820478ecac5394f482d7a79f5f7eaa7703c6c959c175e1d" - ], - "markers": "python_version >= '3.6'", - "version": "==20221105" + "version": "==0.11.2" }, "pillow": { "hashes": [ - "sha256:07999f5834bdc404c442146942a2ecadd1cb6292f5229f4ed3b31e0a108746b1", - "sha256:0852ddb76d85f127c135b6dd1f0bb88dbb9ee990d2cd9aa9e28526c93e794fba", - "sha256:1781a624c229cb35a2ac31cc4a77e28cafc8900733a864870c49bfeedacd106a", - "sha256:1e7723bd90ef94eda669a3c2c19d549874dd5badaeefabefd26053304abe5799", - "sha256:229e2c79c00e85989a34b5981a2b67aa079fd08c903f0aaead522a1d68d79e51", - "sha256:22baf0c3cf0c7f26e82d6e1adf118027afb325e703922c8dfc1d5d0156bb2eeb", - "sha256:252a03f1bdddce077eff2354c3861bf437c892fb1832f75ce813ee94347aa9b5", - "sha256:2dfaaf10b6172697b9bceb9a3bd7b951819d1ca339a5ef294d1f1ac6d7f63270", - "sha256:322724c0032af6692456cd6ed554bb85f8149214d97398bb80613b04e33769f6", - "sha256:35f6e77122a0c0762268216315bf239cf52b88865bba522999dc38f1c52b9b47", - "sha256:375f6e5ee9620a271acb6820b3d1e94ffa8e741c0601db4c0c4d3cb0a9c224bf", - "sha256:3ded42b9ad70e5f1754fb7c2e2d6465a9c842e41d178f262e08b8c85ed8a1d8e", - "sha256:432b975c009cf649420615388561c0ce7cc31ce9b2e374db659ee4f7d57a1f8b", - "sha256:482877592e927fd263028c105b36272398e3e1be3269efda09f6ba21fd83ec66", - "sha256:489f8389261e5ed43ac8ff7b453162af39c3e8abd730af8363587ba64bb2e865", - "sha256:54f7102ad31a3de5666827526e248c3530b3a33539dbda27c6843d19d72644ec", - "sha256:560737e70cb9c6255d6dcba3de6578a9e2ec4b573659943a5e7e4af13f298f5c", - "sha256:5671583eab84af046a397d6d0ba25343c00cd50bce03787948e0fff01d4fd9b1", - "sha256:5ba1b81ee69573fe7124881762bb4cd2e4b6ed9dd28c9c60a632902fe8db8b38", - "sha256:5d4ebf8e1db4441a55c509c4baa7a0587a0210f7cd25fcfe74dbbce7a4bd1906", - "sha256:60037a8db8750e474af7ffc9faa9b5859e6c6d0a50e55c45576bf28be7419705", - "sha256:608488bdcbdb4ba7837461442b90ea6f3079397ddc968c31265c1e056964f1ef", - "sha256:6608ff3bf781eee0cd14d0901a2b9cc3d3834516532e3bd673a0a204dc8615fc", - "sha256:662da1f3f89a302cc22faa9f14a262c2e3951f9dbc9617609a47521c69dd9f8f", - "sha256:7002d0797a3e4193c7cdee3198d7c14f92c0836d6b4a3f3046a64bd1ce8df2bf", - "sha256:763782b2e03e45e2c77d7779875f4432e25121ef002a41829d8868700d119392", - "sha256:77165c4a5e7d5a284f10a6efaa39a0ae8ba839da344f20b111d62cc932fa4e5d", - "sha256:7c9af5a3b406a50e313467e3565fc99929717f780164fe6fbb7704edba0cebbe", - "sha256:7ec6f6ce99dab90b52da21cf0dc519e21095e332ff3b399a357c187b1a5eee32", - "sha256:833b86a98e0ede388fa29363159c9b1a294b0905b5128baf01db683672f230f5", - "sha256:84a6f19ce086c1bf894644b43cd129702f781ba5751ca8572f08aa40ef0ab7b7", - "sha256:8507eda3cd0608a1f94f58c64817e83ec12fa93a9436938b191b80d9e4c0fc44", - "sha256:85ec677246533e27770b0de5cf0f9d6e4ec0c212a1f89dfc941b64b21226009d", - "sha256:8aca1152d93dcc27dc55395604dcfc55bed5f25ef4c98716a928bacba90d33a3", - "sha256:8d935f924bbab8f0a9a28404422da8af4904e36d5c33fc6f677e4c4485515625", - "sha256:8f36397bf3f7d7c6a3abdea815ecf6fd14e7fcd4418ab24bae01008d8d8ca15e", - "sha256:91ec6fe47b5eb5a9968c79ad9ed78c342b1f97a091677ba0e012701add857829", - "sha256:965e4a05ef364e7b973dd17fc765f42233415974d773e82144c9bbaaaea5d089", - "sha256:96e88745a55b88a7c64fa49bceff363a1a27d9a64e04019c2281049444a571e3", - "sha256:99eb6cafb6ba90e436684e08dad8be1637efb71c4f2180ee6b8f940739406e78", - "sha256:9adf58f5d64e474bed00d69bcd86ec4bcaa4123bfa70a65ce72e424bfb88ed96", - "sha256:9b1af95c3a967bf1da94f253e56b6286b50af23392a886720f563c547e48e964", - "sha256:a0aa9417994d91301056f3d0038af1199eb7adc86e646a36b9e050b06f526597", - "sha256:a0f9bb6c80e6efcde93ffc51256d5cfb2155ff8f78292f074f60f9e70b942d99", - "sha256:a127ae76092974abfbfa38ca2d12cbeddcdeac0fb71f9627cc1135bedaf9d51a", - "sha256:aaf305d6d40bd9632198c766fb64f0c1a83ca5b667f16c1e79e1661ab5060140", - "sha256:aca1c196f407ec7cf04dcbb15d19a43c507a81f7ffc45b690899d6a76ac9fda7", - "sha256:ace6ca218308447b9077c14ea4ef381ba0b67ee78d64046b3f19cf4e1139ad16", - "sha256:b416f03d37d27290cb93597335a2f85ed446731200705b22bb927405320de903", - "sha256:bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1", - "sha256:c1170d6b195555644f0616fd6ed929dfcf6333b8675fcca044ae5ab110ded296", - "sha256:c380b27d041209b849ed246b111b7c166ba36d7933ec6e41175fd15ab9eb1572", - "sha256:c446d2245ba29820d405315083d55299a796695d747efceb5717a8b450324115", - "sha256:c830a02caeb789633863b466b9de10c015bded434deb3ec87c768e53752ad22a", - "sha256:cb841572862f629b99725ebaec3287fc6d275be9b14443ea746c1dd325053cbd", - "sha256:cfa4561277f677ecf651e2b22dc43e8f5368b74a25a8f7d1d4a3a243e573f2d4", - "sha256:cfcc2c53c06f2ccb8976fb5c71d448bdd0a07d26d8e07e321c103416444c7ad1", - "sha256:d3c6b54e304c60c4181da1c9dadf83e4a54fd266a99c70ba646a9baa626819eb", - "sha256:d3d403753c9d5adc04d4694d35cf0391f0f3d57c8e0030aac09d7678fa8030aa", - "sha256:d9c206c29b46cfd343ea7cdfe1232443072bbb270d6a46f59c259460db76779a", - "sha256:e49eb4e95ff6fd7c0c402508894b1ef0e01b99a44320ba7d8ecbabefddcc5569", - "sha256:f8286396b351785801a976b1e85ea88e937712ee2c3ac653710a4a57a8da5d9c", - "sha256:f8fc330c3370a81bbf3f88557097d1ea26cd8b019d6433aa59f71195f5ddebbf", - "sha256:fbd359831c1657d69bb81f0db962905ee05e5e9451913b18b831febfe0519082", - "sha256:fe7e1c262d3392afcf5071df9afa574544f28eac825284596ac6db56e6d11062", - "sha256:fed1e1cf6a42577953abbe8e6cf2fe2f566daebde7c34724ec8803c4c0cda579" + "sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d", + "sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de", + "sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616", + "sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839", + "sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099", + "sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a", + "sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219", + "sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106", + "sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b", + "sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412", + "sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b", + "sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7", + "sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2", + "sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7", + "sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14", + "sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f", + "sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27", + "sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57", + "sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262", + "sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28", + "sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610", + "sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172", + "sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273", + "sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e", + "sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d", + "sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818", + "sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f", + "sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9", + "sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01", + "sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7", + "sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651", + "sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312", + "sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80", + "sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666", + "sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061", + "sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b", + "sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992", + "sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593", + "sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4", + "sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db", + "sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba", + "sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd", + "sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e", + "sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212", + "sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb", + "sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2", + "sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34", + "sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256", + "sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f", + "sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2", + "sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38", + "sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996", + "sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a", + "sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793" ], - "index": "pypi", - "version": "==9.5.0" + "markers": "python_version >= '3.8'", + "version": "==10.1.0" }, "platformdirs": { "hashes": [ - "sha256:1b42b450ad933e981d56e59f1b97495428c9bd60698baab9f3eb3d00d5822421", - "sha256:ad8291ae0ae5072f66c16945166cb11c63394c7a3ad1b1bc9828ca3162da8c2f" + "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3", + "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e" ], "markers": "python_version >= '3.7'", - "version": "==3.9.1" + "version": "==3.11.0" }, "pluggy": { "hashes": [ - "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849", - "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3" + "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12", + "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7" ], - "markers": "python_version >= '3.7'", - "version": "==1.2.0" + "markers": "python_version >= '3.8'", + "version": "==1.3.0" }, "pre-commit": { "hashes": [ - "sha256:10badb65d6a38caff29703362271d7dca483d01da88f9d7e05d0b97171c136cb", - "sha256:a2256f489cd913d575c145132ae196fe335da32d91a8294b7afe6622335dd023" + "sha256:5804465c675b659b0862f07907f96295d490822a450c4c40e747d0b1c6ebcb32", + "sha256:841dc9aef25daba9a0238cd27984041fa0467b4199fc4852e27950664919f660" ], "index": "pypi", - "version": "==3.3.3" + "markers": "python_version >= '3.8'", + "version": "==3.5.0" }, "pyasn1": { "hashes": [ @@ -2893,35 +3112,35 @@ }, "pygments": { "hashes": [ - "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c", - "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1" + "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692", + "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29" ], "markers": "python_version >= '3.7'", - "version": "==2.15.1" + "version": "==2.16.1" }, "pymdown-extensions": { "hashes": [ - "sha256:508009b211373058debb8247e168de4cbcb91b1bff7b5e961b2c3e864e00b195", - "sha256:ef25dbbae530e8f67575d222b75ff0649b1e841e22c2ae9a20bad9472c2207dc" + "sha256:bc46f11749ecd4d6b71cf62396104b4a200bad3498cb0f5dad1b8502fe461a35", + "sha256:cfc28d6a09d19448bcbf8eee3ce098c7d17ff99f7bd3069db4819af181212037" ], - "markers": "python_version >= '3.7'", - "version": "==10.1" + "markers": "python_version >= '3.8'", + "version": "==10.4" }, "pyopenssl": { "hashes": [ - "sha256:841498b9bec61623b1b6c47ebbc02367c07d60e0e195f19790817f10cc8db0b7", - "sha256:9e0c526404a210df9d2b18cd33364beadb0dc858a739b885677bc65e105d4a4c" + "sha256:6756834481d9ed5470f4a9393455154bc92fe7a64b7bc6ee2c804e78c52099b2", + "sha256:6b2cba5cc46e822750ec3e5a81ee12819850b11303630d575e98108a079c2b12" ], - "version": "==23.1.1" + "version": "==23.3.0" }, "pytest": { "hashes": [ - "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32", - "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a" + "sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac", + "sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5" ], "index": "pypi", "markers": "python_version >= '3.7'", - "version": "==7.4.0" + "version": "==7.4.3" }, "pytest-cov": { "hashes": [ @@ -2929,31 +3148,35 @@ "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==4.1.0" }, "pytest-django": { "hashes": [ - "sha256:c60834861933773109334fe5a53e83d1ef4828f2203a1d6a0fa9972f4f75ab3e", - "sha256:d9076f759bb7c36939dbdd5ae6633c18edfc2902d1a69fdbefd2426b970ce6c2" + "sha256:4e1c79d5261ade2dd58d91208017cd8f62cb4710b56e012ecd361d15d5d662a2", + "sha256:92d6fd46b1d79b54fb6b060bbb39428073396cec717d5f2e122a990d4b6aa5e8" ], "index": "pypi", - "version": "==4.5.2" + "markers": "python_version >= '3.8'", + "version": "==4.7.0" }, "pytest-env": { "hashes": [ - "sha256:5e533273f4d9e6a41c3a3120e0c7944aae5674fa773b329f00a5eb1f23c53a38", - "sha256:baed9b3b6bae77bd75b9238e0ed1ee6903a42806ae9d6aeffb8754cd5584d4ff" + "sha256:1efb8acce1f6431196150f3b30673443ff05a6fabff64539a9495cd2248adf9e", + "sha256:2b71b37c6810f28bec790a7b373c777af87352b3a359b3de0edb9d24df5cf8b3" ], "index": "pypi", - "version": "==0.8.2" + "markers": "python_version >= '3.8'", + "version": "==1.1.1" }, "pytest-httpx": { "hashes": [ - "sha256:3a82797f3a9a14d51e8c6b7fa97524b68b847ee801109c062e696b4744f4431c", - "sha256:cefb7dcf66a4cb0601b0de05e576cca423b6081f3245e7912a4d84c58fa3eae8" + "sha256:b489c5a7bb847551943eaee601bc35053b35dc4f5961c944305120f14a1d770a", + "sha256:ca372b94c569c0aca2f06240f6f78cc223dfbc3ab97b5700d4e14c9a73eab17a" ], "index": "pypi", - "version": "==0.22.0" + "markers": "python_version >= '3.9'", + "version": "==0.26.0" }, "pytest-rerunfailures": { "hashes": [ @@ -2974,11 +3197,12 @@ }, "pytest-xdist": { "hashes": [ - "sha256:d5ee0520eb1b7bcca50a60a518ab7a7707992812c578198f8b44fdfac78e8c93", - "sha256:ff9daa7793569e6a68544850fd3927cd257cc03a7ef76c95e86915355e82b5f2" + "sha256:3a94a931dd9e268e0b871a877d09fe2efb6175c2c23d60d56a6001359002b832", + "sha256:e513118bf787677a427e025606f55e95937565e06dfaac8d87f55301e57ae607" ], "index": "pypi", - "version": "==3.3.1" + "markers": "python_version >= '3.7'", + "version": "==3.4.0" }, "python-dateutil": { "hashes": [ @@ -2986,6 +3210,7 @@ "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], "index": "pypi", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.2" }, "pywavelets": { @@ -3021,7 +3246,9 @@ }, "pyyaml": { "hashes": [ + "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5", "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc", + "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df", "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741", "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206", "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27", @@ -3029,7 +3256,10 @@ "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62", "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98", "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696", + "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290", + "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9", "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d", + "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6", "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867", "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47", "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486", @@ -3037,9 +3267,12 @@ "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3", "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007", "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938", + "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0", "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c", "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735", "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d", + "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28", + "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4", "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba", "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8", "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5", @@ -3054,7 +3287,9 @@ "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43", "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859", "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673", + "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54", "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a", + "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b", "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab", "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa", "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c", @@ -3074,97 +3309,97 @@ }, "regex": { "hashes": [ - "sha256:0385e73da22363778ef2324950e08b689abdf0b108a7d8decb403ad7f5191938", - "sha256:051da80e6eeb6e239e394ae60704d2b566aa6a7aed6f2890a7967307267a5dc6", - "sha256:05ed27acdf4465c95826962528f9e8d41dbf9b1aa8531a387dee6ed215a3e9ef", - "sha256:0654bca0cdf28a5956c83839162692725159f4cda8d63e0911a2c0dc76166525", - "sha256:09e4a1a6acc39294a36b7338819b10baceb227f7f7dbbea0506d419b5a1dd8af", - "sha256:0b49c764f88a79160fa64f9a7b425620e87c9f46095ef9c9920542ab2495c8bc", - "sha256:0b71e63226e393b534105fcbdd8740410dc6b0854c2bfa39bbda6b0d40e59a54", - "sha256:0c29ca1bd61b16b67be247be87390ef1d1ef702800f91fbd1991f5c4421ebae8", - "sha256:10590510780b7541969287512d1b43f19f965c2ece6c9b1c00fc367b29d8dce7", - "sha256:10cb847aeb1728412c666ab2e2000ba6f174f25b2bdc7292e7dd71b16db07568", - "sha256:12b74fbbf6cbbf9dbce20eb9b5879469e97aeeaa874145517563cca4029db65c", - "sha256:20326216cc2afe69b6e98528160b225d72f85ab080cbdf0b11528cbbaba2248f", - "sha256:2239d95d8e243658b8dbb36b12bd10c33ad6e6933a54d36ff053713f129aa536", - "sha256:25be746a8ec7bc7b082783216de8e9473803706723b3f6bef34b3d0ed03d57e2", - "sha256:271f0bdba3c70b58e6f500b205d10a36fb4b58bd06ac61381b68de66442efddb", - "sha256:29cdd471ebf9e0f2fb3cac165efedc3c58db841d83a518b082077e612d3ee5df", - "sha256:2d44dc13229905ae96dd2ae2dd7cebf824ee92bc52e8cf03dcead37d926da019", - "sha256:3676f1dd082be28b1266c93f618ee07741b704ab7b68501a173ce7d8d0d0ca18", - "sha256:36efeba71c6539d23c4643be88295ce8c82c88bbd7c65e8a24081d2ca123da3f", - "sha256:3e5219bf9e75993d73ab3d25985c857c77e614525fac9ae02b1bebd92f7cecac", - "sha256:43e1dd9d12df9004246bacb79a0e5886b3b6071b32e41f83b0acbf293f820ee8", - "sha256:457b6cce21bee41ac292d6753d5e94dcbc5c9e3e3a834da285b0bde7aa4a11e9", - "sha256:463b6a3ceb5ca952e66550a4532cef94c9a0c80dc156c4cc343041951aec1697", - "sha256:4959e8bcbfda5146477d21c3a8ad81b185cd252f3d0d6e4724a5ef11c012fb06", - "sha256:4d3850beab9f527f06ccc94b446c864059c57651b3f911fddb8d9d3ec1d1b25d", - "sha256:5708089ed5b40a7b2dc561e0c8baa9535b77771b64a8330b684823cfd5116036", - "sha256:5c6b48d0fa50d8f4df3daf451be7f9689c2bde1a52b1225c5926e3f54b6a9ed1", - "sha256:61474f0b41fe1a80e8dfa70f70ea1e047387b7cd01c85ec88fa44f5d7561d787", - "sha256:6343c6928282c1f6a9db41f5fd551662310e8774c0e5ebccb767002fcf663ca9", - "sha256:65ba8603753cec91c71de423a943ba506363b0e5c3fdb913ef8f9caa14b2c7e0", - "sha256:687ea9d78a4b1cf82f8479cab23678aff723108df3edeac098e5b2498879f4a7", - "sha256:6b2675068c8b56f6bfd5a2bda55b8accbb96c02fd563704732fd1c95e2083461", - "sha256:7117d10690c38a622e54c432dfbbd3cbd92f09401d622902c32f6d377e2300ee", - "sha256:7178bbc1b2ec40eaca599d13c092079bf529679bf0371c602edaa555e10b41c3", - "sha256:72d1a25bf36d2050ceb35b517afe13864865268dfb45910e2e17a84be6cbfeb0", - "sha256:742e19a90d9bb2f4a6cf2862b8b06dea5e09b96c9f2df1779e53432d7275331f", - "sha256:74390d18c75054947e4194019077e243c06fbb62e541d8817a0fa822ea310c14", - "sha256:74419d2b50ecb98360cfaa2974da8689cb3b45b9deff0dcf489c0d333bcc1477", - "sha256:824bf3ac11001849aec3fa1d69abcb67aac3e150a933963fb12bda5151fe1bfd", - "sha256:83320a09188e0e6c39088355d423aa9d056ad57a0b6c6381b300ec1a04ec3d16", - "sha256:837328d14cde912af625d5f303ec29f7e28cdab588674897baafaf505341f2fc", - "sha256:841d6e0e5663d4c7b4c8099c9997be748677d46cbf43f9f471150e560791f7ff", - "sha256:87b2a5bb5e78ee0ad1de71c664d6eb536dc3947a46a69182a90f4410f5e3f7dd", - "sha256:890e5a11c97cf0d0c550eb661b937a1e45431ffa79803b942a057c4fb12a2da2", - "sha256:8abbc5d54ea0ee80e37fef009e3cec5dafd722ed3c829126253d3e22f3846f1e", - "sha256:8e3f1316c2293e5469f8f09dc2d76efb6c3982d3da91ba95061a7e69489a14ef", - "sha256:8f56fcb7ff7bf7404becdfc60b1e81a6d0561807051fd2f1860b0d0348156a07", - "sha256:9427a399501818a7564f8c90eced1e9e20709ece36be701f394ada99890ea4b3", - "sha256:976d7a304b59ede34ca2921305b57356694f9e6879db323fd90a80f865d355a3", - "sha256:9a5bfb3004f2144a084a16ce19ca56b8ac46e6fd0651f54269fc9e230edb5e4a", - "sha256:9beb322958aaca059f34975b0df135181f2e5d7a13b84d3e0e45434749cb20f7", - "sha256:9edcbad1f8a407e450fbac88d89e04e0b99a08473f666a3f3de0fd292badb6aa", - "sha256:9edce5281f965cf135e19840f4d93d55b3835122aa76ccacfd389e880ba4cf82", - "sha256:a4c3b7fa4cdaa69268748665a1a6ff70c014d39bb69c50fda64b396c9116cf77", - "sha256:a8105e9af3b029f243ab11ad47c19b566482c150c754e4c717900a798806b222", - "sha256:a99b50300df5add73d307cf66abea093304a07eb017bce94f01e795090dea87c", - "sha256:aad51907d74fc183033ad796dd4c2e080d1adcc4fd3c0fd4fd499f30c03011cd", - "sha256:af4dd387354dc83a3bff67127a124c21116feb0d2ef536805c454721c5d7993d", - "sha256:b28f5024a3a041009eb4c333863d7894d191215b39576535c6734cd88b0fcb68", - "sha256:b4598b1897837067a57b08147a68ac026c1e73b31ef6e36deeeb1fa60b2933c9", - "sha256:b6192d5af2ccd2a38877bfef086d35e6659566a335b1492786ff254c168b1693", - "sha256:b862c2b9d5ae38a68b92e215b93f98d4c5e9454fa36aae4450f61dd33ff48487", - "sha256:b956231ebdc45f5b7a2e1f90f66a12be9610ce775fe1b1d50414aac1e9206c06", - "sha256:bb60b503ec8a6e4e3e03a681072fa3a5adcbfa5479fa2d898ae2b4a8e24c4591", - "sha256:bbb02fd4462f37060122e5acacec78e49c0fbb303c30dd49c7f493cf21fc5b27", - "sha256:bdff5eab10e59cf26bc479f565e25ed71a7d041d1ded04ccf9aee1d9f208487a", - "sha256:c123f662be8ec5ab4ea72ea300359023a5d1df095b7ead76fedcd8babbedf969", - "sha256:c2b867c17a7a7ae44c43ebbeb1b5ff406b3e8d5b3e14662683e5e66e6cc868d3", - "sha256:c5f8037000eb21e4823aa485149f2299eb589f8d1fe4b448036d230c3f4e68e0", - "sha256:c6a57b742133830eec44d9b2290daf5cbe0a2f1d6acee1b3c7b1c7b2f3606df7", - "sha256:ccf91346b7bd20c790310c4147eee6ed495a54ddb6737162a36ce9dbef3e4751", - "sha256:cf67ca618b4fd34aee78740bea954d7c69fdda419eb208c2c0c7060bb822d747", - "sha256:d2da3abc88711bce7557412310dfa50327d5769a31d1c894b58eb256459dc289", - "sha256:d4f03bb71d482f979bda92e1427f3ec9b220e62a7dd337af0aa6b47bf4498f72", - "sha256:d54af539295392611e7efbe94e827311eb8b29668e2b3f4cadcfe6f46df9c777", - "sha256:d77f09bc4b55d4bf7cc5eba785d87001d6757b7c9eec237fe2af57aba1a071d9", - "sha256:d831c2f8ff278179705ca59f7e8524069c1a989e716a1874d6d1aab6119d91d1", - "sha256:dbbbfce33cd98f97f6bffb17801b0576e653f4fdb1d399b2ea89638bc8d08ae1", - "sha256:dcba6dae7de533c876255317c11f3abe4907ba7d9aa15d13e3d9710d4315ec0e", - "sha256:e0bb18053dfcfed432cc3ac632b5e5e5c5b7e55fb3f8090e867bfd9b054dbcbf", - "sha256:e2fbd6236aae3b7f9d514312cdb58e6494ee1c76a9948adde6eba33eb1c4264f", - "sha256:e5087a3c59eef624a4591ef9eaa6e9a8d8a94c779dade95d27c0bc24650261cd", - "sha256:e8915cc96abeb8983cea1df3c939e3c6e1ac778340c17732eb63bb96247b91d2", - "sha256:ea353ecb6ab5f7e7d2f4372b1e779796ebd7b37352d290096978fea83c4dba0c", - "sha256:ee2d1a9a253b1729bb2de27d41f696ae893507c7db224436abe83ee25356f5c1", - "sha256:f415f802fbcafed5dcc694c13b1292f07fe0befdb94aa8a52905bd115ff41e88", - "sha256:fb5ec16523dc573a4b277663a2b5a364e2099902d3944c9419a40ebd56a118f9", - "sha256:fea75c3710d4f31389eed3c02f62d0b66a9da282521075061ce875eb5300cf23" + "sha256:00ba3c9818e33f1fa974693fb55d24cdc8ebafcb2e4207680669d8f8d7cca79a", + "sha256:00e871d83a45eee2f8688d7e6849609c2ca2a04a6d48fba3dff4deef35d14f07", + "sha256:06e9abc0e4c9ab4779c74ad99c3fc10d3967d03114449acc2c2762ad4472b8ca", + "sha256:0b9ac09853b2a3e0d0082104036579809679e7715671cfbf89d83c1cb2a30f58", + "sha256:0d47840dc05e0ba04fe2e26f15126de7c755496d5a8aae4a08bda4dd8d646c54", + "sha256:0f649fa32fe734c4abdfd4edbb8381c74abf5f34bc0b3271ce687b23729299ed", + "sha256:107ac60d1bfdc3edb53be75e2a52aff7481b92817cfdddd9b4519ccf0e54a6ff", + "sha256:11175910f62b2b8c055f2b089e0fedd694fe2be3941b3e2633653bc51064c528", + "sha256:12bd4bc2c632742c7ce20db48e0d99afdc05e03f0b4c1af90542e05b809a03d9", + "sha256:16f8740eb6dbacc7113e3097b0a36065a02e37b47c936b551805d40340fb9971", + "sha256:1c0e8fae5b27caa34177bdfa5a960c46ff2f78ee2d45c6db15ae3f64ecadde14", + "sha256:2c54e23836650bdf2c18222c87f6f840d4943944146ca479858404fedeb9f9af", + "sha256:3367007ad1951fde612bf65b0dffc8fd681a4ab98ac86957d16491400d661302", + "sha256:36362386b813fa6c9146da6149a001b7bd063dabc4d49522a1f7aa65b725c7ec", + "sha256:39807cbcbe406efca2a233884e169d056c35aa7e9f343d4e78665246a332f597", + "sha256:39cdf8d141d6d44e8d5a12a8569d5a227f645c87df4f92179bd06e2e2705e76b", + "sha256:3b2c3502603fab52d7619b882c25a6850b766ebd1b18de3df23b2f939360e1bd", + "sha256:3ccf2716add72f80714b9a63899b67fa711b654be3fcdd34fa391d2d274ce767", + "sha256:3fef4f844d2290ee0ba57addcec17eec9e3df73f10a2748485dfd6a3a188cc0f", + "sha256:4023e2efc35a30e66e938de5aef42b520c20e7eda7bb5fb12c35e5d09a4c43f6", + "sha256:4a3ee019a9befe84fa3e917a2dd378807e423d013377a884c1970a3c2792d293", + "sha256:4a8bf76e3182797c6b1afa5b822d1d5802ff30284abe4599e1247be4fd6b03be", + "sha256:4a992f702c9be9c72fa46f01ca6e18d131906a7180950958f766c2aa294d4b41", + "sha256:4c34d4f73ea738223a094d8e0ffd6d2c1a1b4c175da34d6b0de3d8d69bee6bcc", + "sha256:4cd1bccf99d3ef1ab6ba835308ad85be040e6a11b0977ef7ea8c8005f01a3c29", + "sha256:4ef80829117a8061f974b2fda8ec799717242353bff55f8a29411794d635d964", + "sha256:58837f9d221744d4c92d2cf7201c6acd19623b50c643b56992cbd2b745485d3d", + "sha256:5a8f91c64f390ecee09ff793319f30a0f32492e99f5dc1c72bc361f23ccd0a9a", + "sha256:5addc9d0209a9afca5fc070f93b726bf7003bd63a427f65ef797a931782e7edc", + "sha256:6239d4e2e0b52c8bd38c51b760cd870069f0bdf99700a62cd509d7a031749a55", + "sha256:66e2fe786ef28da2b28e222c89502b2af984858091675044d93cb50e6f46d7af", + "sha256:69c0771ca5653c7d4b65203cbfc5e66db9375f1078689459fe196fe08b7b4930", + "sha256:6ac965a998e1388e6ff2e9781f499ad1eaa41e962a40d11c7823c9952c77123e", + "sha256:6c56c3d47da04f921b73ff9415fbaa939f684d47293f071aa9cbb13c94afc17d", + "sha256:6f85739e80d13644b981a88f529d79c5bdf646b460ba190bffcaf6d57b2a9863", + "sha256:706e7b739fdd17cb89e1fbf712d9dc21311fc2333f6d435eac2d4ee81985098c", + "sha256:741ba2f511cc9626b7561a440f87d658aabb3d6b744a86a3c025f866b4d19e7f", + "sha256:7434a61b158be563c1362d9071358f8ab91b8d928728cd2882af060481244c9e", + "sha256:76066d7ff61ba6bf3cb5efe2428fc82aac91802844c022d849a1f0f53820502d", + "sha256:7979b834ec7a33aafae34a90aad9f914c41fd6eaa8474e66953f3f6f7cbd4368", + "sha256:7eece6fbd3eae4a92d7c748ae825cbc1ee41a89bb1c3db05b5578ed3cfcfd7cb", + "sha256:7ef1e014eed78ab650bef9a6a9cbe50b052c0aebe553fb2881e0453717573f52", + "sha256:81dce2ddc9f6e8f543d94b05d56e70d03a0774d32f6cca53e978dc01e4fc75b8", + "sha256:82fcc1f1cc3ff1ab8a57ba619b149b907072e750815c5ba63e7aa2e1163384a4", + "sha256:8d1f21af4c1539051049796a0f50aa342f9a27cde57318f2fc41ed50b0dbc4ac", + "sha256:90a79bce019c442604662d17bf69df99090e24cdc6ad95b18b6725c2988a490e", + "sha256:9145f092b5d1977ec8c0ab46e7b3381b2fd069957b9862a43bd383e5c01d18c2", + "sha256:91dc1d531f80c862441d7b66c4505cd6ea9d312f01fb2f4654f40c6fdf5cc37a", + "sha256:979c24cbefaf2420c4e377ecd1f165ea08cc3d1fbb44bdc51bccbbf7c66a2cb4", + "sha256:994645a46c6a740ee8ce8df7911d4aee458d9b1bc5639bc968226763d07f00fa", + "sha256:9b98b7681a9437262947f41c7fac567c7e1f6eddd94b0483596d320092004533", + "sha256:9c6b4d23c04831e3ab61717a707a5d763b300213db49ca680edf8bf13ab5d91b", + "sha256:9c6d0ced3c06d0f183b73d3c5920727268d2201aa0fe6d55c60d68c792ff3588", + "sha256:9fd88f373cb71e6b59b7fa597e47e518282455c2734fd4306a05ca219a1991b0", + "sha256:a8f4e49fc3ce020f65411432183e6775f24e02dff617281094ba6ab079ef0915", + "sha256:a9e908ef5889cda4de038892b9accc36d33d72fb3e12c747e2799a0e806ec841", + "sha256:ad08a69728ff3c79866d729b095872afe1e0557251da4abb2c5faff15a91d19a", + "sha256:adbccd17dcaff65704c856bd29951c58a1bd4b2b0f8ad6b826dbd543fe740988", + "sha256:b0c7d2f698e83f15228ba41c135501cfe7d5740181d5903e250e47f617eb4292", + "sha256:b3ab05a182c7937fb374f7e946f04fb23a0c0699c0450e9fb02ef567412d2fa3", + "sha256:b6104f9a46bd8743e4f738afef69b153c4b8b592d35ae46db07fc28ae3d5fb7c", + "sha256:ba7cd6dc4d585ea544c1412019921570ebd8a597fabf475acc4528210d7c4a6f", + "sha256:bc72c231f5449d86d6c7d9cc7cd819b6eb30134bb770b8cfdc0765e48ef9c420", + "sha256:bce8814b076f0ce5766dc87d5a056b0e9437b8e0cd351b9a6c4e1134a7dfbda9", + "sha256:be5e22bbb67924dea15039c3282fa4cc6cdfbe0cbbd1c0515f9223186fc2ec5f", + "sha256:be6b7b8d42d3090b6c80793524fa66c57ad7ee3fe9722b258aec6d0672543fd0", + "sha256:bfe50b61bab1b1ec260fa7cd91106fa9fece57e6beba05630afe27c71259c59b", + "sha256:bff507ae210371d4b1fe316d03433ac099f184d570a1a611e541923f78f05037", + "sha256:c148bec483cc4b421562b4bcedb8e28a3b84fcc8f0aa4418e10898f3c2c0eb9b", + "sha256:c15ad0aee158a15e17e0495e1e18741573d04eb6da06d8b84af726cfc1ed02ee", + "sha256:c2169b2dcabf4e608416f7f9468737583ce5f0a6e8677c4efbf795ce81109d7c", + "sha256:c55853684fe08d4897c37dfc5faeff70607a5f1806c8be148f1695be4a63414b", + "sha256:c65a3b5330b54103e7d21cac3f6bf3900d46f6d50138d73343d9e5b2900b2353", + "sha256:c7964c2183c3e6cce3f497e3a9f49d182e969f2dc3aeeadfa18945ff7bdd7051", + "sha256:cc3f1c053b73f20c7ad88b0d1d23be7e7b3901229ce89f5000a8399746a6e039", + "sha256:ce615c92d90df8373d9e13acddd154152645c0dc060871abf6bd43809673d20a", + "sha256:d29338556a59423d9ff7b6eb0cb89ead2b0875e08fe522f3e068b955c3e7b59b", + "sha256:d8a993c0a0ffd5f2d3bda23d0cd75e7086736f8f8268de8a82fbc4bd0ac6791e", + "sha256:d9c727bbcf0065cbb20f39d2b4f932f8fa1631c3e01fcedc979bd4f51fe051c5", + "sha256:dac37cf08fcf2094159922edc7a2784cfcc5c70f8354469f79ed085f0328ebdf", + "sha256:dd829712de97753367153ed84f2de752b86cd1f7a88b55a3a775eb52eafe8a94", + "sha256:e54ddd0bb8fb626aa1f9ba7b36629564544954fff9669b15da3610c22b9a0991", + "sha256:e77c90ab5997e85901da85131fd36acd0ed2221368199b65f0d11bca44549711", + "sha256:ebedc192abbc7fd13c5ee800e83a6df252bec691eb2c4bedc9f8b2e2903f5e2a", + "sha256:ef71561f82a89af6cfcbee47f0fabfdb6e63788a9258e913955d89fdd96902ab", + "sha256:f0a47efb1dbef13af9c9a54a94a0b814902e547b7f21acb29434504d18f36e3a", + "sha256:f4f2ca6df64cbdd27f27b34f35adb640b5d2d77264228554e68deda54456eb11", + "sha256:fb02e4257376ae25c6dd95a5aec377f9b18c09be6ebdefa7ad209b9137b73d48" ], - "markers": "python_version >= '3.6'", - "version": "==2023.6.3" + "markers": "python_version >= '3.7'", + "version": "==2023.10.3" }, "requests": { "hashes": [ @@ -3176,55 +3411,58 @@ }, "ruff": { "hashes": [ - "sha256:2dae8f2d9c44c5c49af01733c2f7956f808db682a4193180dedb29dd718d7bbe", - "sha256:2e7c15828d09f90e97bea8feefcd2907e8c8ce3a1f959c99f9b4b3469679f33c", - "sha256:37359cd67d2af8e09110a546507c302cbea11c66a52d2a9b6d841d465f9962d4", - "sha256:48ed5aca381050a4e2f6d232db912d2e4e98e61648b513c350990c351125aaec", - "sha256:4a7d52457b5dfcd3ab24b0b38eefaead8e2dca62b4fbf10de4cd0938cf20ce30", - "sha256:581c43e4ac5e5a7117ad7da2120d960a4a99e68ec4021ec3cd47fe1cf78f8380", - "sha256:5f972567163a20fb8c2d6afc60c2ea5ef8b68d69505760a8bd0377de8984b4f6", - "sha256:7008fc6ca1df18b21fa98bdcfc711dad5f94d0fc3c11791f65e460c48ef27c82", - "sha256:7784e3606352fcfb193f3cd22b2e2117c444cb879ef6609ec69deabd662b0763", - "sha256:7a37dab70114671d273f203268f6c3366c035fe0c8056614069e90a65e614bfc", - "sha256:83e8f372fa5627eeda5b83b5a9632d2f9c88fc6d78cead7e2a1f6fb05728d137", - "sha256:8ffa7347ad11643f29de100977c055e47c988cd6d9f5f5ff83027600b11b9189", - "sha256:b7de5b8689575918e130e4384ed9f539ce91d067c0a332aedef6ca7188adac2d", - "sha256:bd58af46b0221efb95966f1f0f7576df711cb53e50d2fdb0e83c2f33360116a4", - "sha256:d878370f7e9463ac40c253724229314ff6ebe4508cdb96cb536e1af4d5a9cd4f", - "sha256:ef6ee3e429fd29d6a5ceed295809e376e6ece5b0f13c7e703efaf3d3bcb30b96", - "sha256:fe7118c1eae3fda17ceb409629c7f3b5a22dffa7caf1f6796776936dca1fe653" + "sha256:171276c1df6c07fa0597fb946139ced1c2978f4f0b8254f201281729981f3c17", + "sha256:17ef33cd0bb7316ca65649fc748acc1406dfa4da96a3d0cde6d52f2e866c7b39", + "sha256:32d47fc69261c21a4c48916f16ca272bf2f273eb635d91c65d5cd548bf1f3d96", + "sha256:5cbec0ef2ae1748fb194f420fb03fb2c25c3258c86129af7172ff8f198f125ab", + "sha256:721f4b9d3b4161df8dc9f09aa8562e39d14e55a4dbaa451a8e55bdc9590e20f4", + "sha256:82bfcb9927e88c1ed50f49ac6c9728dab3ea451212693fe40d08d314663e412f", + "sha256:9b97fd6da44d6cceb188147b68db69a5741fbc736465b5cea3928fdac0bc1aeb", + "sha256:a00a7ec893f665ed60008c70fe9eeb58d210e6b4d83ec6654a9904871f982a2a", + "sha256:a4894dddb476597a0ba4473d72a23151b8b3b0b5f958f2cf4d3f1c572cdb7af7", + "sha256:a8c11206b47f283cbda399a654fd0178d7a389e631f19f51da15cbe631480c5b", + "sha256:aafb9d2b671ed934998e881e2c0f5845a4295e84e719359c71c39a5363cccc91", + "sha256:b2c205827b3f8c13b4a432e9585750b93fd907986fe1aec62b2a02cf4401eee6", + "sha256:bb408e3a2ad8f6881d0f2e7ad70cddb3ed9f200eb3517a91a245bbe27101d379", + "sha256:c21fe20ee7d76206d290a76271c1af7a5096bc4c73ab9383ed2ad35f852a0087", + "sha256:f20dc5e5905ddb407060ca27267c7174f532375c08076d1a953cf7bb016f5a24", + "sha256:f80c73bba6bc69e4fdc73b3991db0b546ce641bdcd5b07210b8ad6f64c79f1ab", + "sha256:fa29e67b3284b9a79b1a85ee66e293a94ac6b7bb068b307a8a373c3d343aa8ec" ], "index": "pypi", - "version": "==0.0.280" + "markers": "python_version >= '3.7'", + "version": "==0.1.5" }, "scipy": { "hashes": [ - "sha256:02b567e722d62bddd4ac253dafb01ce7ed8742cf8031aea030a41414b86c1125", - "sha256:1166514aa3bbf04cb5941027c6e294a000bba0cf00f5cdac6c77f2dad479b434", - "sha256:1da52b45ce1a24a4a22db6c157c38b39885a990a566748fc904ec9f03ed8c6ba", - "sha256:23b22fbeef3807966ea42d8163322366dd89da9bebdc075da7034cee3a1441ca", - "sha256:28d2cab0c6ac5aa131cc5071a3a1d8e1366dad82288d9ec2ca44df78fb50e649", - "sha256:2ef0fbc8bcf102c1998c1f16f15befe7cffba90895d6e84861cd6c6a33fb54f6", - "sha256:3b69b90c9419884efeffaac2c38376d6ef566e6e730a231e15722b0ab58f0328", - "sha256:4b93ec6f4c3c4d041b26b5f179a6aab8f5045423117ae7a45ba9710301d7e462", - "sha256:4e53a55f6a4f22de01ffe1d2f016e30adedb67a699a310cdcac312806807ca81", - "sha256:6311e3ae9cc75f77c33076cb2794fb0606f14c8f1b1c9ff8ce6005ba2c283621", - "sha256:65b77f20202599c51eb2771d11a6b899b97989159b7975e9b5259594f1d35ef4", - "sha256:6cc6b33139eb63f30725d5f7fa175763dc2df6a8f38ddf8df971f7c345b652dc", - "sha256:70de2f11bf64ca9921fda018864c78af7147025e467ce9f4a11bc877266900a6", - "sha256:70ebc84134cf0c504ce6a5f12d6db92cb2a8a53a49437a6bb4edca0bc101f11c", - "sha256:83606129247e7610b58d0e1e93d2c5133959e9cf93555d3c27e536892f1ba1f2", - "sha256:93d07494a8900d55492401917a119948ed330b8c3f1d700e0b904a578f10ead4", - "sha256:9c4e3ae8a716c8b3151e16c05edb1daf4cb4d866caa385e861556aff41300c14", - "sha256:9dd4012ac599a1e7eb63c114d1eee1bcfc6dc75a29b589ff0ad0bb3d9412034f", - "sha256:9e3fb1b0e896f14a85aa9a28d5f755daaeeb54c897b746df7a55ccb02b340f33", - "sha256:a0aa8220b89b2e3748a2836fbfa116194378910f1a6e78e4675a095bcd2c762d", - "sha256:d3b3c8924252caaffc54d4a99f1360aeec001e61267595561089f8b5900821bb", - "sha256:e013aed00ed776d790be4cb32826adb72799c61e318676172495383ba4570aa4", - "sha256:f3e7a8867f307e3359cc0ed2c63b61a1e33a19080f92fe377bc7d49f646f2ec1" + "sha256:00f325434b6424952fbb636506f0567898dca7b0f7654d48f1c382ea338ce9a3", + "sha256:033c3fd95d55012dd1148b201b72ae854d5086d25e7c316ec9850de4fe776929", + "sha256:0d3a136ae1ff0883fffbb1b05b0b2fea251cb1046a5077d0b435a1839b3e52b7", + "sha256:15f237e890c24aef6891c7d008f9ff7e758c6ef39a2b5df264650eb7900403c0", + "sha256:370f569c57e1d888304052c18e58f4a927338eafdaef78613c685ca2ea0d1fa0", + "sha256:3e1a8a4657673bfae1e05e1e1d6e94b0cabe5ed0c7c144c8aa7b7dbb774ce5c1", + "sha256:4b4bb134c7aa457e26cc6ea482b016fef45db71417d55cc6d8f43d799cdf9ef2", + "sha256:5305792c7110e32ff155aed0df46aa60a60fc6e52cd4ee02cdeb67eaccd5356e", + "sha256:5664e364f90be8219283eeb844323ff8cd79d7acbd64e15eb9c46b9bc7f6a42a", + "sha256:5f290cf561a4b4edfe8d1001ee4be6da60c1c4ea712985b58bf6bc62badee221", + "sha256:74e89dc5e00201e71dd94f5f382ab1c6a9f3ff806c7d24e4e90928bb1aafb280", + "sha256:7abda0e62ef00cde826d441485e2e32fe737bdddee3324e35c0e01dee65e2a88", + "sha256:90271dbde4be191522b3903fc97334e3956d7cfb9cce3f0718d0ab4fd7d8bfd6", + "sha256:91770cb3b1e81ae19463b3c235bf1e0e330767dca9eb4cd73ba3ded6c4151e4d", + "sha256:925c6f09d0053b1c0f90b2d92d03b261e889b20d1c9b08a3a51f61afc5f58165", + "sha256:9885e3e4f13b2bd44aaf2a1a6390a11add9f48d5295f7a592393ceb8991577a3", + "sha256:9ea7f579182d83d00fed0e5c11a4aa5ffe01460444219dedc448a36adf0c3917", + "sha256:a63d1ec9cadecce838467ce0631c17c15c7197ae61e49429434ba01d618caa83", + "sha256:bae66a2d7d5768eaa33008fa5a974389f167183c87bf39160d3fefe6664f8ddc", + "sha256:bba4d955f54edd61899776bad459bf7326e14b9fa1c552181f0479cc60a568cd", + "sha256:c77da50c9a91e23beb63c2a711ef9e9ca9a2060442757dffee34ea41847d8156", + "sha256:d2f6dee6cbb0e263b8142ed587bc93e3ed5e777f1f75448d24fb923d9fd4dce6", + "sha256:dfcc1552add7cb7c13fb70efcb2389d0624d571aaf2c80b04117e2755a0c5d15", + "sha256:e04aa19acc324a1a076abb4035dabe9b64badb19f76ad9c798bde39d41025cdc", + "sha256:e1f97cd89c0fe1a0685f8f89d85fa305deb3067d0668151571ba50913e445820" ], - "index": "pypi", - "version": "==1.8.1" + "markers": "python_version < '3.13' and python_version >= '3.9'", + "version": "==1.11.3" }, "service-identity": { "hashes": [ @@ -3235,11 +3473,11 @@ }, "setuptools": { "hashes": [ - "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f", - "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235" + "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87", + "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a" ], - "markers": "python_version >= '3.7'", - "version": "==68.0.0" + "markers": "python_version >= '3.8'", + "version": "==68.2.2" }, "six": { "hashes": [ @@ -3278,11 +3516,11 @@ "tls" ], "hashes": [ - "sha256:32acbd40a94f5f46e7b42c109bfae2b302250945561783a8b7a059048f2d4d31", - "sha256:86c55f712cc5ab6f6d64e02503352464f0400f66d4f079096d744080afcccbd0" + "sha256:4ae8bce12999a35f7fe6443e7f1893e6fe09588c8d2bed9c35cdce8ff2d5b444", + "sha256:987847a0790a2c597197613686e2784fd54167df3a55d0fb17c8412305d76ce5" ], - "markers": "python_full_version >= '3.7.1'", - "version": "==22.10.0" + "markers": "python_full_version >= '3.8.0'", + "version": "==23.10.0" }, "txaio": { "hashes": [ @@ -3294,105 +3532,111 @@ }, "typing-extensions": { "hashes": [ - "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36", - "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2" + "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", + "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" ], - "markers": "python_version < '3.10'", - "version": "==4.7.1" + "markers": "python_version < '3.11'", + "version": "==4.8.0" }, "urllib3": { "hashes": [ - "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11", - "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4" + "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3", + "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54" ], - "markers": "python_version >= '3.7'", - "version": "==2.0.4" + "markers": "python_version >= '3.8'", + "version": "==2.1.0" }, "virtualenv": { "hashes": [ - "sha256:43a3052be36080548bdee0b42919c88072037d50d56c28bd3f853cbe92b953ff", - "sha256:fd8a78f46f6b99a67b7ec5cf73f92357891a7b3a40fd97637c27f854aae3b9e0" + "sha256:02ece4f56fbf939dbbc33c0715159951d6bf14aaf5457b092e4548e1382455af", + "sha256:520d056652454c5098a00c0f073611ccbea4c79089331f60bf9d7ba247bb7381" ], "markers": "python_version >= '3.7'", - "version": "==20.24.2" + "version": "==20.24.6" }, "watchdog": { "hashes": [ - "sha256:03f342a9432fe08107defbe8e405a2cb922c5d00c4c6c168c68b633c64ce6190", - "sha256:0d9878be36d2b9271e3abaa6f4f051b363ff54dbbe7e7df1af3c920e4311ee43", - "sha256:0e1dd6d449267cc7d6935d7fe27ee0426af6ee16578eed93bacb1be9ff824d2d", - "sha256:2caf77ae137935c1466f8cefd4a3aec7017b6969f425d086e6a528241cba7256", - "sha256:3d2dbcf1acd96e7a9c9aefed201c47c8e311075105d94ce5e899f118155709fd", - "sha256:4109cccf214b7e3462e8403ab1e5b17b302ecce6c103eb2fc3afa534a7f27b96", - "sha256:4cd61f98cb37143206818cb1786d2438626aa78d682a8f2ecee239055a9771d5", - "sha256:53f3e95081280898d9e4fc51c5c69017715929e4eea1ab45801d5e903dd518ad", - "sha256:564e7739abd4bd348aeafbf71cc006b6c0ccda3160c7053c4a53b67d14091d42", - "sha256:5b848c71ef2b15d0ef02f69da8cc120d335cec0ed82a3fa7779e27a5a8527225", - "sha256:5defe4f0918a2a1a4afbe4dbb967f743ac3a93d546ea4674567806375b024adb", - "sha256:6f5d0f7eac86807275eba40b577c671b306f6f335ba63a5c5a348da151aba0fc", - "sha256:7a1876f660e32027a1a46f8a0fa5747ad4fcf86cb451860eae61a26e102c8c79", - "sha256:7a596f9415a378d0339681efc08d2249e48975daae391d58f2e22a3673b977cf", - "sha256:85bf2263290591b7c5fa01140601b64c831be88084de41efbcba6ea289874f44", - "sha256:8a4d484e846dcd75e96b96d80d80445302621be40e293bfdf34a631cab3b33dc", - "sha256:8f2df370cd8e4e18499dd0bfdef476431bcc396108b97195d9448d90924e3131", - "sha256:91fd146d723392b3e6eb1ac21f122fcce149a194a2ba0a82c5e4d0ee29cd954c", - "sha256:95ad708a9454050a46f741ba5e2f3468655ea22da1114e4c40b8cbdaca572565", - "sha256:964fd236cd443933268ae49b59706569c8b741073dbfd7ca705492bae9d39aab", - "sha256:9da7acb9af7e4a272089bd2af0171d23e0d6271385c51d4d9bde91fe918c53ed", - "sha256:a073c91a6ef0dda488087669586768195c3080c66866144880f03445ca23ef16", - "sha256:a74155398434937ac2780fd257c045954de5b11b5c52fc844e2199ce3eecf4cf", - "sha256:aa8b028750b43e80eea9946d01925168eeadb488dfdef1d82be4b1e28067f375", - "sha256:d1f1200d4ec53b88bf04ab636f9133cb703eb19768a39351cee649de21a33697", - "sha256:d9f9ed26ed22a9d331820a8432c3680707ea8b54121ddcc9dc7d9f2ceeb36906", - "sha256:ea5d86d1bcf4a9d24610aa2f6f25492f441960cf04aed2bd9a97db439b643a7b", - "sha256:efe3252137392a471a2174d721e1037a0e6a5da7beb72a021e662b7000a9903f" + "sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a", + "sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100", + "sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8", + "sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc", + "sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae", + "sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41", + "sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0", + "sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f", + "sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c", + "sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9", + "sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3", + "sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709", + "sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83", + "sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759", + "sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9", + "sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3", + "sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7", + "sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f", + "sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346", + "sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674", + "sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397", + "sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96", + "sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d", + "sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a", + "sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64", + "sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44", + "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33" ], "index": "pypi", - "version": "==2.3.1" + "markers": "python_version >= '3.7'", + "version": "==3.0.0" }, "zipp": { "hashes": [ - "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0", - "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147" + "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31", + "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0" ], - "markers": "python_version < '3.10'", - "version": "==3.16.2" + "markers": "python_version >= '3.8'", + "version": "==3.17.0" }, - "zope.interface": { + "zope-interface": { "hashes": [ - "sha256:042f2381118b093714081fd82c98e3b189b68db38ee7d35b63c327c470ef8373", - "sha256:0ec9653825f837fbddc4e4b603d90269b501486c11800d7c761eee7ce46d1bbb", - "sha256:12175ca6b4db7621aedd7c30aa7cfa0a2d65ea3a0105393e05482d7a2d367446", - "sha256:1592f68ae11e557b9ff2bc96ac8fc30b187e77c45a3c9cd876e3368c53dc5ba8", - "sha256:23ac41d52fd15dd8be77e3257bc51bbb82469cf7f5e9a30b75e903e21439d16c", - "sha256:424d23b97fa1542d7be882eae0c0fc3d6827784105264a8169a26ce16db260d8", - "sha256:4407b1435572e3e1610797c9203ad2753666c62883b921318c5403fb7139dec2", - "sha256:48f4d38cf4b462e75fac78b6f11ad47b06b1c568eb59896db5b6ec1094eb467f", - "sha256:4c3d7dfd897a588ec27e391edbe3dd320a03684457470415870254e714126b1f", - "sha256:5171eb073474a5038321409a630904fd61f12dd1856dd7e9d19cd6fe092cbbc5", - "sha256:5a158846d0fca0a908c1afb281ddba88744d403f2550dc34405c3691769cdd85", - "sha256:6ee934f023f875ec2cfd2b05a937bd817efcc6c4c3f55c5778cbf78e58362ddc", - "sha256:790c1d9d8f9c92819c31ea660cd43c3d5451df1df61e2e814a6f99cebb292788", - "sha256:809fe3bf1a91393abc7e92d607976bbb8586512913a79f2bf7d7ec15bd8ea518", - "sha256:87b690bbee9876163210fd3f500ee59f5803e4a6607d1b1238833b8885ebd410", - "sha256:89086c9d3490a0f265a3c4b794037a84541ff5ffa28bb9c24cc9f66566968464", - "sha256:99856d6c98a326abbcc2363827e16bd6044f70f2ef42f453c0bd5440c4ce24e5", - "sha256:aab584725afd10c710b8f1e6e208dbee2d0ad009f57d674cb9d1b3964037275d", - "sha256:af169ba897692e9cd984a81cb0f02e46dacdc07d6cf9fd5c91e81f8efaf93d52", - "sha256:b39b8711578dcfd45fc0140993403b8a81e879ec25d53189f3faa1f006087dca", - "sha256:b3f543ae9d3408549a9900720f18c0194ac0fe810cecda2a584fd4dca2eb3bb8", - "sha256:d0583b75f2e70ec93f100931660328965bb9ff65ae54695fb3fa0a1255daa6f2", - "sha256:dfbbbf0809a3606046a41f8561c3eada9db811be94138f42d9135a5c47e75f6f", - "sha256:e538f2d4a6ffb6edfb303ce70ae7e88629ac6e5581870e66c306d9ad7b564a58", - "sha256:eba51599370c87088d8882ab74f637de0c4f04a6d08a312dce49368ba9ed5c2a", - "sha256:ee4b43f35f5dc15e1fec55ccb53c130adb1d11e8ad8263d68b1284b66a04190d", - "sha256:f2363e5fd81afb650085c6686f2ee3706975c54f331b426800b53531191fdf28", - "sha256:f299c020c6679cb389814a3b81200fe55d428012c5e76da7e722491f5d205990", - "sha256:f72f23bab1848edb7472309e9898603141644faec9fd57a823ea6b4d1c4c8995", - "sha256:fa90bac61c9dc3e1a563e5babb3fd2c0c1c80567e815442ddbe561eadc803b30" + "sha256:0c8cf55261e15590065039696607f6c9c1aeda700ceee40c70478552d323b3ff", + "sha256:13b7d0f2a67eb83c385880489dbb80145e9d344427b4262c49fbf2581677c11c", + "sha256:1f294a15f7723fc0d3b40701ca9b446133ec713eafc1cc6afa7b3d98666ee1ac", + "sha256:239a4a08525c080ff833560171d23b249f7f4d17fcbf9316ef4159f44997616f", + "sha256:2f8d89721834524a813f37fa174bac074ec3d179858e4ad1b7efd4401f8ac45d", + "sha256:2fdc7ccbd6eb6b7df5353012fbed6c3c5d04ceaca0038f75e601060e95345309", + "sha256:34c15ca9248f2e095ef2e93af2d633358c5f048c49fbfddf5fdfc47d5e263736", + "sha256:387545206c56b0315fbadb0431d5129c797f92dc59e276b3ce82db07ac1c6179", + "sha256:43b576c34ef0c1f5a4981163b551a8781896f2a37f71b8655fd20b5af0386abb", + "sha256:57d0a8ce40ce440f96a2c77824ee94bf0d0925e6089df7366c2272ccefcb7941", + "sha256:5a804abc126b33824a44a7aa94f06cd211a18bbf31898ba04bd0924fbe9d282d", + "sha256:67be3ca75012c6e9b109860820a8b6c9a84bfb036fbd1076246b98e56951ca92", + "sha256:6af47f10cfc54c2ba2d825220f180cc1e2d4914d783d6fc0cd93d43d7bc1c78b", + "sha256:6dc998f6de015723196a904045e5a2217f3590b62ea31990672e31fbc5370b41", + "sha256:70d2cef1bf529bff41559be2de9d44d47b002f65e17f43c73ddefc92f32bf00f", + "sha256:7ebc4d34e7620c4f0da7bf162c81978fce0ea820e4fa1e8fc40ee763839805f3", + "sha256:964a7af27379ff4357dad1256d9f215047e70e93009e532d36dcb8909036033d", + "sha256:97806e9ca3651588c1baaebb8d0c5ee3db95430b612db354c199b57378312ee8", + "sha256:9b9bc671626281f6045ad61d93a60f52fd5e8209b1610972cf0ef1bbe6d808e3", + "sha256:9ffdaa5290422ac0f1688cb8adb1b94ca56cee3ad11f29f2ae301df8aecba7d1", + "sha256:a0da79117952a9a41253696ed3e8b560a425197d4e41634a23b1507efe3273f1", + "sha256:a41f87bb93b8048fe866fa9e3d0c51e27fe55149035dcf5f43da4b56732c0a40", + "sha256:aa6fd016e9644406d0a61313e50348c706e911dca29736a3266fc9e28ec4ca6d", + "sha256:ad54ed57bdfa3254d23ae04a4b1ce405954969c1b0550cc2d1d2990e8b439de1", + "sha256:b012d023b4fb59183909b45d7f97fb493ef7a46d2838a5e716e3155081894605", + "sha256:b51b64432eed4c0744241e9ce5c70dcfecac866dff720e746d0a9c82f371dfa7", + "sha256:bbe81def9cf3e46f16ce01d9bfd8bea595e06505e51b7baf45115c77352675fd", + "sha256:c9559138690e1bd4ea6cd0954d22d1e9251e8025ce9ede5d0af0ceae4a401e43", + "sha256:e30506bcb03de8983f78884807e4fd95d8db6e65b69257eea05d13d519b83ac0", + "sha256:e33e86fd65f369f10608b08729c8f1c92ec7e0e485964670b4d2633a4812d36b", + "sha256:e441e8b7d587af0414d25e8d05e27040d78581388eed4c54c30c0c91aad3a379", + "sha256:e8bb9c990ca9027b4214fa543fd4025818dc95f8b7abce79d61dc8a2112b561a", + "sha256:ef43ee91c193f827e49599e824385ec7c7f3cd152d74cb1dfe02cb135f264d83", + "sha256:ef467d86d3cfde8b39ea1b35090208b0447caaabd38405420830f7fd85fbdd56", + "sha256:f89b28772fc2562ed9ad871c865f5320ef761a7fcc188a935e21fe8b31a38ca9", + "sha256:fddbab55a2473f1d3b8833ec6b7ac31e8211b0aa608df5ab09ce07f3727326de" ], "markers": "python_version >= '3.7'", - "version": "==6.0" + "version": "==6.1" } }, "typing-dev": { @@ -3404,34 +3648,13 @@ "markers": "python_version >= '3.7'", "version": "==3.7.2" }, - "backports.zoneinfo": { - "hashes": [ - "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf", - "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328", - "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546", - "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6", - "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570", - "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9", - "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7", - "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987", - "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722", - "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582", - "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc", - "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b", - "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1", - "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08", - "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac", - "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2" - ], - "markers": "python_version < '3.9'", - "version": "==0.2.1" - }, "celery-types": { "hashes": [ "sha256:4048d7c59d2ce26127d32c2799b776d1b23a3de699eb6e6e9df1b8136dfe950f", "sha256:93c0d25f2779bf5c985dabc4c2985d7eac8be43d1b2c05668e73973d6714f560" ], "index": "pypi", + "markers": "python_version >= '3.7' and python_version < '4.0'", "version": "==0.18.0" }, "certifi": { @@ -3444,186 +3667,195 @@ }, "cffi": { "hashes": [ - "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5", - "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef", - "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104", - "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426", - "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405", - "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375", - "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a", - "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e", - "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc", - "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf", - "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185", - "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497", - "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3", - "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35", - "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c", - "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83", - "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21", - "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca", - "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984", - "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac", - "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd", - "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee", - "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a", - "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2", - "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192", - "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7", - "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585", - "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f", - "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e", - "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27", - "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b", - "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e", - "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e", - "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d", - "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c", - "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415", - "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82", - "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02", - "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314", - "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325", - "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c", - "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3", - "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914", - "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045", - "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d", - "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9", - "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5", - "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2", - "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c", - "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3", - "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2", - "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8", - "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d", - "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d", - "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9", - "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162", - "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76", - "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4", - "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e", - "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9", - "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6", - "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b", - "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01", - "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0" + "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc", + "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a", + "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417", + "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab", + "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520", + "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36", + "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743", + "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8", + "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed", + "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684", + "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56", + "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324", + "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d", + "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235", + "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e", + "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088", + "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000", + "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7", + "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e", + "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673", + "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c", + "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe", + "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2", + "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098", + "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8", + "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a", + "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0", + "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b", + "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896", + "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e", + "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9", + "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2", + "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b", + "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6", + "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404", + "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f", + "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0", + "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4", + "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc", + "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936", + "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba", + "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872", + "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb", + "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614", + "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1", + "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d", + "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969", + "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b", + "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4", + "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627", + "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956", + "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357" ], - "version": "==1.15.1" + "markers": "python_version >= '3.8'", + "version": "==1.16.0" }, "charset-normalizer": { "hashes": [ - "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96", - "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c", - "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710", - "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706", - "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020", - "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252", - "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad", - "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329", - "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a", - "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f", - "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6", - "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4", - "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a", - "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46", - "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2", - "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23", - "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace", - "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd", - "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982", - "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10", - "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2", - "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea", - "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09", - "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5", - "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149", - "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489", - "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9", - "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80", - "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592", - "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3", - "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6", - "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed", - "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c", - "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200", - "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a", - "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e", - "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d", - "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6", - "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623", - "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669", - "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3", - "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa", - "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9", - "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2", - "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f", - "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1", - "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4", - "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a", - "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8", - "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3", - "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029", - "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f", - "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959", - "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22", - "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7", - "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952", - "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346", - "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e", - "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d", - "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299", - "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd", - "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a", - "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3", - "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037", - "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94", - "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c", - "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858", - "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a", - "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449", - "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c", - "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918", - "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1", - "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c", - "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac", - "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa" + "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027", + "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087", + "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786", + "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8", + "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09", + "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185", + "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574", + "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e", + "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519", + "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898", + "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269", + "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3", + "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f", + "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6", + "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8", + "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a", + "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73", + "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc", + "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714", + "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2", + "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc", + "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce", + "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d", + "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e", + "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6", + "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269", + "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96", + "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d", + "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a", + "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4", + "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77", + "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d", + "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0", + "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed", + "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068", + "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac", + "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25", + "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8", + "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab", + "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26", + "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2", + "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db", + "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f", + "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5", + "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99", + "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c", + "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d", + "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811", + "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa", + "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a", + "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03", + "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b", + "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04", + "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c", + "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001", + "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458", + "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389", + "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99", + "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985", + "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537", + "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238", + "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f", + "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d", + "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796", + "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a", + "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143", + "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8", + "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c", + "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5", + "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5", + "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711", + "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4", + "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6", + "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c", + "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7", + "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4", + "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b", + "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae", + "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12", + "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c", + "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae", + "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8", + "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887", + "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b", + "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4", + "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f", + "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5", + "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33", + "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519", + "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561" ], "markers": "python_full_version >= '3.7.0'", - "version": "==3.2.0" + "version": "==3.3.2" }, "cryptography": { "hashes": [ - "sha256:0a4e3406cfed6b1f6d6e87ed243363652b2586b2d917b0609ca4f97072994405", - "sha256:1e0af458515d5e4028aad75f3bb3fe7a31e46ad920648cd59b64d3da842e4356", - "sha256:2803f2f8b1e95f614419926c7e6f55d828afc614ca5ed61543877ae668cc3472", - "sha256:28d63d75bf7ae4045b10de5413fb1d6338616e79015999ad9cf6fc538f772d41", - "sha256:32057d3d0ab7d4453778367ca43e99ddb711770477c4f072a51b3ca69602780a", - "sha256:3a4805a4ca729d65570a1b7cac84eac1e431085d40387b7d3bbaa47e39890b88", - "sha256:63dac2d25c47f12a7b8aa60e528bfb3c51c5a6c5a9f7c86987909c6c79765554", - "sha256:650883cc064297ef3676b1db1b7b1df6081794c4ada96fa457253c4cc40f97db", - "sha256:6f2bbd72f717ce33100e6467572abaedc61f1acb87b8d546001328d7f466b778", - "sha256:7c872413353c70e0263a9368c4993710070e70ab3e5318d85510cc91cce77e7c", - "sha256:918cb89086c7d98b1b86b9fdb70c712e5a9325ba6f7d7cfb509e784e0cfc6917", - "sha256:9618a87212cb5200500e304e43691111570e1f10ec3f35569fdfcd17e28fd797", - "sha256:a805a7bce4a77d51696410005b3e85ae2839bad9aa38894afc0aa99d8e0c3160", - "sha256:cc3a621076d824d75ab1e1e530e66e7e8564e357dd723f2533225d40fe35c60c", - "sha256:cd033d74067d8928ef00a6b1327c8ea0452523967ca4463666eeba65ca350d4c", - "sha256:cf91e428c51ef692b82ce786583e214f58392399cf65c341bc7301d096fa3ba2", - "sha256:d36bbeb99704aabefdca5aee4eba04455d7a27ceabd16f3b3ba9bdcc31da86c4", - "sha256:d8aa3609d337ad85e4eb9bb0f8bcf6e4409bfb86e706efa9a027912169e89122", - "sha256:f5d7b79fa56bc29580faafc2ff736ce05ba31feaa9d4735048b0de7d9ceb2b94" + "sha256:0c327cac00f082013c7c9fb6c46b7cc9fa3c288ca702c74773968173bda421bf", + "sha256:0d2a6a598847c46e3e321a7aef8af1436f11c27f1254933746304ff014664d84", + "sha256:227ec057cd32a41c6651701abc0328135e472ed450f47c2766f23267b792a88e", + "sha256:22892cc830d8b2c89ea60148227631bb96a7da0c1b722f2aac8824b1b7c0b6b8", + "sha256:392cb88b597247177172e02da6b7a63deeff1937fa6fec3bbf902ebd75d97ec7", + "sha256:3be3ca726e1572517d2bef99a818378bbcf7d7799d5372a46c79c29eb8d166c1", + "sha256:573eb7128cbca75f9157dcde974781209463ce56b5804983e11a1c462f0f4e88", + "sha256:580afc7b7216deeb87a098ef0674d6ee34ab55993140838b14c9b83312b37b86", + "sha256:5a70187954ba7292c7876734183e810b728b4f3965fbe571421cb2434d279179", + "sha256:73801ac9736741f220e20435f84ecec75ed70eda90f781a148f1bad546963d81", + "sha256:7d208c21e47940369accfc9e85f0de7693d9a5d843c2509b3846b2db170dfd20", + "sha256:8254962e6ba1f4d2090c44daf50a547cd5f0bf446dc658a8e5f8156cae0d8548", + "sha256:88417bff20162f635f24f849ab182b092697922088b477a7abd6664ddd82291d", + "sha256:a48e74dad1fb349f3dc1d449ed88e0017d792997a7ad2ec9587ed17405667e6d", + "sha256:b948e09fe5fb18517d99994184854ebd50b57248736fd4c720ad540560174ec5", + "sha256:c707f7afd813478e2019ae32a7c49cd932dd60ab2d2a93e796f68236b7e1fbf1", + "sha256:d38e6031e113b7421db1de0c1b1f7739564a88f1684c6b89234fbf6c11b75147", + "sha256:d3977f0e276f6f5bf245c403156673db103283266601405376f075c849a0b936", + "sha256:da6a0ff8f1016ccc7477e6339e1d50ce5f59b88905585f77193ebd5068f1e797", + "sha256:e270c04f4d9b5671ebcc792b3ba5d4488bf7c42c3c241a3748e2599776f29696", + "sha256:e886098619d3815e0ad5790c973afeee2c0e6e04b4da90b88e6bd06e2a0b1b72", + "sha256:ec3b055ff8f1dce8e6ef28f626e0972981475173d7973d63f271b29c8a2897da", + "sha256:fba1e91467c65fe64a82c689dc6cf58151158993b13eb7a7f3f4b7f395636723" ], - "index": "pypi", - "version": "==40.0.1" + "markers": "python_version >= '3.7'", + "version": "==41.0.5" }, "django": { "hashes": [ - "sha256:26d0260c2fb8121009e62ffc548b2398dea2522b6454208a852fb0ef264c206c", - "sha256:56343019a9fd839e2e5bf203daf45f25af79d5bffa4c71d56eae4f4404d82ade" + "sha256:8e0f1c2c2786b5c0e39fe1afce24c926040fad47c8ea8ad30aaf1188df29fc41", + "sha256:e1d37c51ad26186de355cbcec16613ebdabfa9689bbade9c538835205a8abbe9" ], "index": "pypi", - "version": "==4.1.10" + "markers": "python_version >= '3.8'", + "version": "==4.2.7" }, "django-filter-stubs": { "hashes": [ @@ -3638,30 +3870,30 @@ "compatible-mypy" ], "hashes": [ - "sha256:dadab39b46d9ae8f37a8e879c590f39a9e042b565c03fa0c5a8f754b441b1f23", - "sha256:e30e2e4927ba14bec587ed2c686404b6b8e473cabe9baca445e7d2e1e0d7b14f" + "sha256:2fcd257884a68dfa02de41ee5410ec805264d9b07d9b5b119e4dea82c7b8345e", + "sha256:e60b43de662a199db4b15c803c06669e0ac5035614af291cbd3b91591f7dcc94" ], - "index": "pypi", - "version": "==4.2.3" + "markers": "python_version >= '3.8'", + "version": "==4.2.6" }, "django-stubs-ext": { "hashes": [ - "sha256:c69d1cc46f1c4c3b7894b685a5022c29b2a36c7cfb52e23762eaf357ebfc2c98", - "sha256:fdacc65a14d2d4b97334b58ff178a5853ec8c8c76cec406e417916ad67536ce4" + "sha256:8c4d1fb5f68419b3b2474c659681a189803e27d6a5e5abf5aa0da57601b58633", + "sha256:921cd7ae4614e74c234bc0fe86ee75537d163addfe1fc6f134bf03e29d86c01e" ], "markers": "python_version >= '3.8'", - "version": "==4.2.2" + "version": "==4.2.5" }, "djangorestframework-stubs": { "extras": [ "compatible-mypy" ], "hashes": [ - "sha256:38f078cdf80228bd73e3ff5dcf00263f847da37c30d113e0fc8fda09f9dbc89a", - "sha256:4a9169253d2d46885a007c085d64e96efc8a78bd938c747e9ad0654725c4e7d0" + "sha256:5be8275dd05d6629b3d1688929586ef7b6bc66b4f3f728b5e0389305f07c7a7f", + "sha256:8ee8719bfeb647b92cc200e15b3cc9813d2e4468c8190777a55a121542a4b2d4" ], - "index": "pypi", - "version": "==3.14.2" + "markers": "python_version >= '3.8'", + "version": "==3.14.4" }, "idna": { "hashes": [ @@ -3673,35 +3905,37 @@ }, "mypy": { "hashes": [ - "sha256:01fd2e9f85622d981fd9063bfaef1aed6e336eaacca00892cd2d82801ab7c042", - "sha256:0dde1d180cd84f0624c5dcaaa89c89775550a675aff96b5848de78fb11adabcd", - "sha256:141dedfdbfe8a04142881ff30ce6e6653c9685b354876b12e4fe6c78598b45e2", - "sha256:16f0db5b641ba159eff72cff08edc3875f2b62b2fa2bc24f68c1e7a4e8232d01", - "sha256:190b6bab0302cec4e9e6767d3eb66085aef2a1cc98fe04936d8a42ed2ba77bb7", - "sha256:2460a58faeea905aeb1b9b36f5065f2dc9a9c6e4c992a6499a2360c6c74ceca3", - "sha256:34a9239d5b3502c17f07fd7c0b2ae6b7dd7d7f6af35fbb5072c6208e76295816", - "sha256:43b592511672017f5b1a483527fd2684347fdffc041c9ef53428c8dc530f79a3", - "sha256:43d24f6437925ce50139a310a64b2ab048cb2d3694c84c71c3f2a1626d8101dc", - "sha256:45d32cec14e7b97af848bddd97d85ea4f0db4d5a149ed9676caa4eb2f7402bb4", - "sha256:470c969bb3f9a9efcedbadcd19a74ffb34a25f8e6b0e02dae7c0e71f8372f97b", - "sha256:566e72b0cd6598503e48ea610e0052d1b8168e60a46e0bfd34b3acf2d57f96a8", - "sha256:5703097c4936bbb9e9bce41478c8d08edd2865e177dc4c52be759f81ee4dd26c", - "sha256:7549fbf655e5825d787bbc9ecf6028731973f78088fbca3a1f4145c39ef09462", - "sha256:8207b7105829eca6f3d774f64a904190bb2231de91b8b186d21ffd98005f14a7", - "sha256:8c4d8e89aa7de683e2056a581ce63c46a0c41e31bd2b6d34144e2c80f5ea53dc", - "sha256:98324ec3ecf12296e6422939e54763faedbfcc502ea4a4c38502082711867258", - "sha256:9bbcd9ab8ea1f2e1c8031c21445b511442cc45c89951e49bbf852cbb70755b1b", - "sha256:9d40652cc4fe33871ad3338581dca3297ff5f2213d0df345bcfbde5162abf0c9", - "sha256:a2746d69a8196698146a3dbe29104f9eb6a2a4d8a27878d92169a6c0b74435b6", - "sha256:ae704dcfaa180ff7c4cfbad23e74321a2b774f92ca77fd94ce1049175a21c97f", - "sha256:bfdca17c36ae01a21274a3c387a63aa1aafe72bff976522886869ef131b937f1", - "sha256:c482e1246726616088532b5e964e39765b6d1520791348e6c9dc3af25b233828", - "sha256:ca637024ca67ab24a7fd6f65d280572c3794665eaf5edcc7e90a866544076878", - "sha256:e02d700ec8d9b1859790c0475df4e4092c7bf3272a4fd2c9f33d87fac4427b8f", - "sha256:e5952d2d18b79f7dc25e62e014fe5a23eb1a3d2bc66318df8988a01b1a037c5b" + "sha256:19f905bcfd9e167159b3d63ecd8cb5e696151c3e59a1742e79bc3bcb540c42c7", + "sha256:21a1ad938fee7d2d96ca666c77b7c494c3c5bd88dff792220e1afbebb2925b5e", + "sha256:40b1844d2e8b232ed92e50a4bd11c48d2daa351f9deee6c194b83bf03e418b0c", + "sha256:41697773aa0bf53ff917aa077e2cde7aa50254f28750f9b88884acea38a16169", + "sha256:49ae115da099dcc0922a7a895c1eec82c1518109ea5c162ed50e3b3594c71208", + "sha256:4c46b51de523817a0045b150ed11b56f9fff55f12b9edd0f3ed35b15a2809de0", + "sha256:4cbe68ef919c28ea561165206a2dcb68591c50f3bcf777932323bc208d949cf1", + "sha256:4d01c00d09a0be62a4ca3f933e315455bde83f37f892ba4b08ce92f3cf44bcc1", + "sha256:59a0d7d24dfb26729e0a068639a6ce3500e31d6655df8557156c51c1cb874ce7", + "sha256:68351911e85145f582b5aa6cd9ad666c8958bcae897a1bfda8f4940472463c45", + "sha256:7274b0c57737bd3476d2229c6389b2ec9eefeb090bbaf77777e9d6b1b5a9d143", + "sha256:81af8adaa5e3099469e7623436881eff6b3b06db5ef75e6f5b6d4871263547e5", + "sha256:82e469518d3e9a321912955cc702d418773a2fd1e91c651280a1bda10622f02f", + "sha256:8b27958f8c76bed8edaa63da0739d76e4e9ad4ed325c814f9b3851425582a3cd", + "sha256:8c223fa57cb154c7eab5156856c231c3f5eace1e0bed9b32a24696b7ba3c3245", + "sha256:8f57e6b6927a49550da3d122f0cb983d400f843a8a82e65b3b380d3d7259468f", + "sha256:925cd6a3b7b55dfba252b7c4561892311c5358c6b5a601847015a1ad4eb7d332", + "sha256:a43ef1c8ddfdb9575691720b6352761f3f53d85f1b57d7745701041053deff30", + "sha256:a8032e00ce71c3ceb93eeba63963b864bf635a18f6c0c12da6c13c450eedb183", + "sha256:b96ae2c1279d1065413965c607712006205a9ac541895004a1e0d4f281f2ff9f", + "sha256:bb8ccb4724f7d8601938571bf3f24da0da791fe2db7be3d9e79849cb64e0ae85", + "sha256:bbaf4662e498c8c2e352da5f5bca5ab29d378895fa2d980630656178bd607c46", + "sha256:cfd13d47b29ed3bbaafaff7d8b21e90d827631afda134836962011acb5904b71", + "sha256:d4473c22cc296425bbbce7e9429588e76e05bc7342da359d6520b6427bf76660", + "sha256:d8fbb68711905f8912e5af474ca8b78d077447d8f3918997fecbf26943ff3cbb", + "sha256:e5012e5cc2ac628177eaac0e83d622b2dd499e28253d4107a08ecc59ede3fc2c", + "sha256:eb4f18589d196a4cbe5290b435d135dee96567e07c2b2d43b5c4621b6501531a" ], "index": "pypi", - "version": "==1.4.1" + "markers": "python_version >= '3.8'", + "version": "==1.6.1" }, "mypy-extensions": { "hashes": [ @@ -3742,21 +3976,14 @@ "markers": "python_version < '3.11'", "version": "==2.0.1" }, - "types-backports": { - "hashes": [ - "sha256:dafcd61848081503e738a7768872d1dd6c018401b4d2a1cfb608ea87ec9864b9", - "sha256:f4b7206c073df88d6200891e3d27506185fd60cda66fb289737b2fa92c0010cf" - ], - "index": "pypi", - "version": "==0.1.3" - }, "types-bleach": { "hashes": [ - "sha256:2b8767eb407c286b7f02803678732e522e04db8d56cbc9f1270bee49627eae92", - "sha256:357b0226f65c4f20ab3b13ca8d78a6b91c78aad256d8ec168d4e90fc3303ebd4" + "sha256:1e43c437e734a90efe4f40ebfe831057599568d3b275939ffbd6094848a18a27", + "sha256:f83f80e0709f13d809a9c79b958a1089df9b99e68059287beb196e38967e4ddf" ], "index": "pypi", - "version": "==6.0.0.4" + "markers": "python_version >= '3.7'", + "version": "==6.1.0.1" }, "types-colorama": { "hashes": [ @@ -3776,57 +4003,51 @@ }, "types-docutils": { "hashes": [ - "sha256:6b17cbe57cb282158feb41d154cddaeabc16f1d6cff3c7308bd3056f42aa7cd2", - "sha256:f682b5459a1e6e28208742adb0be8573d1ecbddd442f00d202b0278c1c4418a2" + "sha256:4928e790f42b99d5833990f99c8dd9fa9f16825f6ed30380ca981846d36870cd", + "sha256:a930150d8e01a9170f9bca489f46808ddebccdd8bc1e47c07968a77e49fb9321" ], - "version": "==0.20.0.1" - }, - "types-humanfriendly": { - "hashes": [ - "sha256:0854a13505761a2bc25504d767ce1667b49b82c8b06c89ac50be1929e39f88ab", - "sha256:3ab4334c40542efc06225f70eeb061f2f7e9cc14fe043c1ee04a94025162e341" - ], - "index": "pypi", - "version": "==10.0.1.9" + "version": "==0.20.0.3" }, "types-markdown": { "hashes": [ - "sha256:11e3558d50e3bc1e3f52f3fe073788f4ab917a829374fb354476221c700629e8", - "sha256:543ff3027fda21c3149780bf835a721cd094c5729e9a87725f180569c960bff8" + "sha256:816e19f03b08dcf74e8873080cccbc1577644940c49874ae5c2b89f400e149ac", + "sha256:c57ef7d510cb882ef0c1bfef3fc9401cfc329685eabdd9b15ce674f90ca6c546" ], - "index": "pypi", - "version": "==3.4.2.10" + "markers": "python_version >= '3.7'", + "version": "==3.5.0.1" }, "types-pillow": { "hashes": [ - "sha256:29d51a3ce6ef51fabf728a504d33b4836187ff14256b2e86996d55c91ab214b1", - "sha256:fe09380ab22d412ced989a067e9ee4af719fa3a47ba1b53b232b46514a871042" + "sha256:131078ffa547bf9a201d39ffcdc65633e108148085f4f1b07d4647fcfec6e923", + "sha256:525c1c5ee67b0ac1721c40d2bc618226ef2123c347e527e14e05b920721a13b9" ], - "index": "pypi", - "version": "==10.0.0.2" + "markers": "python_version >= '3.7'", + "version": "==10.1.0.2" }, "types-psycopg2": { "hashes": [ - "sha256:7a323d7744bc8a882fb5a6f63448e903fc70d3dc0d6da9ec1f9c6c4dc10a7102", - "sha256:d5077eacf90e61db8c0b8eea2fdc9d4a97d7aaa16865fb4bd7034a7571520b4d" + "sha256:cc80479def02e4dd1ef21649d82f04426c73bc0693bcc0a8b5223c7c168472af", + "sha256:cf99b62ab32cd4ef412fc3c4da1c29ca5a130847dff06d709b84a523802406f0" ], "index": "pypi", - "version": "==2.9.21.11" + "markers": "python_version >= '3.7'", + "version": "==2.9.21.15" }, "types-pygments": { "hashes": [ - "sha256:60fc96777722942eafd4e7cd248568861aa8696246e3b1effcddabd51001a977", - "sha256:a1b56b792aa1015f6cecd092af00c71ecb12d9d5dd0a30313f9cb3839044389a" + "sha256:26af0cc70fcc7b605d9af7c6c8dcbb5320bc4288e3dd1a3d590c8927e08299b6", + "sha256:33bc6574d4291e139ac2cc3627f6433aaa9c268e9543b5e1c42b5aa3060ba8d5" ], - "index": "pypi", - "version": "==2.15.0.2" + "markers": "python_version >= '3.7'", + "version": "==2.16.0.1" }, "types-pyopenssl": { "hashes": [ - "sha256:19536aa3debfbe25a918cf0d898e9f5fbbe6f3594a429da7914bf331deb1b342", - "sha256:6a010dac9ecd42b582d7dd2cc3e9e40486b79b3b64bb2fffba1474ff96af906d" + "sha256:00171433653265843b7469ddb9f3c86d698668064cc33ef10537822156130ebf", + "sha256:5ffb077fe70b699c88d5caab999ae80e192fe28bf6cda7989b7e79b1e4e2dcd3" ], - "version": "==23.2.0.2" + "markers": "python_version >= '3.7'", + "version": "==23.3.0.0" }, "types-python-dateutil": { "hashes": [ @@ -3838,71 +4059,68 @@ }, "types-pytz": { "hashes": [ - "sha256:4fc2a7fbbc315f0b6630e0b899fd6c743705abe1094d007b0e612d10da15e0f3", - "sha256:ecdc70d543aaf3616a7e48631543a884f74205f284cefd6649ddf44c6a820aac" + "sha256:1999a123a3dc0e39a2ef6d19f3f8584211de9e6a77fe7a0259f04a524e90a5cf", + "sha256:cc23d0192cd49c8f6bba44ee0c81e4586a8f30204970fc0894d209a6b08dab9a" ], - "version": "==2023.3.0.0" + "version": "==2023.3.1.1" }, "types-pyyaml": { "hashes": [ - "sha256:7d340b19ca28cddfdba438ee638cd4084bde213e501a3978738543e27094775b", - "sha256:a461508f3096d1d5810ec5ab95d7eeecb651f3a15b71959999988942063bf01d" + "sha256:334373d392fde0fdf95af5c3f1661885fa10c52167b14593eb856289e1855062", + "sha256:c05bc6c158facb0676674b7f11fe3960db4f389718e19e62bd2b84d6205cfd24" ], - "version": "==6.0.12.11" + "version": "==6.0.12.12" }, "types-redis": { "hashes": [ - "sha256:67c44c14369c33c2a300da2a50b5607c0fc888f7b85eeb7c73e15c78a0f05edd", - "sha256:efdef37dc0c04bf5786195651fd694f8bfdd693eac09ec4af46d90f72652558f" + "sha256:00f003da884ec3d1d54633186b4cbd587b39782595c5603330cc46a51f9bcf6e", + "sha256:aa7fb5f743534500f274ddf11ab1c910aae1020481865a36b799e1d67de2aaf3" ], "index": "pypi", - "version": "==4.6.0.3" + "markers": "python_version >= '3.7'", + "version": "==4.6.0.10" }, "types-requests": { "hashes": [ - "sha256:56d181c85b5925cbc59f4489a57e72a8b2166f18273fd8ba7b6fe0c0b986f12a", - "sha256:6aa3f7faf0ea52d728bb18c0a0d1522d9bfd8c72d26ff6f61bfc3d06a411cf40" + "sha256:b32b9a86beffa876c0c3ac99a4cd3b8b51e973fb8e3bd4e0a6bb32c7efad80fc", + "sha256:dc5852a76f1eaf60eafa81a2e50aefa3d1f015c34cf0cba130930866b1b22a92" ], - "version": "==2.31.0.2" + "markers": "python_version >= '3.7'", + "version": "==2.31.0.10" }, "types-setuptools": { "hashes": [ - "sha256:d57ae6076100b5704b3cc869fdefc671e1baf4c2cd6643f84265dfc0b955bf05", - "sha256:fec09e5c18264c5c09351c00be01a34456fb7a88e457abe97401325f84ad9d36" + "sha256:8f31e8201e7969789e0eb23463b53ebe5f67d92417df4b648a6ea3c357ca4f51", + "sha256:e9c649559743e9f98c924bec91eae97f3ba208a70686182c3658fd7e81778d37" ], "index": "pypi", - "version": "==68.0.0.3" + "markers": "python_version >= '3.7'", + "version": "==68.2.0.1" }, "types-tqdm": { "hashes": [ - "sha256:956d92e921651309ffe36a783cc10d41d753f107c84e82d84373c84d68737246", - "sha256:ad07ee08e758cad04299543b2586ef1d3fd5a10c54271457de13e0cba009cc5d" + "sha256:8eda4c5123dd66985a4cb44268705cfa18beb32d66772271ae185e92b8b10c40", + "sha256:a2f0ebd4cfd48f4914395819a176d7947387e1b98f9228fca38f8cac1b59891c" ], "index": "pypi", - "version": "==4.65.0.2" - }, - "types-urllib3": { - "hashes": [ - "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f", - "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e" - ], - "version": "==1.26.25.14" + "markers": "python_version >= '3.7'", + "version": "==4.66.0.4" }, "typing-extensions": { "hashes": [ - "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36", - "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2" + "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", + "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" ], - "markers": "python_version < '3.10'", - "version": "==4.7.1" + "markers": "python_version < '3.11'", + "version": "==4.8.0" }, "urllib3": { "hashes": [ - "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11", - "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4" + "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3", + "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54" ], - "markers": "python_version >= '3.7'", - "version": "==2.0.4" + "markers": "python_version >= '3.8'", + "version": "==2.1.0" } } } diff --git a/README.md b/README.md index 69e904fcc..271a6eb15 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,11 @@ [![demo](https://cronitor.io/badges/ve7ItY/production/W5E_B9jkelG9ZbDiNHUPQEVH3MY.svg)](https://demo.paperless-ngx.com)

- - + + + + +

@@ -16,8 +19,7 @@ Paperless-ngx is a document management system that transforms your physical documents into a searchable online archive so you can keep, well, _less paper_. -Paperless-ngx forked from [paperless-ng](https://github.com/jonaswinkler/paperless-ng) to continue the great work and distribute responsibility of supporting and advancing the project among a team of people. [Consider joining us!](#community-support) Discussion of this transition can be found in issues -[#1599](https://github.com/jonaswinkler/paperless-ng/issues/1599) and [#1632](https://github.com/jonaswinkler/paperless-ng/issues/1632). +Paperless-ngx is the official successor to the original [Paperless](https://github.com/the-paperless-project/paperless) & [Paperless-ng](https://github.com/jonaswinkler/paperless-ng) projects and is designed to distribute the responsibility of advancing and supporting the project among a team of people. [Consider joining us!](#community-support) A demo is available at [demo.paperless-ngx.com](https://demo.paperless-ngx.com) using login `demo` / `demo`. _Note: demo content is reset frequently and confidential information should not be uploaded._ @@ -33,37 +35,19 @@ A demo is available at [demo.paperless-ngx.com](https://demo.paperless-ngx.com) # Features -![Dashboard](https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docs/assets/screenshots/documents-smallcards.png#gh-light-mode-only) -![Dashboard](https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docs/assets/screenshots/documents-smallcards-dark.png#gh-dark-mode-only) + + + + + -- Organize and index your scanned documents with tags, correspondents, types, and more. -- Performs OCR on your documents, adds selectable text to image only documents and adds tags, correspondents and document types to your documents. -- Supports PDF documents, images, plain text files, and Office documents (Word, Excel, Powerpoint, and LibreOffice equivalents). - - Office document support is optional and provided by Apache Tika (see [configuration](https://docs.paperless-ngx.com/configuration/#tika)) -- Paperless stores your documents plain on disk. Filenames and folders are managed by paperless and their format can be configured freely. -- Single page application front end. - - Includes a dashboard that shows basic statistics and has document upload. - - Filtering by tags, correspondents, types, and more. - - Customizable views can be saved and displayed on the dashboard. -- Full text search helps you find what you need. - - Auto completion suggests relevant words from your documents. - - Results are sorted by relevance to your search query. - - Highlighting shows you which parts of the document matched the query. - - Searching for similar documents ("More like this") -- Email processing: Paperless adds documents from your email accounts. - - Configure multiple accounts and filters for each account. - - When adding documents from mail, paperless can move these mail to a new folder, mark them as read, flag them as important or delete them. -- Machine learning powered document matching. - - Paperless-ngx learns from your documents and will be able to automatically assign tags, correspondents and types to documents once you've stored a few documents in paperless. -- Optimized for multi core systems: Paperless-ngx consumes multiple documents in parallel. -- The integrated sanity checker makes sure that your document archive is in good health. -- [More screenshots are available in the documentation](https://docs.paperless-ngx.com/#screenshots). +A full list of [features](https://docs.paperless-ngx.com/#features) and [screenshots](https://docs.paperless-ngx.com/#screenshots) are available in the [documentation](https://docs.paperless-ngx.com/). # Getting started -The easiest way to deploy paperless is docker-compose. The files in the [`/docker/compose` directory](https://github.com/paperless-ngx/paperless-ngx/tree/main/docker/compose) are configured to pull the image from Github Packages. +The easiest way to deploy paperless is `docker compose`. The files in the [`/docker/compose` directory](https://github.com/paperless-ngx/paperless-ngx/tree/main/docker/compose) are configured to pull the image from GitHub Packages. -If you'd like to jump right in, you can configure a docker-compose environment with our install script: +If you'd like to jump right in, you can configure a `docker compose` environment with our install script: ```bash bash -c "$(curl -L https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh)" @@ -85,7 +69,7 @@ If you feel like contributing to the project, please do! Bug fixes, enhancements ## Community Support -People interested in continuing the work on paperless-ngx are encouraged to reach out here on github and in the [Matrix Room](https://matrix.to/#/#paperless:adnidor.de). If you would like to contribute to the project on an ongoing basis there are multiple [teams](https://github.com/orgs/paperless-ngx/people) (frontend, ci/cd, etc) that could use your help so please reach out! +People interested in continuing the work on paperless-ngx are encouraged to reach out here on github and in the [Matrix Room](https://matrix.to/#/#paperless:matrix.org). If you would like to contribute to the project on an ongoing basis there are multiple [teams](https://github.com/orgs/paperless-ngx/people) (frontend, ci/cd, etc) that could use your help so please reach out! ## Translation diff --git a/docker/compose/docker-compose.ci-test.yml b/docker/compose/docker-compose.ci-test.yml index 99f0ee90e..e9ff1d29e 100644 --- a/docker/compose/docker-compose.ci-test.yml +++ b/docker/compose/docker-compose.ci-test.yml @@ -1,4 +1,4 @@ -# docker-compose file for running paperless testing with actual gotenberg +# Docker Compose file for running paperless testing with actual gotenberg # and Tika containers for a more end to end test of the Tika related functionality # Can be used locally or by the CI to start the nessecary containers with the # correct networking for the tests diff --git a/docker/compose/docker-compose.mariadb-tika.yml b/docker/compose/docker-compose.mariadb-tika.yml index 1b39c254c..7513655d0 100644 --- a/docker/compose/docker-compose.mariadb-tika.yml +++ b/docker/compose/docker-compose.mariadb-tika.yml @@ -1,4 +1,4 @@ -# docker-compose file for running paperless from the Docker Hub. +# docker compose file for running paperless from the Docker Hub. # This file contains everything paperless needs to run. # Paperless supports amd64, arm and arm64 hardware. # @@ -10,7 +10,7 @@ # as this file and mounted to the correct folders inside the container. # - Paperless listens on port 8000. # -# In addition to that, this docker-compose file adds the following optional +# In addition to that, this Docker Compose file adds the following optional # configurations: # # - Instead of SQLite (default), MariaDB is used as the database server. @@ -23,9 +23,9 @@ # # - Copy this file as 'docker-compose.yml' and the files 'docker-compose.env' # and '.env' into a folder. -# - Run 'docker-compose pull'. -# - Run 'docker-compose run --rm webserver createsuperuser' to create a user. -# - Run 'docker-compose up -d'. +# - Run 'docker compose pull'. +# - Run 'docker compose run --rm webserver createsuperuser' to create a user. +# - Run 'docker compose up -d'. # # For more extensive installation and update instructions, refer to the # documentation. diff --git a/docker/compose/docker-compose.mariadb.yml b/docker/compose/docker-compose.mariadb.yml index e25ef78b3..e08cafa41 100644 --- a/docker/compose/docker-compose.mariadb.yml +++ b/docker/compose/docker-compose.mariadb.yml @@ -1,4 +1,4 @@ -# docker-compose file for running paperless from the Docker Hub. +# Docker Compose file for running paperless from the Docker Hub. # This file contains everything paperless needs to run. # Paperless supports amd64, arm and arm64 hardware. # @@ -10,7 +10,7 @@ # as this file and mounted to the correct folders inside the container. # - Paperless listens on port 8000. # -# In addition to that, this docker-compose file adds the following optional +# In addition to that, this Docker Compose file adds the following optional # configurations: # # - Instead of SQLite (default), MariaDB is used as the database server. @@ -19,9 +19,9 @@ # # - Copy this file as 'docker-compose.yml' and the files 'docker-compose.env' # and '.env' into a folder. -# - Run 'docker-compose pull'. -# - Run 'docker-compose run --rm webserver createsuperuser' to create a user. -# - Run 'docker-compose up -d'. +# - Run 'docker compose pull'. +# - Run 'docker compose run --rm webserver createsuperuser' to create a user. +# - Run 'docker compose up -d'. # # For more extensive installation and update instructions, refer to the # documentation. diff --git a/docker/compose/docker-compose.portainer.yml b/docker/compose/docker-compose.portainer.yml index 3dff3d7e2..eb6a37b4c 100644 --- a/docker/compose/docker-compose.portainer.yml +++ b/docker/compose/docker-compose.portainer.yml @@ -1,4 +1,4 @@ -# docker-compose file for running paperless from the Docker Hub. +# Docker Compose file for running paperless from the Docker Hub. # This file contains everything paperless needs to run. # Paperless supports amd64, arm and arm64 hardware. # @@ -10,7 +10,7 @@ # as this file and mounted to the correct folders inside the container. # - Paperless listens on port 8010. # -# In addition to that, this docker-compose file adds the following optional +# In addition to that, this Docker Compose file adds the following optional # configurations: # # - Instead of SQLite (default), PostgreSQL is used as the database server. diff --git a/docker/compose/docker-compose.postgres-tika.yml b/docker/compose/docker-compose.postgres-tika.yml index 79496b253..d040b307c 100644 --- a/docker/compose/docker-compose.postgres-tika.yml +++ b/docker/compose/docker-compose.postgres-tika.yml @@ -1,4 +1,4 @@ -# docker-compose file for running paperless from the docker container registry. +# Docker Compose file for running paperless from the docker container registry. # This file contains everything paperless needs to run. # Paperless supports amd64, arm and arm64 hardware. # @@ -10,7 +10,7 @@ # as this file and mounted to the correct folders inside the container. # - Paperless listens on port 8000. # -# In addition to that, this docker-compose file adds the following optional +# In addition to that, this Docker Compose file adds the following optional # configurations: # # - Instead of SQLite (default), PostgreSQL is used as the database server. @@ -23,9 +23,9 @@ # # - Copy this file as 'docker-compose.yml' and the files 'docker-compose.env' # and '.env' into a folder. -# - Run 'docker-compose pull'. -# - Run 'docker-compose run --rm webserver createsuperuser' to create a user. -# - Run 'docker-compose up -d'. +# - Run 'docker compose pull'. +# - Run 'docker compose run --rm webserver createsuperuser' to create a user. +# - Run 'docker compose up -d'. # # For more extensive installation and update instructions, refer to the # documentation. diff --git a/docker/compose/docker-compose.postgres.yml b/docker/compose/docker-compose.postgres.yml index b528506f3..4a0d7d11e 100644 --- a/docker/compose/docker-compose.postgres.yml +++ b/docker/compose/docker-compose.postgres.yml @@ -1,4 +1,4 @@ -# docker-compose file for running paperless from the Docker Hub. +# Docker Compose file for running paperless from the Docker Hub. # This file contains everything paperless needs to run. # Paperless supports amd64, arm and arm64 hardware. # @@ -10,7 +10,7 @@ # as this file and mounted to the correct folders inside the container. # - Paperless listens on port 8000. # -# In addition to that, this docker-compose file adds the following optional +# In addition to that, this Docker Compose file adds the following optional # configurations: # # - Instead of SQLite (default), PostgreSQL is used as the database server. @@ -19,9 +19,9 @@ # # - Copy this file as 'docker-compose.yml' and the files 'docker-compose.env' # and '.env' into a folder. -# - Run 'docker-compose pull'. -# - Run 'docker-compose run --rm webserver createsuperuser' to create a user. -# - Run 'docker-compose up -d'. +# - Run 'docker compose pull'. +# - Run 'docker compose run --rm webserver createsuperuser' to create a user. +# - Run 'docker compose up -d'. # # For more extensive installation and update instructions, refer to the # documentation. diff --git a/docker/compose/docker-compose.sqlite-tika.yml b/docker/compose/docker-compose.sqlite-tika.yml index 909dafe5b..37f619c17 100644 --- a/docker/compose/docker-compose.sqlite-tika.yml +++ b/docker/compose/docker-compose.sqlite-tika.yml @@ -1,4 +1,4 @@ -# docker-compose file for running paperless from the docker container registry. +# Docker Compose file for running paperless from the docker container registry. # This file contains everything paperless needs to run. # Paperless supports amd64, arm and arm64 hardware. # All compose files of paperless configure paperless in the following way: @@ -11,7 +11,7 @@ # # SQLite is used as the database. The SQLite file is stored in the data volume. # -# In addition to that, this docker-compose file adds the following optional +# In addition to that, this Docker Compose file adds the following optional # configurations: # # - Apache Tika and Gotenberg servers are started with paperless and paperless @@ -23,9 +23,9 @@ # # - Copy this file as 'docker-compose.yml' and the files 'docker-compose.env' # and '.env' into a folder. -# - Run 'docker-compose pull'. -# - Run 'docker-compose run --rm webserver createsuperuser' to create a user. -# - Run 'docker-compose up -d'. +# - Run 'docker compose pull'. +# - Run 'docker compose run --rm webserver createsuperuser' to create a user. +# - Run 'docker compose up -d'. # # For more extensive installation and update instructions, refer to the # documentation. diff --git a/docker/compose/docker-compose.sqlite.yml b/docker/compose/docker-compose.sqlite.yml index 9f9e01f68..a6c0f2bbe 100644 --- a/docker/compose/docker-compose.sqlite.yml +++ b/docker/compose/docker-compose.sqlite.yml @@ -1,4 +1,4 @@ -# docker-compose file for running paperless from the Docker Hub. +# Docker Compose file for running paperless from the Docker Hub. # This file contains everything paperless needs to run. # Paperless supports amd64, arm and arm64 hardware. # @@ -16,9 +16,9 @@ # # - Copy this file as 'docker-compose.yml' and the files 'docker-compose.env' # and '.env' into a folder. -# - Run 'docker-compose pull'. -# - Run 'docker-compose run --rm webserver createsuperuser' to create a user. -# - Run 'docker-compose up -d'. +# - Run 'docker compose pull'. +# - Run 'docker compose run --rm webserver createsuperuser' to create a user. +# - Run 'docker compose up -d'. # # For more extensive installation and update instructions, refer to the # documentation. diff --git a/docker/docker-prepare.sh b/docker/docker-prepare.sh index 6e5f6889a..2e66a1a3e 100755 --- a/docker/docker-prepare.sh +++ b/docker/docker-prepare.sh @@ -80,7 +80,7 @@ django_checks() { search_index() { - local -r index_version=6 + local -r index_version=7 local -r index_version_file=${DATA_DIR}/.index_version if [[ (! -f "${index_version_file}") || $(<"${index_version_file}") != "$index_version" ]]; then diff --git a/docker/install_management_commands.sh b/docker/install_management_commands.sh index e5c8b30a0..38604af9d 100755 --- a/docker/install_management_commands.sh +++ b/docker/install_management_commands.sh @@ -13,6 +13,7 @@ for command in decrypt_documents \ document_retagger \ document_thumbnails \ document_sanity_checker \ + document_fuzzy_match \ manage_superuser; do echo "installing $command..." diff --git a/docs/administration.md b/docs/administration.md index 5b5ca2ff6..c5659a94c 100644 --- a/docs/administration.md +++ b/docs/administration.md @@ -5,17 +5,19 @@ Multiple options exist for making backups of your paperless instance, depending on how you installed paperless. -Before making backups, make sure that paperless is not running. +Before making a backup, it's probably best to make sure that paperless is not actively +consuming documents at that time. Options available to any installation of paperless: -- Use the [document exporter](#exporter). The document exporter exports all your documents, - thumbnails, metadata, and database contents to a specific folder. You may import your - documents and settings into a fresh instance of paperless again or store your - documents in another DMS with this export. -- The document exporter is also able to update an already existing - export. Therefore, incremental backups with `rsync` are entirely - possible. +- Use the [document exporter](#exporter). The document exporter exports all your documents, + thumbnails, metadata, and database contents to a specific folder. You may import your + documents and settings into a fresh instance of paperless again or store your + documents in another DMS with this export. + + The document exporter is also able to update an already existing + export. Therefore, incremental backups with `rsync` are entirely + possible. !!! caution @@ -25,31 +27,37 @@ Options available to any installation of paperless: Options available to docker installations: -- Backup the docker volumes. These usually reside within - `/var/lib/docker/volumes` on the host and you need to be root in - order to access them. +- Backup the docker volumes. These usually reside within + `/var/lib/docker/volumes` on the host and you need to be root in + order to access them. - Paperless uses 4 volumes: + Paperless uses 4 volumes: - - `paperless_media`: This is where your documents are stored. - - `paperless_data`: This is where auxillary data is stored. This - folder also contains the SQLite database, if you use it. - - `paperless_pgdata`: Exists only if you use PostgreSQL and - contains the database. - - `paperless_dbdata`: Exists only if you use MariaDB and contains - the database. + - `paperless_media`: This is where your documents are stored. + - `paperless_data`: This is where auxillary data is stored. This + folder also contains the SQLite database, if you use it. + - `paperless_pgdata`: Exists only if you use PostgreSQL and + contains the database. + - `paperless_dbdata`: Exists only if you use MariaDB and contains + the database. Options available to bare-metal and non-docker installations: -- Backup the entire paperless folder. This ensures that if your - paperless instance crashes at some point or your disk fails, you can - simply copy the folder back into place and it works. +- Backup the entire paperless folder. This ensures that if your + paperless instance crashes at some point or your disk fails, you can + simply copy the folder back into place and it works. - When using PostgreSQL or MariaDB, you'll also have to backup the - database. + When using PostgreSQL or MariaDB, you'll also have to backup the + database. ### Restoring {#migrating-restoring} +If you've backed-up Paperless-ngx using the [document exporter](#exporter), +restoring can simply be done with the [document importer](#importer). + +Of course, other backup strategies require restoring any volumes, folders and database +copies you created in the steps above. + ## Updating Paperless {#updating} ### Docker Route {#docker-updating} @@ -63,7 +71,7 @@ First of all, ensure that paperless is stopped. ```shell-session $ cd /path/to/paperless -$ docker-compose down +$ docker compose down ``` After that, [make a backup](#backup). @@ -71,22 +79,22 @@ After that, [make a backup](#backup). 1. If you pull the image from the docker hub, all you need to do is: ```shell-session - $ docker-compose pull - $ docker-compose up + $ docker compose pull + $ docker compose up ``` - The docker-compose files refer to the `latest` version, which is + The Docker Compose files refer to the `latest` version, which is always the latest stable release. 1. If you built the image yourself, do the following: ```shell-session $ git pull - $ docker-compose build - $ docker-compose up + $ docker compose build + $ docker compose up ``` -Running `docker-compose up` will also apply any new database migrations. +Running `docker compose up` will also apply any new database migrations. If you see everything working, press CTRL+C once to gracefully stop paperless. Then you can start paperless-ngx with `-d` to have it run in the background. @@ -94,7 +102,7 @@ the background. !!! note In version 0.9.14, the update process was changed. In 0.9.13 and - earlier, the docker-compose files specified exact versions and pull + earlier, the Docker Compose files specified exact versions and pull won't automatically update to newer versions. In order to enable updates as described above, either get the new `docker-compose.yml` file from @@ -139,7 +147,7 @@ following: 1. Update dependencies. New paperless version may require additional dependencies. The dependencies required are listed in the section about - [bare metal installations](/setup#bare_metal). + [bare metal installations](setup.md#bare_metal). 2. Update python requirements. Keep in mind to activate your virtual environment before that, if you use one. @@ -212,11 +220,11 @@ Paperless comes with some management commands that perform various maintenance tasks on your paperless instance. You can invoke these commands in the following way: -With docker-compose, while paperless is running: +With Docker Compose, while paperless is running: ```shell-session $ cd /path/to/paperless -$ docker-compose exec webserver +$ docker compose exec webserver ``` With docker, while paperless is running: @@ -246,20 +254,21 @@ migration to another DMS. If you use the document exporter within a cronjob to backup your data you might use the `-T` flag behind exec to suppress "The input device is not a TTY" errors. For example: -`docker-compose exec -T webserver document_exporter ../export` +`docker compose exec -T webserver document_exporter ../export` ``` document_exporter target [-c] [-d] [-f] [-na] [-nt] [-p] [-sm] [-z] optional arguments: --c, --compare-checksums --d, --delete --f, --use-filename-format +-c, --compare-checksums +-d, --delete +-f, --use-filename-format -na, --no-archive -nt, --no-thumbnail --p, --use-folder-prefix +-p, --use-folder-prefix -sm, --split-manifest --z --zip +-z, --zip +-zn, --zip-name ``` `target` is a folder to which the data gets written. This includes @@ -287,7 +296,7 @@ other files. The filenames generated by this command follow the format `[date created] [correspondent] [title].[extension]`. If you want -paperless to use [`PAPERLESS_FILENAME_FORMAT`](/configuration#PAPERLESS_FILENAME_FORMAT) for exported filenames +paperless to use [`PAPERLESS_FILENAME_FORMAT`](configuration.md#PAPERLESS_FILENAME_FORMAT) for exported filenames instead, specify `-f` or `--use-filename-format`. If `-na` or `--no-archive` is provided, no archive files will be exported, @@ -315,7 +324,8 @@ manifest.json will still contain application wide information (e.g. tags, corres documenttype, etc) If `-z` or `--zip` is provided, the export will be a zip file -in the target directory, named according to the current date. +in the target directory, named according to the current local date or the +value set in `-zn` or `--zip-name`. !!! warning @@ -352,7 +362,7 @@ currently-imported docs. This problem is common enough that there are tools for it. ``` -document_retagger [-h] [-c] [-T] [-t] [-i] [--use-first] [-f] +document_retagger [-h] [-c] [-T] [-t] [-i] [--id-range] [--use-first] [-f] optional arguments: -c, --correspondent @@ -360,6 +370,7 @@ optional arguments: -t, --document_type -s, --storage_path -i, --inbox-only +--id-range --use-first -f, --overwrite ``` @@ -376,6 +387,11 @@ Specify `-i` to have the document retagger work on documents tagged with inbox tags only. This is useful when you don't want to mess with your already processed documents. +Specify `--id-range 1 100` to have the document retagger work only on a +specific range of document id´s. This can be useful if you have a lot of +documents and want to test the matching rules only on a subset of +documents. + When multiple document types or correspondents match a single document, the retagger won't assign these to the document. Specify `--use-first` to override this behavior and just use the first correspondent or type @@ -407,6 +423,9 @@ This command takes no arguments. Use this command to re-create document thumbnails. Optionally include the ` --document {id}` option to generate thumbnails for a specific document only. +You may also specify `--processes` to control the number of processes used to generate new thumbnails. The default is to utilize +a quarter of the available processors. + ``` document_thumbnails ``` @@ -434,7 +453,7 @@ task scheduler. ### Managing filenames {#renamer} If you use paperless' feature to -[assign custom filenames to your documents](/advanced_usage#file-name-handling), you can use this command to move all your files after +[assign custom filenames to your documents](advanced_usage.md#file-name-handling), you can use this command to move all your files after changing the naming scheme. !!! warning @@ -459,19 +478,19 @@ collection for issues. The issues detected by the sanity checker are as follows: -- Missing original files. -- Missing archive files. -- Inaccessible original files due to improper permissions. -- Inaccessible archive files due to improper permissions. -- Corrupted original documents by comparing their checksum against - what is stored in the database. -- Corrupted archive documents by comparing their checksum against what - is stored in the database. -- Missing thumbnails. -- Inaccessible thumbnails due to improper permissions. -- Documents without any content (warning). -- Orphaned files in the media directory (warning). These are files - that are not referenced by any document in paperless. +- Missing original files. +- Missing archive files. +- Inaccessible original files due to improper permissions. +- Inaccessible archive files due to improper permissions. +- Corrupted original documents by comparing their checksum against + what is stored in the database. +- Corrupted archive documents by comparing their checksum against what + is stored in the database. +- Missing thumbnails. +- Inaccessible thumbnails due to improper permissions. +- Documents without any content (warning). +- Orphaned files in the media directory (warning). These are files + that are not referenced by any document in paperless. ``` document_sanity_checker @@ -540,7 +559,7 @@ Documents can be stored in Paperless using GnuPG encryption. !!! warning - Encryption is deprecated since [paperless-ng 0.9](/changelog#paperless-ng-090) and doesn't really + Encryption is deprecated since [paperless-ng 0.9](changelog.md#paperless-ng-090) and doesn't really provide any additional security, since you have to store the passphrase in a configuration file on the same system as the encrypted documents for paperless to work. Furthermore, the entire text content of the @@ -561,9 +580,30 @@ Enabling encryption is no longer supported. Basic usage to disable encryption of your document store: -(Note: If [`PAPERLESS_PASSPHRASE`](/configuration#PAPERLESS_PASSPHRASE) isn't set already, you need to specify +(Note: If [`PAPERLESS_PASSPHRASE`](configuration.md#PAPERLESS_PASSPHRASE) isn't set already, you need to specify it here) ``` decrypt_documents [--passphrase SECR3TP4SSPHRA$E] ``` + +### Detecting duplicates {#fuzzy_duplicate} + +Paperless already catches and prevents upload of exactly matching documents, +however a new scan of an existing document may not produce an exact bit for bit +duplicate. But the content should be exact or close, allowing detection. + +This tool does a fuzzy match over document content, looking for +those which look close according to a given ratio. + +At this time, other metadata (such as correspondent or type) is not +take into account by the detection. + +``` +document_fuzzy_match [--ratio] [--processes N] +``` + +| Option | Required | Default | Description | +| ----------- | -------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------ | +| --ratio | No | 85.0 | a number between 0 and 100, setting how similar a document must be for it to be reported. Higher numbers mean more similarity. | +| --processes | No | 1/4 of system cores | Number of processes to use for matching. Setting 1 disables multiple processes | diff --git a/docs/advanced_usage.md b/docs/advanced_usage.md index 60180eb72..ac8c1549d 100644 --- a/docs/advanced_usage.md +++ b/docs/advanced_usage.md @@ -107,7 +107,7 @@ document is consumed using a couple of simple hooks. Just write a script, put it somewhere that Paperless can read & execute, and then put the path to that script in `paperless.conf` or `docker-compose.env` with the variable name of either -[`PAPERLESS_PRE_CONSUME_SCRIPT`](/configuration#PAPERLESS_PRE_CONSUME_SCRIPT) or [`PAPERLESS_POST_CONSUME_SCRIPT`](/configuration#PAPERLESS_POST_CONSUME_SCRIPT). +[`PAPERLESS_PRE_CONSUME_SCRIPT`](configuration.md#PAPERLESS_PRE_CONSUME_SCRIPT) or [`PAPERLESS_POST_CONSUME_SCRIPT`](configuration.md#PAPERLESS_POST_CONSUME_SCRIPT). !!! info @@ -127,6 +127,7 @@ script can access the following relevant environment variables set: | ----------------------- | ------------------------------------------------------------ | | `DOCUMENT_SOURCE_PATH` | Original path of the consumed document | | `DOCUMENT_WORKING_PATH` | Path to a copy of the original that consumption will work on | +| `TASK_ID` | UUID of the task used to process the new document (if any) | !!! note @@ -169,21 +170,22 @@ Executed after the consumer has successfully processed a document and has moved it into paperless. It receives the following environment variables: -| Environment Variable | Description | -| ---------------------------- | --------------------------------------------- | -| `DOCUMENT_ID` | Database primary key of the document | -| `DOCUMENT_FILE_NAME` | Formatted filename, not including paths | -| `DOCUMENT_CREATED` | Date & time when document created | -| `DOCUMENT_MODIFIED` | Date & time when document was last modified | -| `DOCUMENT_ADDED` | Date & time when document was added | -| `DOCUMENT_SOURCE_PATH` | Path to the original document file | -| `DOCUMENT_ARCHIVE_PATH` | Path to the generate archive file (if any) | -| `DOCUMENT_THUMBNAIL_PATH` | Path to the generated thumbnail | -| `DOCUMENT_DOWNLOAD_URL` | URL for document download | -| `DOCUMENT_THUMBNAIL_URL` | URL for the document thumbnail | -| `DOCUMENT_CORRESPONDENT` | Assigned correspondent (if any) | -| `DOCUMENT_TAGS` | Comma separated list of tags applied (if any) | -| `DOCUMENT_ORIGINAL_FILENAME` | Filename of original document | +| Environment Variable | Description | +| ---------------------------- | ---------------------------------------------- | +| `DOCUMENT_ID` | Database primary key of the document | +| `DOCUMENT_FILE_NAME` | Formatted filename, not including paths | +| `DOCUMENT_CREATED` | Date & time when document created | +| `DOCUMENT_MODIFIED` | Date & time when document was last modified | +| `DOCUMENT_ADDED` | Date & time when document was added | +| `DOCUMENT_SOURCE_PATH` | Path to the original document file | +| `DOCUMENT_ARCHIVE_PATH` | Path to the generate archive file (if any) | +| `DOCUMENT_THUMBNAIL_PATH` | Path to the generated thumbnail | +| `DOCUMENT_DOWNLOAD_URL` | URL for document download | +| `DOCUMENT_THUMBNAIL_URL` | URL for the document thumbnail | +| `DOCUMENT_CORRESPONDENT` | Assigned correspondent (if any) | +| `DOCUMENT_TAGS` | Comma separated list of tags applied (if any) | +| `DOCUMENT_ORIGINAL_FILENAME` | Filename of original document | +| `TASK_ID` | Task UUID used to import the document (if any) | The script can be in any language, A simple shell script example: @@ -234,8 +236,8 @@ webserver: Troubleshooting: -- Monitor the docker-compose log - `cd ~/paperless-ngx; docker-compose logs -f` +- Monitor the Docker Compose log + `cd ~/paperless-ngx; docker compose logs -f` - Check your script's permission e.g. in case of permission error `sudo chmod 755 post-consumption-example.sh` - Pipe your scripts's output to a log file e.g. @@ -249,7 +251,7 @@ document. You will end up getting files like `0000123.pdf` in your media directory. This isn't necessarily a bad thing, because you normally don't have to access these files manually. However, if you wish to name your files differently, you can do that by adjusting the -[`PAPERLESS_FILENAME_FORMAT`](/configuration#PAPERLESS_FILENAME_FORMAT) configuration option. Paperless adds the +[`PAPERLESS_FILENAME_FORMAT`](configuration.md#PAPERLESS_FILENAME_FORMAT) configuration option. Paperless adds the correct file extension e.g. `.pdf`, `.jpg` automatically. This variable allows you to configure the filename (folders are allowed) @@ -342,7 +344,7 @@ value. Paperless checks the filename of a document whenever it is saved. Therefore, you need to update the filenames of your documents and move them after altering this setting by invoking the - [`document renamer`](/administration#renamer). + [`document renamer`](administration.md#renamer). !!! warning @@ -377,7 +379,7 @@ When a single storage layout is not sufficient for your use case, storage paths come to the rescue. Storage paths allow you to configure more precisely where each document is stored in the file system. -- Each storage path is a [`PAPERLESS_FILENAME_FORMAT`](/configuration#PAPERLESS_FILENAME_FORMAT) and +- Each storage path is a [`PAPERLESS_FILENAME_FORMAT`](configuration.md#PAPERLESS_FILENAME_FORMAT) and follows the rules described above - Each document is assigned a storage path using the matching algorithms described above, but can be overwritten at any time @@ -417,7 +419,7 @@ Insurances/ # Insurances !!! tip Defining a storage path is optional. If no storage path is defined for a - document, the global [`PAPERLESS_FILENAME_FORMAT`](/configuration#PAPERLESS_FILENAME_FORMAT) is applied. + document, the global [`PAPERLESS_FILENAME_FORMAT`](configuration.md#PAPERLESS_FILENAME_FORMAT) is applied. ## Celery Monitoring {#celery-monitoring} @@ -526,7 +528,7 @@ At this time, the library utilized for detection of barcodes supports the follow You may check for updates on the [zbar library homepage](https://github.com/mchehab/zbar). For usage in Paperless, the type of barcode does not matter, only the contents of it. -For how to enable barcode usage, see [the configuration](/configuration#barcodes). +For how to enable barcode usage, see [the configuration](configuration.md#barcodes). The two settings may be enabled independently, but do have interactions as explained below. @@ -552,7 +554,7 @@ one which holds data to keep in the document. If your scanner supports double-sided scanning natively, you do not need this feature. -This feature is turned off by default, see [configuration](/configuration#collate) on how to turn it on. +This feature is turned off by default, see [configuration](configuration.md#collate) on how to turn it on. ### Summary @@ -592,7 +594,7 @@ followed by the even pages. It's important that the scan files get consumed in the correct order, and one at a time. You therefore need to make sure that Paperless is running while you upload the files into -the directory; and if you're using [polling](/configuration#polling), make sure that +the directory; and if you're using [polling](configuration.md#polling), make sure that `CONSUMER_POLLING` is set to a value lower than it takes for the second scan to appear, like 5-10 or even lower. @@ -604,7 +606,7 @@ scan a completely new "odd numbered pages" one. The old staging file will get di ### Interaction with "subdirs as tags" -The collation feature can be used together with the [subdirs as tags](/configuration#consume_config) +The collation feature can be used together with the [subdirs as tags](configuration.md#consume_config) feature (but this is not a requirement). Just create a correctly named double-sided subdir in the hierachy and upload your scans there. For example, both `double-sided/foo/bar` as well as `foo/bar/double-sided` will cause the collated document to be treated as if it diff --git a/docs/api.md b/docs/api.md index c7377760d..0eacd7913 100644 --- a/docs/api.md +++ b/docs/api.md @@ -6,7 +6,7 @@ provides a browsable API for most of its endpoints, which you can inspect at `http://:/api/`. This also documents most of the available filters and ordering fields. -The API provides 7 main endpoints: +The API provides the following main endpoints: - `/api/documents/`: Full CRUD support, except POSTing new documents. See below. @@ -19,6 +19,8 @@ The API provides 7 main endpoints: - `/api/mail_rules/`: Full CRUD support. - `/api/users/`: Full CRUD support. - `/api/groups/`: Full CRUD support. +- `/api/share_links/`: Full CRUD support. +- `/api/custom_fields/`: Full CRUD support. All of these endpoints except for the logging endpoint allow you to fetch (and edit and delete where appropriate) individual objects by @@ -47,8 +49,11 @@ fields: Read-only. - `archived_file_name`: Verbose filename of the archived document. Read-only. Null if no archived document is available. +- `notes`: Array of notes associated with the document. - `set_permissions`: Allows setting document permissions. Optional, write-only. See [below](#permissions). +- `custom_fields`: Array of custom fields & values, specified as + { field: CUSTOM_FIELD_ID, value: VALUE } ## Downloading documents @@ -124,6 +129,11 @@ File metadata is reported as a list of objects in the following form: depends on the file type and the metadata available in that specific document. Paperless only reports PDF metadata at this point. +## Documents additional endpoints + +- `/api/documents//notes/`: Retrieve notes for a document. +- `/api/documents//share_links/`: Retrieve share links for a document. + ## Authorization The REST api provides three different forms of authentication. @@ -167,7 +177,7 @@ specific query parameters cause the API to return full text search results: - `/api/documents/?query=your%20search%20query`: Search for a document - using a full text query. For details on the syntax, see [Basic Usage - Searching](/usage#basic-usage_searching). + using a full text query. For details on the syntax, see [Basic Usage - Searching](usage.md#basic-usage_searching). - `/api/documents/?more_like=1234`: Search for documents similar to the document with id 1234. diff --git a/docs/assets/extra.css b/docs/assets/extra.css index 95e33ec96..bfa517609 100644 --- a/docs/assets/extra.css +++ b/docs/assets/extra.css @@ -20,6 +20,28 @@ margin-left: 4%; float: left; } + + .grid-flipped-left { + width: 66%; + float: left; + } + + .grid-flipped-right { + width: 29%; + margin-left: 4%; + float: left; + } + + .grid-half-left { + width: 48%; + float: left; + } + + .grid-half-right { + width: 48%; + margin-left: 4%; + float: left; + } } .grid-left > p { @@ -31,6 +53,12 @@ margin: 0; } +.clear { + clear: both; + margin-bottom: 20px; + display: block; +} + .index-callout { margin-right: .5rem; } diff --git a/docs/assets/screenshots/bulk-edit.png b/docs/assets/screenshots/bulk-edit.png index 3d96dad24..f46460df4 100644 Binary files a/docs/assets/screenshots/bulk-edit.png and b/docs/assets/screenshots/bulk-edit.png differ diff --git a/docs/assets/screenshots/consumption_template.png b/docs/assets/screenshots/consumption_template.png new file mode 100644 index 000000000..c3802c55f Binary files /dev/null and b/docs/assets/screenshots/consumption_template.png differ diff --git a/docs/assets/screenshots/correspondents.png b/docs/assets/screenshots/correspondents.png index 00fa4cba8..8867cedc3 100644 Binary files a/docs/assets/screenshots/correspondents.png and b/docs/assets/screenshots/correspondents.png differ diff --git a/docs/assets/screenshots/custom_field1.png b/docs/assets/screenshots/custom_field1.png new file mode 100644 index 000000000..c576ab8f8 Binary files /dev/null and b/docs/assets/screenshots/custom_field1.png differ diff --git a/docs/assets/screenshots/custom_field2.png b/docs/assets/screenshots/custom_field2.png new file mode 100644 index 000000000..f7bf012dd Binary files /dev/null and b/docs/assets/screenshots/custom_field2.png differ diff --git a/docs/assets/screenshots/dashboard.png b/docs/assets/screenshots/dashboard.png index 4bd1ee751..29a0997ea 100644 Binary files a/docs/assets/screenshots/dashboard.png and b/docs/assets/screenshots/dashboard.png differ diff --git a/docs/assets/screenshots/documents-filter.png b/docs/assets/screenshots/documents-filter.png index 972cf5998..458cfb9af 100644 Binary files a/docs/assets/screenshots/documents-filter.png and b/docs/assets/screenshots/documents-filter.png differ diff --git a/docs/assets/screenshots/documents-largecards.png b/docs/assets/screenshots/documents-largecards.png index 0b68ba6e8..7254742a8 100644 Binary files a/docs/assets/screenshots/documents-largecards.png and b/docs/assets/screenshots/documents-largecards.png differ diff --git a/docs/assets/screenshots/documents-smallcards-dark.png b/docs/assets/screenshots/documents-smallcards-dark.png index 62db042e6..ae15de409 100644 Binary files a/docs/assets/screenshots/documents-smallcards-dark.png and b/docs/assets/screenshots/documents-smallcards-dark.png differ diff --git a/docs/assets/screenshots/documents-smallcards-slimsidebar.png b/docs/assets/screenshots/documents-smallcards-slimsidebar.png new file mode 100644 index 000000000..79a6e6706 Binary files /dev/null and b/docs/assets/screenshots/documents-smallcards-slimsidebar.png differ diff --git a/docs/assets/screenshots/documents-smallcards.png b/docs/assets/screenshots/documents-smallcards.png index 5c172b23f..c976eeb6f 100644 Binary files a/docs/assets/screenshots/documents-smallcards.png and b/docs/assets/screenshots/documents-smallcards.png differ diff --git a/docs/assets/screenshots/documents-table.png b/docs/assets/screenshots/documents-table.png index 29927daf5..812e2c1e6 100644 Binary files a/docs/assets/screenshots/documents-table.png and b/docs/assets/screenshots/documents-table.png differ diff --git a/docs/assets/screenshots/documents-wchrome-dark.png b/docs/assets/screenshots/documents-wchrome-dark.png index 66a0eb2bc..ae15de409 100644 Binary files a/docs/assets/screenshots/documents-wchrome-dark.png and b/docs/assets/screenshots/documents-wchrome-dark.png differ diff --git a/docs/assets/screenshots/documents-wchrome.png b/docs/assets/screenshots/documents-wchrome.png index 16a8ab525..c976eeb6f 100644 Binary files a/docs/assets/screenshots/documents-wchrome.png and b/docs/assets/screenshots/documents-wchrome.png differ diff --git a/docs/assets/screenshots/editing.png b/docs/assets/screenshots/editing.png index c2dd6892e..e70b2891e 100644 Binary files a/docs/assets/screenshots/editing.png and b/docs/assets/screenshots/editing.png differ diff --git a/docs/assets/screenshots/logs.png b/docs/assets/screenshots/logs.png index cd1f37863..a387fa51f 100644 Binary files a/docs/assets/screenshots/logs.png and b/docs/assets/screenshots/logs.png differ diff --git a/docs/assets/screenshots/mail-rules-edited.png b/docs/assets/screenshots/mail-rules-edited.png index 42db1d673..844466d7a 100644 Binary files a/docs/assets/screenshots/mail-rules-edited.png and b/docs/assets/screenshots/mail-rules-edited.png differ diff --git a/docs/assets/screenshots/mobile.png b/docs/assets/screenshots/mobile.png deleted file mode 100644 index 5ac4c96b3..000000000 Binary files a/docs/assets/screenshots/mobile.png and /dev/null differ diff --git a/docs/assets/screenshots/mobile1.png b/docs/assets/screenshots/mobile1.png new file mode 100644 index 000000000..398a3db64 Binary files /dev/null and b/docs/assets/screenshots/mobile1.png differ diff --git a/docs/assets/screenshots/mobile2.png b/docs/assets/screenshots/mobile2.png new file mode 100644 index 000000000..c6f6eef95 Binary files /dev/null and b/docs/assets/screenshots/mobile2.png differ diff --git a/docs/assets/screenshots/mobile3.png b/docs/assets/screenshots/mobile3.png new file mode 100644 index 000000000..e36b0cbb3 Binary files /dev/null and b/docs/assets/screenshots/mobile3.png differ diff --git a/docs/assets/screenshots/new-correspondent.png b/docs/assets/screenshots/new-correspondent.png new file mode 100644 index 000000000..080871da3 Binary files /dev/null and b/docs/assets/screenshots/new-correspondent.png differ diff --git a/docs/assets/screenshots/new-document_type.png b/docs/assets/screenshots/new-document_type.png new file mode 100644 index 000000000..b515886b6 Binary files /dev/null and b/docs/assets/screenshots/new-document_type.png differ diff --git a/docs/assets/screenshots/new-storage_path.png b/docs/assets/screenshots/new-storage_path.png new file mode 100644 index 000000000..231d09f67 Binary files /dev/null and b/docs/assets/screenshots/new-storage_path.png differ diff --git a/docs/assets/screenshots/new-tag.png b/docs/assets/screenshots/new-tag.png index f763c0ecf..8c5c73fcb 100644 Binary files a/docs/assets/screenshots/new-tag.png and b/docs/assets/screenshots/new-tag.png differ diff --git a/docs/assets/screenshots/permissions_document.png b/docs/assets/screenshots/permissions_document.png new file mode 100644 index 000000000..9b05f104d Binary files /dev/null and b/docs/assets/screenshots/permissions_document.png differ diff --git a/docs/assets/screenshots/permissions_global.png b/docs/assets/screenshots/permissions_global.png new file mode 100644 index 000000000..625f00900 Binary files /dev/null and b/docs/assets/screenshots/permissions_global.png differ diff --git a/docs/assets/screenshots/search-preview.png b/docs/assets/screenshots/search-preview.png index 5e7c29049..676c84e01 100644 Binary files a/docs/assets/screenshots/search-preview.png and b/docs/assets/screenshots/search-preview.png differ diff --git a/docs/assets/screenshots/search-results.png b/docs/assets/screenshots/search-results.png index 5480ef8f1..74a95611c 100644 Binary files a/docs/assets/screenshots/search-results.png and b/docs/assets/screenshots/search-results.png differ diff --git a/docs/changelog.md b/docs/changelog.md index ee80392e2..7e9eb7a64 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2079,7 +2079,7 @@ This is a maintenance release. The changed to the full text searching require you to reindex your documents. _The docker image does this automatically, you don't need to do anything._ To do this, execute the `document_index reindex` - management command (see [Managing the document search index](/administration#index)). + management command (see [Managing the document search index](administration.md#index)). ### paperless-ng 1.3.2 @@ -2118,7 +2118,7 @@ This release contains new database migrations. - Changes - The REST API is versioned from this point onwards. This will allow me to make changes without breaking existing clients. See - the documentation about [API versioning](/api#api-versioning) for details. + the documentation about [API versioning](api.md#api-versioning) for details. - Added a color picker for tag colors. - Added the ability to use the filter for searching the document content as well. @@ -2152,7 +2152,7 @@ This release contains new database migrations. - Changes to the OCRmyPDF integration - Added support for deskewing and automatic rotation of incorrectly rotated pages. This is enabled by default, see - [OCR settings](/configuration#ocr). + [OCR settings](configuration.md#ocr). - Better support for encrypted files. - Better support for various other PDF files: Paperless will now attempt to force OCR with safe options when OCR fails with the @@ -2179,7 +2179,7 @@ This release contains new database migrations. - Added a docker-specific configuration option to adjust the number of worker processes of the web server. See - [Docker options](/configuration#docker). + [Docker options](configuration.md#docker). - Some more memory usage optimizations. - Don't show inbox statistics if no inbox tag is defined. @@ -2188,7 +2188,7 @@ This release contains new database migrations. - Always show top left corner of thumbnails, even for extra wide documents. - Added a management command for executing the sanity checker - directly. See [management utilities](/administration#sanity-checker). + directly. See [management utilities](administration.md#sanity-checker). - The weekly sanity check now reports messages in the log files. - Fixed an issue with the metadata tab not reporting anything in case of missing files. @@ -2222,7 +2222,7 @@ This release contains new database migrations. management commands, since these also ensure that they're always executed as the paperless user and you're less likely to run into permission issues. See - [management commands](/administration#management-commands). + [management commands](administration.md#management-commands). ### paperless-ng 1.1.0 @@ -2264,7 +2264,7 @@ This release contains new database migrations. status notifications. Apache `mod_wsgi` users, see - [this note](/faq#how-do-i-get-websocket-support-with-apache-mod_wsgi). + [this note](faq.md#how-do-i-get-websocket-support-with-apache-mod_wsgi). - Paperless now offers suggestions for tags, correspondents and types on the document detail page. @@ -2309,7 +2309,7 @@ bug reports coming in, I think that this is reasonably stable. - The document exporter locks the media directory and the database during execution to ensure that the resulting export is consistent. - - See the [updated documentation](/administration#exporter) for more details. + - See the [updated documentation](administration.md#exporter) for more details. - Other changes and additions - Added a language selector to the settings. - Added date format options to the settings. @@ -2398,7 +2398,7 @@ paperless. - Thanks to [Jo Vandeginste](https://github.com/jovandeginste), Paperless has optional support for Office documents such as .docx, .doc, .odt and more. - - See the [Tika settings](/configuration#tika) on how to enable this + - See the [Tika settings](configuration.md#tika) on how to enable this feature. This feature requires two additional services (one for parsing Office documents and metadata extraction and another for converting Office documents to PDF), and is therefore not enabled @@ -2485,7 +2485,7 @@ paperless. However, this change is not retroactive: If you used the delete method of the bulk editor, you need to reindex your search index by - [running the management command `document_index` with the argument `reindex`](/administration#index). + [running the management command `document_index` with the argument `reindex`](administration.md#index). ### paperless-ng 0.9.9 @@ -2642,13 +2642,13 @@ primarily. edit page. If available, a dropdown menu will appear next to the download button. - Many of the configuration options regarding OCR have changed. - See [OCR settings](/configuration#ocr) for details. + See [OCR settings](configuration.md#ocr) for details. - Paperless no longer guesses the language of your documents. It always uses the language that you specified with `PAPERLESS_OCR_LANGUAGE`. Be sure to set this to the language the majority of your documents are in. Multiple languages can be specified, but that requires more CPU time. - - The management command [`document_archiver`](/administration#archiver) + - The management command [`document_archiver`](administration.md#archiver) can be used to create archived versions for already existing documents. - Tags from consumption folder. - Thanks to [jayme-github](https://github.com/jayme-github), @@ -2662,7 +2662,7 @@ primarily. - The endpoint for uploading documents now supports specifying custom titles, correspondents, tags and types. This can be used by clients to override the default behavior of paperless. See - [POSTing documents](/api#file-uploads). + [POSTing documents](api.md#file-uploads). - The document endpoint of API now serves documents in this form: - correspondents, document types and tags are referenced by their ID in the fields `correspondent`, `document_type` and @@ -2696,14 +2696,14 @@ primarily. - Paperless now supports searching by tags, types and dates and correspondents. In order to have this applied to your existing documents, you need to perform a `document_index reindex` - management command (see [document search index](/administration#index)) + management command (see [document search index](administration.md#index)) that adds the data to the search index. You only need to do this once, since the schema of the search index changed. Paperless keeps the index updated after that whenever something changes. - Paperless now has spelling corrections ("Did you mean") for miss-typed queries. - The documentation contains - [information about the query syntax](/usage#basic-usage_searching). + [information about the query syntax](usage.md#basic-usage_searching). - Front end: - Clickable tags, correspondents and types allow quick filtering for related documents. @@ -2764,7 +2764,7 @@ primarily. ### paperless-ng 0.9.0 -- **Deprecated:** GnuPG. [See this note on the state of GnuPG in paperless-ng.](/administration#encryption) +- **Deprecated:** GnuPG. [See this note on the state of GnuPG in paperless-ng.](administration.md#encryption) This features will most likely be removed in future versions. - **Added:** New frontend. Features: - Single page application: It's much more responsive than the @@ -2822,7 +2822,7 @@ primarily. uses PostgreSQL instead of SQLite. Username, database and password all default to `paperless` if not specified. - **Modified \[breaking\]:** document_retagger management command - rework. See [Document retagger](/administration#retagger) for + rework. See [Document retagger](administration.md#retagger) for details. Replaces `document_correspondents` management command. - **Removed \[breaking\]:** Reminders. - **Removed:** All customizations made to the django admin pages. @@ -3291,7 +3291,7 @@ this big change. wherein Paperless wasn't recognising `.tif` files properly. Thanks to [ayounggun](https://github.com/ayounggun) for reporting this one and to [Kusti Skytén](https://github.com/kskyten) for posting the - correct solution in the Github issue. + correct solution in the GitHub issue. ### 0.6.0 diff --git a/docs/configuration.md b/docs/configuration.md index ad915e6bb..e952ec41b 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -53,7 +53,7 @@ database engine. Available options are `postgresql` and !!! warning - Using MariaDB comes with some caveats. See [MySQL Caveats](/advanced_usage#mysql-caveats). + Using MariaDB comes with some caveats. See [MySQL Caveats](advanced_usage.md#mysql-caveats). #### [`PAPERLESS_DBHOST=`](#PAPERLESS_DBHOST) {#PAPERLESS_DBHOST} @@ -181,7 +181,7 @@ configure their endpoints, and enable the feature. Defaults to "". If you run paperless on docker, you can add those services to the -docker-compose file (see the provided +Docker Compose file (see the provided [`docker-compose.sqlite-tika.yml`](https://github.com/paperless-ngx/paperless-ngx/blob/main/docker/compose/docker-compose.sqlite-tika.yml) file for reference). @@ -248,7 +248,7 @@ files created using "collectstatic" manager command are stored. #### [`PAPERLESS_FILENAME_FORMAT=`](#PAPERLESS_FILENAME_FORMAT) {#PAPERLESS_FILENAME_FORMAT} : Changes the filenames paperless uses to store documents in the media -directory. See [File name handling](/advanced_usage#file-name-handling) for details. +directory. See [File name handling](advanced_usage.md#file-name-handling) for details. Default is none, which disables this feature. @@ -257,7 +257,7 @@ directory. See [File name handling](/advanced_usage#file-name-handling) for deta : Tells paperless to replace placeholders in `PAPERLESS_FILENAME_FORMAT` that would resolve to 'none' to be omitted from the resulting filename. This also holds -true for directory names. See [File name handling](/advanced_usage#file-name-handling) for +true for directory names. See [File name handling](advanced_usage.md#file-name-handling) for details. Defaults to `false` which disables this feature. @@ -503,7 +503,7 @@ HTTP header/value expected by Django, eg `'["HTTP_X_FORWARDED_PROTO", "https"]'` Settings this value has security implications. Read the Django documentation and be sure you understand its usage before setting it. -#### [`PAPERLESS_EMAIL_CERTIFICATE_FILE=`](#PAPERLESS_EMAIL_CERTIFICATE_FILE) {#PAPERLESS_EMAIL_CERTIFICATE_FILE} +#### [`PAPERLESS_EMAIL_CERTIFICATE_LOCATION=`](#PAPERLESS_EMAIL_CERTIFICATE_LOCATION) {#PAPERLESS_EMAIL_CERTIFICATE_LOCATION} : Configures an additional SSL certificate file containing a [certificate](https://docs.python.org/3/library/ssl.html#certificates) or certificate chain which should be trusted for validating SSL connections against mail providers. @@ -935,7 +935,7 @@ or hidden folders some tools use to store data. script if you like before beginning consumption. This script will be provided data for it to work with via the environment. - For more information, take a look at [pre-consumption script](/advanced_usage#pre-consume-script). + For more information, take a look at [pre-consumption script](advanced_usage.md#pre-consume-script). The default is blank, which means nothing will be executed. @@ -945,7 +945,7 @@ data for it to work with via the environment. script if you like. This script will be provided data for it to work with via the environment. - For more information, take a look at [Post-consumption script](/advanced_usage#post-consume-script). + For more information, take a look at [Post-consumption script](advanced_usage.md#post-consume-script). The default is blank, which means nothing will be executed. @@ -1070,7 +1070,7 @@ file, which are separated by one or multiple barcode pages. The original document will be removed and the separated pages will be saved as pdf. - See additional information in the [advanced usage documentation](/advanced_usage#barcodes) + See additional information in the [advanced usage documentation](advanced_usage.md#barcodes) Defaults to false. @@ -1098,7 +1098,8 @@ setting the ASN (archive serial number) if a properly formatted barcode is detected. The barcode must consist of a (configurable) prefix and the ASN - to be set, for instance `ASN00123`. + to be set, for instance `ASN00123`. The content after the prefix + is cleaned of non-numeric characters. This option is compatible with barcode page separation, since pages will be split up before reading the ASN. @@ -1137,6 +1138,15 @@ combination with PAPERLESS_CONSUMER_BARCODE_UPSCALE bigger than 1.0. Defaults to "300" +## Audit Trail + +#### [`PAPERLESS_AUDIT_LOG_ENABLED=`](#PAPERLESS_AUDIT_LOG_ENABLED){#PAPERLESS_AUDIT_LOG_ENABLED} + +: Enables an audit trail for documents, document types, correspondents, and tags. Log entries can be viewed in the Django backend only. + + !!! warning + Once enabled cannot be disabled + ## Collate Double-Sided Documents {#collate} #### [`PAPERLESS_CONSUMER_ENABLE_COLLATE_DOUBLE_SIDED=`](#PAPERLESS_CONSUMER_ENABLE_COLLATE_DOUBLE_SIDED) {#PAPERLESS_CONSUMER_ENABLE_COLLATE_DOUBLE_SIDED} @@ -1151,7 +1161,7 @@ document. `PAPERLESS_CONSUMER_RECURSIVE` must be enabled for this to work. For more information, read the [corresponding section in the advanced - documentation](/advanced_usage#collate). + documentation](advanced_usage.md#collate). Defaults to false. @@ -1291,7 +1301,7 @@ specified as "chi-tra". [Flower](https://flower.readthedocs.io/en/latest/index.html) will be started by the container. - You can read more about this in the [advanced documentation](/advanced_usage#celery-monitoring). + You can read more about this in the [advanced documentation](advanced_usage.md#celery-monitoring). ## Update Checking {#update-checking} @@ -1303,3 +1313,32 @@ started by the container. v1.9.2. A one-time migration is performed for users who have this setting set. This setting is always ignored if the corresponding frontend setting has been set. + +## Email sending + +Setting an SMTP server for the backend will allow you to reset your +password. All of these options come from their similarly-named [Django settings](https://docs.djangoproject.com/en/4.2/ref/settings/#email-host) + +#### [`PAPERLESS_EMAIL_HOST=`](#PAPERLESS_EMAIL_HOST) {#PAPERLESS_EMAIL_HOST} + +: Defaults to 'localhost'. + +#### [`PAPERLESS_EMAIL_PORT=`](#PAPERLESS_EMAIL_PORT) {#PAPERLESS_EMAIL_PORT} + +: Defaults to port 25. + +#### [`PAPERLESS_EMAIL_HOST_USER=`](#PAPERLESS_EMAIL_HOST_USER) {#PAPERLESS_EMAIL_HOST_USER} + +: Defaults to ''. + +#### [`PAPERLESS_EMAIL_HOST_PASSWORD=`](#PAPERLESS_EMAIL_HOST_PASSWORD) {#PAPERLESS_EMAIL_HOST_PASSWORD} + +: Defaults to ''. + +#### [`PAPERLESS_EMAIL_USE_TLS=`](#PAPERLESS_EMAIL_USE_TLS) {#PAPERLESS_EMAIL_USE_TLS} + +: Defaults to false. + +#### [`PAPERLESS_EMAIL_USE_SSL=`](#PAPERLESS_EMAIL_USE_SSL) {#PAPERLESS_EMAIL_USE_SSL} + +: Defaults to false. diff --git a/docs/development.md b/docs/development.md index a39ccfa63..e4eb36d94 100644 --- a/docs/development.md +++ b/docs/development.md @@ -61,7 +61,7 @@ first-time setup. Every command is executed directly from the root folder of the project unless specified otherwise. 1. Install prerequisites + pipenv as mentioned in - [Bare metal route](/setup#bare_metal). + [Bare metal route](setup.md#bare_metal). 2. Copy `paperless.conf.example` to `paperless.conf` and enable debug mode within the file via `PAPERLESS_DEBUG=true`. diff --git a/docs/faq.md b/docs/faq.md index 73ed87bb6..9dff29dac 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -12,7 +12,7 @@ open to collaboration in the form of PRs, ideas etc. ## _I'm using docker. Where are my documents?_ -**A:** Your documents are stored inside the docker volume +**A:** By default, your documents are stored inside the docker volume `paperless_media`. Docker manages this volume automatically for you. It is a persistent storage and will persist as long as you don't explicitly delete it. The actual location depends on your host operating @@ -46,8 +46,8 @@ elsewhere. Here are a couple notes about that. - By default, paperless uses the internal ID of each document as its filename. This might not be very convenient for export. However, you can adjust the way files are stored in paperless by - [configuring the filename format](/advanced_usage#file-name-handling). -- [The exporter](/administration#exporter) is + [configuring the filename format](advanced_usage.md#file-name-handling). +- [The exporter](administration.md#exporter) is another easy way to get your files out of paperless with reasonable file names. @@ -78,12 +78,12 @@ has to do much less work to serve the data. !!! note You can adjust some of the settings so that paperless uses less - processing power. See [setup](/setup#less-powerful-devices) for details. + processing power. See [setup](setup.md#less-powerful-devices) for details. ## _How do I install paperless-ngx on Raspberry Pi?_ -**A:** Docker images are available for armv7 and arm64 hardware, so just -follow the [docker-compose instructions](https://docs.paperless-ngx.com/setup/#installation). Apart from more required disk +**A:** Docker images are available for arm64 hardware, so just +follow the [Docker Compose instructions](https://docs.paperless-ngx.com/setup/#installation). Apart from more required disk space compared to a bare metal installation, docker comes with close to zero overhead, even on Raspberry Pi. @@ -92,6 +92,13 @@ the python requirements do not have precompiled packages for ARM / ARM64. Installation of these will require additional development libraries and compilation will take a long time. +!!! note + + For ARMv7 (32-bit) systems, paperless may still function, but it could require + modifications to the Dockerfile (if using Docker) or additional + tools for installing bare metal. It is suggested to upgrade to arm64 + instead. + ## _How do I run this on Unraid?_ **A:** Paperless-ngx is available as [community @@ -103,10 +110,7 @@ Fahrer](https://github.com/Tooa) created a container template for that. **A:** I honestly don't know! As for all other devices that might be able to run paperless, you're a bit on your own. If you can't run the docker image, the documentation has instructions for bare metal -installs. I'm running paperless on an i3 processor from 2015 or so. -This is also what I use to test new releases with. Apart from that, I -also have a Raspberry Pi, which I occasionally build the image on and -see if it works. +installs. ## _How do I proxy this with NGINX?_ diff --git a/docs/index.md b/docs/index.md index fdde118a4..6dc49bfc6 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,7 +5,7 @@ **Paperless-ngx** is a _community-supported_ open-source document management system that transforms your physical documents into a searchable online archive so you can keep, well, _less paper_. -[Get started](/setup){ .md-button .md-button--primary .index-callout } +[Get started](setup.md){ .md-button .md-button--primary .index-callout } [Demo](https://demo.paperless-ngx.com){ .md-button .md-button--secondary target=\_blank } @@ -15,103 +15,161 @@ physical documents into a searchable online archive so you can keep, well, _less
-## Why This Exists +## Features -Paper is a nightmare. Environmental issues aside, there's no excuse for -it in the 21st century. It takes up space, collects dust, doesn't -support any form of a search feature, indexing is tedious, it's heavy -and prone to damage & loss. +- **Organize and index** your scanned documents with tags, correspondents, types, and more. +- Performs **OCR** on your documents, adding searchable and selectable text, even to documents scanned with only images. +- Utilizes the open-source Tesseract engine to recognize more than 100 languages. +- Documents are saved as PDF/A format which is designed for long term storage, alongside the unaltered originals. +- Uses machine-learning to automatically add tags, correspondents and document types to your documents. +- Supports PDF documents, images, plain text files, Office documents (Word, Excel, Powerpoint, and LibreOffice equivalents)[^1] and more. +- Paperless stores your documents plain on disk. Filenames and folders are managed by paperless and their format can be configured freely with different configurations assigned to different documents. +- **Beautiful, modern web application** that features: + - Customizable dashboard with statistics. + - Filtering by tags, correspondents, types, and more. + - Bulk editing of tags, correspondents, types and more. + - Drag-and-drop uploading of documents throughout the app. + - Customizable views can be saved and displayed on the dashboard and / or sidebar. + - Support for custom fields of various data types. + - Shareable public links with optional expiration. +- **Full text search** helps you find what you need: + - Auto completion suggests relevant words from your documents. + - Results are sorted by relevance to your search query. + - Highlighting shows you which parts of the document matched the query. + - Searching for similar documents ("More like this") +- **Email processing**[^1]: import documents from your email accounts: + - Configure multiple accounts and rules for each account. + - After processing, paperless can perform actions on the messages such as marking as read, deleting and more. +- A built-in robust **multi-user permissions** system that supports 'global' permissions as well as per document or object. +- A powerful templating system that gives you more control over the consumption pipeline. +- **Optimized** for multi core systems: Paperless-ngx consumes multiple documents in parallel. +- The integrated sanity checker makes sure that your document archive is in good health. -This software is designed to make "going paperless" easier. No more worrying -about finding stuff again, feed documents right from the post box into -the scanner and then shred them. Perhaps you might find it useful too. +[^1]: Office document and email consumption support is optional and provided by Apache Tika (see [configuration](https://docs.paperless-ngx.com/configuration/#tika)) ## Paperless, a history -Paperless is a simple Django application running in two parts: a -_Consumer_ (the thing that does the indexing) and the _Web server_ (the -part that lets you search & download already-indexed documents). If you -want to learn more about its functions keep on reading after the -installation section. +Paperless-ngx is the official successor to the original [Paperless](https://github.com/the-paperless-project/paperless) & [Paperless-ng](https://github.com/jonaswinkler/paperless-ng) projects and is designed to distribute the responsibility of advancing and supporting the project among a team of people. [Consider joining us!](https://github.com/paperless-ngx/paperless-ngx#community-support) -Paperless-ngx is a document management system that transforms your -physical documents into a searchable online archive so you can keep, -well, _less paper_. - -Paperless-ngx forked from paperless-ng to continue the great work and -distribute responsibility of supporting and advancing the project among -a team of people. - -NG stands for both Angular (the framework used for the Frontend) and -next-gen. Publishing this project under a different name also avoids -confusion between paperless and paperless-ngx. - -If you want to learn about what's different in paperless-ngx from -Paperless, check out these resources in the documentation: - -- [Some screenshots](#screenshots) of the new UI are available. -- Read [this section](/advanced_usage#automatic-matching) if you want to learn about how paperless automates all - tagging using machine learning. -- Paperless now comes with a [proper email consumer](/usage#usage-email) that's fully tested and production ready. -- Paperless creates searchable PDF/A documents from whatever you put into the consumption directory. This means - that you can select text in image-only documents coming from your scanner. -- See [this note](/administration#encryption) about GnuPG encryption in paperless-ngx. -- Paperless is now integrated with a - [task processing queue](/setup#task_processor) that tells you at a glance when and why something is not working. -- The [changelog](/changelog) contains a detailed list of all changes in paperless-ngx. +Further discussion of the transition between these projects can be found at +[ng#1599](https://github.com/jonaswinkler/paperless-ng/issues/1599) and [ng#1632](https://github.com/jonaswinkler/paperless-ng/issues/1632). ## Screenshots -This is what Paperless-ngx looks like. +Paperless-ngx aims to be as nice to use as it is useful. Check out some screenshots below. -The dashboard shows customizable views on your document and allows -document uploads: +
+ ![image](assets/screenshots/dashboard.png) +
+
+ The dashboard shows saved views which can be sorted. Documents can be uploaded with the button or dropped anywhere in the application. +
+
-[![image](assets/screenshots/dashboard.png)](assets/screenshots/dashboard.png) +The document list provides three different styles to browse your documents. -The document list provides three different styles to scroll through your -documents: +![image](assets/screenshots/documents-table.png){: style="width:32%"} +![image](assets/screenshots/documents-smallcards.png){: style="width:32%"} +![image](assets/screenshots/documents-largecards.png){: style="width:32%"} -[![image](assets/screenshots/documents-table.png)](assets/screenshots/documents-table.png) +
-[![image](assets/screenshots/documents-smallcards.png)](assets/screenshots/documents-smallcards.png) +
+ Use the 'slim' sidebar to focus on your docs and minimize the UI. +
+
+ ![image](assets/screenshots/documents-smallcards-slimsidebar.png) +
+
-[![image](assets/screenshots/documents-largecards.png)](assets/screenshots/documents-largecards.png) +Of course, Paperless-ngx also supports dark mode: -Paperless-ngx also supports dark mode: +![image](assets/screenshots/documents-smallcards-dark.png) -[![image](assets/screenshots/documents-smallcards-dark.png)](assets/screenshots/documents-smallcards-dark.png) +
-Extensive filtering mechanisms: +
+ Quickly find documents with extensive filtering mechanisms. +
+
+ ![image](assets/screenshots/documents-filter.png) +
+
+
+ And perform bulk edit operations to set tags, correspondents, etc. as well as permissions. +
+
+ ![image](assets/screenshots/bulk-edit.png) +
+
-[![image](assets/screenshots/documents-filter.png)](assets/screenshots/documents-filter.png) +Side-by-side editing of documents. -Bulk editing of document tags, correspondents, etc.: +![image](assets/screenshots/editing.png) -[![image](assets/screenshots/bulk-edit.png)](assets/screenshots/bulk-edit.png) +
+ Support for custom fields. -Side-by-side editing of documents: +![image](assets/screenshots/custom_field1.png) -[![image](assets/screenshots/editing.png)](assets/screenshots/editing.png) +
+
+ ![image](assets/screenshots/custom_field2.png) +
+
-Tag editing. This looks about the same for correspondents and document -types. +
+ A robust permissions system with support for 'global' and document / object permissions. -[![image](assets/screenshots/new-tag.png)](assets/screenshots/new-tag.png) +![image](assets/screenshots/permissions_global.png) -Searching provides auto complete and highlights the results. +
+
+ ![image](assets/screenshots/permissions_document.png) +
+
-[![image](assets/screenshots/search-preview.png)](assets/screenshots/search-preview.png) +
+ Searching provides auto complete and highlights the results. -[![image](assets/screenshots/search-results.png)](assets/screenshots/search-results.png) +![image](assets/screenshots/search-preview.png) -Fancy mail filters! +
+
+ ![image](assets/screenshots/search-results.png) +
+
-[![image](assets/screenshots/mail-rules-edited.png)](assets/screenshots/mail-rules-edited.png) +Tag, correspondent, document type and storage path editing. + +![image](assets/screenshots/new-tag.png){: style="width:21%; float: left"} +![image](assets/screenshots/new-correspondent.png){: style="width:21%; margin-left: 4%; float: left"} +![image](assets/screenshots/new-document_type.png){: style="width:21%; margin-left: 4%; float: left"} +![image](assets/screenshots/new-storage_path.png){: style="width:21%; margin-left: 4%; float: left"} + +
+ +
+ Mail rules support various filters and actions for incoming e-mails. + +![image](assets/screenshots/mail-rules-edited.png) + +
+
+ Consumption templates provide finer control over the document pipeline. + +![image](assets/screenshots/consumption_template.png) + +
+
+ +
Mobile devices are supported. -[![image](assets/screenshots/mobile.png)](assets/screenshots/mobile.png) +![image](assets/screenshots/mobile1.png){: style="width:32%"} +![image](assets/screenshots/mobile2.png){: style="width:32%"} +![image](assets/screenshots/mobile3.png){: style="width:32%"} ## Support @@ -131,7 +189,7 @@ People interested in continuing the work on paperless-ngx are encouraged to reac ### Translation -Paperless-ngx is available in many languages that are coordinated on [Crowdin](https://crwd.in/paperless-ngx). If you want to help out by translating paperless-ngx into your language, please head over to https://crwd.in/paperless-ngx, and thank you! +Paperless-ngx is available in many languages that are coordinated on [Crowdin](https://crwd.in/paperless-ngx). If you want to help out by translating paperless-ngx into your language, please head over to the [Paperless-ngx project at Crowdin](https://crwd.in/paperless-ngx), and thank you! ## Scanners & Software diff --git a/docs/setup.md b/docs/setup.md index 8021e6339..4b1e555e9 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -25,12 +25,15 @@ necessary configuration files, pull the docker image, start paperless and create your user account. This script essentially performs all the steps described in [Docker setup](#docker_hub) automatically. -1. Make sure that docker and docker-compose are installed. +1. Make sure that Docker and Docker Compose are installed. + + !!! tip + See the Docker installation instructions at https://docs.docker.com/engine/install/ 2. Download and run the installation script: ```shell-session - $ bash -c "$(curl -L https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh)" + $ bash -c "$(curl --location --silent --show-error https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh)" ``` !!! note @@ -62,19 +65,19 @@ steps described in [Docker setup](#docker_hub) automatically. For new installations, it is recommended to use PostgreSQL as the database backend. -3. Install [Docker](https://www.docker.com/) and - [docker-compose](https://docs.docker.com/compose/install/). +3. Install [Docker](https://docs.docker.com/engine/install/) and + [Docker Compose](https://docs.docker.com/compose/install/). !!! warning If you want to use the included `docker-compose.*.yml` file, you - need to have at least Docker version **17.09.0** and docker-compose - version **1.17.0**. To check do: `docker-compose -v` or `docker -v` + need to have at least Docker version **17.09.0** and Docker Compose + version **v2**. To check do: `docker compose -v` or `docker -v` See the [Docker installation guide](https://docs.docker.com/engine/install/) on how to install the current version of Docker for your operating system or Linux distribution of - choice. To get the latest version of docker-compose, follow the - [docker-compose installation guide](https://docs.docker.com/compose/install/linux/) if your package repository + choice. To get the latest version of Docker Compose, follow the + [Docker Compose installation guide](https://docs.docker.com/compose/install/linux/) if your package repository doesn't include it. 4. Modify `docker-compose.yml` to your preferences. You may want to @@ -124,7 +127,7 @@ steps described in [Docker setup](#docker_hub) automatically. user in the container. This value (`user_id` below), should be the same id that `USERMAP_UID` and `USERMAP_GID` are set to in the next step. See `USERMAP_UID` and `USERMAP_GID` - [here](/configuration#docker). + [here](configuration.md#docker). Your entry for Paperless should contain something like: @@ -148,12 +151,12 @@ steps described in [Docker setup](#docker_hub) automatically. !!! note You can copy any setting from the file `paperless.conf.example` and - paste it here. Have a look at [configuration](/configuration) to see what's available. + paste it here. Have a look at [configuration](configuration.md) to see what's available. !!! note You can utilize Docker secrets for configuration settings by - appending `_FILE` to configuration values. For example [`PAPERLESS_DBUSER`](/configuration#PAPERLESS_DBUSER) + appending `_FILE` to configuration values. For example [`PAPERLESS_DBUSER`](configuration.md#PAPERLESS_DBUSER) can be set using `PAPERLESS_DBUSER_FILE=/var/run/secrets/password.txt`. !!! warning @@ -162,16 +165,16 @@ steps described in [Docker setup](#docker_hub) automatically. system notifications with `inotify`. When storing the consumption directory on such a file system, paperless will not pick up new files with the default configuration. You will need to use - [`PAPERLESS_CONSUMER_POLLING`](/configuration#PAPERLESS_CONSUMER_POLLING), which will disable inotify. See - [here](/configuration#polling). + [`PAPERLESS_CONSUMER_POLLING`](configuration.md#PAPERLESS_CONSUMER_POLLING), which will disable inotify. See + [here](configuration.md#polling). -6. Run `docker-compose pull`. This will pull the image. +6. Run `docker compose pull`. This will pull the image. 7. To be able to login, you will need a super user. To create it, execute the following command: ```shell-session - $ docker-compose run --rm webserver createsuperuser + $ docker compose run --rm webserver createsuperuser ``` or using docker exec from within the container: @@ -183,7 +186,7 @@ steps described in [Docker setup](#docker_hub) automatically. This will prompt you to set a username, an optional e-mail address and finally a password (at least 8 characters). -8. Run `docker-compose up -d`. This will create and start the necessary containers. +8. Run `docker compose up -d`. This will create and start the necessary containers. 9. The default `docker-compose.yml` exports the webserver on your local port @@ -209,39 +212,27 @@ steps described in [Docker setup](#docker_hub) automatically. root as well. 3. In the `docker-compose.yml` file, find the line that instructs - docker-compose to pull the paperless image from Docker Hub: + Docker Compose to pull the paperless image from Docker Hub: ```yaml webserver: image: ghcr.io/paperless-ngx/paperless-ngx:latest ``` - and replace it with a line that instructs docker-compose to build + and replace it with a line that instructs Docker Compose to build the image from the current working directory instead: ```yaml webserver: build: context: . - args: - QPDF_VERSION: x.y.x - PIKEPDF_VERSION: x.y.z - PSYCOPG2_VERSION: x.y.z - JBIG2ENC_VERSION: 0.29 ``` - !!! note - - You should match the build argument versions to the version for the - release you have checked out. These are pre-built images with - certain, more updated software. If you want to build these images - your self, that is possible, but beyond the scope of these steps. - 4. Follow steps 3 to 8 of [Docker Setup](#docker_hub). When asked to run - `docker-compose pull` to pull the image, do + `docker compose pull` to pull the image, do ```shell-session - $ docker-compose build + $ docker compose build ``` instead to build the image. @@ -255,7 +246,7 @@ supported. 1. Install dependencies. Paperless requires the following packages. - - `python3` 3.8, 3.9 + - `python3` - 3.9 - 3.11 are supported - `python3-pip` - `python3-dev` - `default-libmysqlclient-dev` for MariaDB @@ -342,41 +333,41 @@ supported. home folder of the user you created before (`/opt/paperless`). Optional: If you cloned the git repo, you will have to - compile the frontend yourself, see [here](/development#front-end-development) + compile the frontend yourself, see [here](development.md#front-end-development) and use the `build` step, not `serve`. -6. Configure paperless. See [configuration](/configuration) for details. +6. Configure paperless. See [configuration](configuration.md) for details. Edit the included `paperless.conf` and adjust the settings to your needs. Required settings for getting paperless running are: - - [`PAPERLESS_REDIS`](/configuration#PAPERLESS_REDIS) should point to your redis server, such as + - [`PAPERLESS_REDIS`](configuration.md#PAPERLESS_REDIS) should point to your redis server, such as . - - [`PAPERLESS_DBENGINE`](/configuration#PAPERLESS_DBENGINE) optional, and should be one of `postgres`, + - [`PAPERLESS_DBENGINE`](configuration.md#PAPERLESS_DBENGINE) optional, and should be one of `postgres`, `mariadb`, or `sqlite` - - [`PAPERLESS_DBHOST`](/configuration#PAPERLESS_DBHOST) should be the hostname on which your + - [`PAPERLESS_DBHOST`](configuration.md#PAPERLESS_DBHOST) should be the hostname on which your PostgreSQL server is running. Do not configure this to use SQLite instead. Also configure port, database name, user and password as necessary. - - [`PAPERLESS_CONSUMPTION_DIR`](/configuration#PAPERLESS_CONSUMPTION_DIR) should point to a folder which + - [`PAPERLESS_CONSUMPTION_DIR`](configuration.md#PAPERLESS_CONSUMPTION_DIR) should point to a folder which paperless should watch for documents. You might want to have - this somewhere else. Likewise, [`PAPERLESS_DATA_DIR`](/configuration#PAPERLESS_DATA_DIR) and - [`PAPERLESS_MEDIA_ROOT`](/configuration#PAPERLESS_MEDIA_ROOT) define where paperless stores its data. + this somewhere else. Likewise, [`PAPERLESS_DATA_DIR`](configuration.md#PAPERLESS_DATA_DIR) and + [`PAPERLESS_MEDIA_ROOT`](configuration.md#PAPERLESS_MEDIA_ROOT) define where paperless stores its data. If you like, you can point both to the same directory. - - [`PAPERLESS_SECRET_KEY`](/configuration#PAPERLESS_SECRET_KEY) should be a random sequence of + - [`PAPERLESS_SECRET_KEY`](configuration.md#PAPERLESS_SECRET_KEY) should be a random sequence of characters. It's used for authentication. Failure to do so allows third parties to forge authentication credentials. - - [`PAPERLESS_URL`](/configuration#PAPERLESS_URL) if you are behind a reverse proxy. This should + - [`PAPERLESS_URL`](configuration.md#PAPERLESS_URL) if you are behind a reverse proxy. This should point to your domain. Please see - [configuration](/configuration) for more + [configuration](configuration.md) for more information. Many more adjustments can be made to paperless, especially the OCR part. The following options are recommended for everyone: - - Set [`PAPERLESS_OCR_LANGUAGE`](/configuration#PAPERLESS_OCR_LANGUAGE) to the language most of your + - Set [`PAPERLESS_OCR_LANGUAGE`](configuration.md#PAPERLESS_OCR_LANGUAGE) to the language most of your documents are written in. - - Set [`PAPERLESS_TIME_ZONE`](/configuration#PAPERLESS_TIME_ZONE) to your local time zone. + - Set [`PAPERLESS_TIME_ZONE`](configuration.md#PAPERLESS_TIME_ZONE) to your local time zone. !!! warning @@ -522,7 +513,7 @@ supported. not available for most distributions. 15. Optional: If using the NLTK machine learning processing (see - [`PAPERLESS_ENABLE_NLTK`](/configuration#PAPERLESS_ENABLE_NLTK) for details), + [`PAPERLESS_ENABLE_NLTK`](configuration.md#PAPERLESS_ENABLE_NLTK) for details), download the NLTK data for the Snowball Stemmer, Stopwords and Punkt tokenizer to your `PAPERLESS_DATA_DIR/nltk`. Refer to the [NLTK @@ -553,7 +544,7 @@ to image: ghcr.io/paperless-ngx/paperless-ngx:latest ``` -and then run `docker-compose up -d` which will pull the new image +and then run `docker compose up -d` which will pull the new image recreate the container. That's it! Users who installed with the bare-metal route should also update their @@ -571,7 +562,7 @@ your setup depending on how you installed paperless. This setup describes how to update an existing paperless Docker installation. The important things to keep in mind are as follows: -- Read the [changelog](/changelog) and +- Read the [changelog](changelog.md) and take note of breaking changes. - You should decide if you want to stick with SQLite or want to migrate your database to PostgreSQL. See [documentation](#sqlite_to_psql) @@ -582,7 +573,7 @@ installation. The important things to keep in mind are as follows: - The task scheduler of paperless, which is used to execute periodic tasks such as email checking and maintenance, requires a [redis](https://redis.io/) message broker instance. The - docker-compose route takes care of that. + Docker Compose route takes care of that. - The layout of the folder structure for your documents and data remains the same, so you can just plug your old docker volumes into paperless-ngx and expect it to find everything where it should be. @@ -593,7 +584,7 @@ Migration to paperless-ngx is then performed in a few simple steps: ```bash $ cd /path/to/current/paperless - $ docker-compose down + $ docker compose down ``` 2. Do a backup for two purposes: If something goes wrong, you still @@ -601,7 +592,7 @@ Migration to paperless-ngx is then performed in a few simple steps: switch back to paperless. 3. Download the latest release of paperless-ngx. You can either go with - the docker-compose files from + the Docker Compose files from [here](https://github.com/paperless-ngx/paperless-ngx/tree/main/docker/compose) or clone the repository to build the image yourself (see [above](#docker_build)). You can @@ -631,14 +622,14 @@ Migration to paperless-ngx is then performed in a few simple steps: See [Docker setup](#docker_hub) details on which edits are advised. -6. [Update paperless.](/administration#updating) +6. [Update paperless.](administration.md#updating) 7. In order to find your existing documents with the new search feature, you need to invoke a one-time operation that will create the search index: ```shell-session - $ docker-compose run --rm webserver document_index reindex + $ docker compose run --rm webserver document_index reindex ``` This will migrate your database and create the search index. After @@ -647,7 +638,7 @@ Migration to paperless-ngx is then performed in a few simple steps: 8. Start paperless-ngx. ```bash - $ docker-compose up -d + $ docker compose up -d ``` This will run paperless in the background and automatically start it @@ -670,28 +661,28 @@ commands as well. 1. Stop and remove the paperless container 2. If using an external database, stop the container 3. Update Redis configuration - a) If `REDIS_URL` is already set, change it to [`PAPERLESS_REDIS`](/configuration#PAPERLESS_REDIS) + a) If `REDIS_URL` is already set, change it to [`PAPERLESS_REDIS`](configuration.md#PAPERLESS_REDIS) and continue to step 4. b) Otherwise, in the `docker-compose.yml` add a new service for Redis, following [the example compose files](https://github.com/paperless-ngx/paperless-ngx/tree/main/docker/compose) - c) Set the environment variable [`PAPERLESS_REDIS`](/configuration#PAPERLESS_REDIS) so it points to + c) Set the environment variable [`PAPERLESS_REDIS`](configuration.md#PAPERLESS_REDIS) so it points to the new Redis container 4. Update user mapping a) If set, change the environment variable `PUID` to `USERMAP_UID` b) If set, change the environment variable `PGID` to `USERMAP_GID` 5. Update configuration paths - a) Set the environment variable [`PAPERLESS_DATA_DIR`](/configuration#PAPERLESS_DATA_DIR) to `/config` + a) Set the environment variable [`PAPERLESS_DATA_DIR`](configuration.md#PAPERLESS_DATA_DIR) to `/config` 6. Update media paths - a) Set the environment variable [`PAPERLESS_MEDIA_ROOT`](/configuration#PAPERLESS_MEDIA_ROOT) to + a) Set the environment variable [`PAPERLESS_MEDIA_ROOT`](configuration.md#PAPERLESS_MEDIA_ROOT) to `/data/media` 7. Update timezone - a) Set the environment variable [`PAPERLESS_TIME_ZONE`](/configuration#PAPERLESS_TIME_ZONE) to the same + a) Set the environment variable [`PAPERLESS_TIME_ZONE`](configuration.md#PAPERLESS_TIME_ZONE) to the same value as `TZ` 8. Modify the `image:` to point to `ghcr.io/paperless-ngx/paperless-ngx:latest` or a specific version if preferred. -9. Start the containers as before, using `docker-compose`. +9. Start the containers as before, using `docker compose`. ## Moving data from SQLite to PostgreSQL or MySQL/MariaDB {#sqlite_to_psql} @@ -718,7 +709,7 @@ below use PostgreSQL, but are applicable to MySQL/MariaDB with the !!! warning MySQL is case insensitive by default, treating values like "Name" and - "NAME" as identical. See [MySQL caveats](/advanced_usage#mysql-caveats) for details. + "NAME" as identical. See [MySQL caveats](advanced_usage.md#mysql-caveats) for details. !!! warning @@ -739,7 +730,7 @@ below use PostgreSQL, but are applicable to MySQL/MariaDB with the file to `docker-compose.yml`. Remember to adjust the consumption directory, if necessary. b) Without docker, configure the database in your `paperless.conf` - file. See [configuration](/configuration) for + file. See [configuration](configuration.md) for details. 3. Open a shell and initialize the database: @@ -749,7 +740,7 @@ below use PostgreSQL, but are applicable to MySQL/MariaDB with the ``` shell-session $ cd /path/to/paperless - $ docker-compose run --rm webserver /bin/bash + $ docker compose run --rm webserver /bin/bash ``` This will launch the container and initialize the PostgreSQL @@ -802,7 +793,7 @@ Execute this: ```shell-session $ cd /path/to/paperless -$ docker-compose run --rm webserver migrate documents 0023 +$ docker compose run --rm webserver migrate documents 0023 ``` Or without docker: @@ -823,36 +814,36 @@ the Pi and configuring some options in paperless can help improve performance immensely: - Stick with SQLite to save some resources. -- Consider setting [`PAPERLESS_OCR_PAGES`](/configuration#PAPERLESS_OCR_PAGES) to 1, so that paperless will +- Consider setting [`PAPERLESS_OCR_PAGES`](configuration.md#PAPERLESS_OCR_PAGES) to 1, so that paperless will only OCR the first page of your documents. In most cases, this page contains enough information to be able to find it. -- [`PAPERLESS_TASK_WORKERS`](/configuration#PAPERLESS_TASK_WORKERS) and [`PAPERLESS_THREADS_PER_WORKER`](/configuration#PAPERLESS_THREADS_PER_WORKER) are +- [`PAPERLESS_TASK_WORKERS`](configuration.md#PAPERLESS_TASK_WORKERS) and [`PAPERLESS_THREADS_PER_WORKER`](configuration.md#PAPERLESS_THREADS_PER_WORKER) are configured to use all cores. The Raspberry Pi models 3 and up have 4 cores, meaning that paperless will use 2 workers and 2 threads per worker. This may result in sluggish response times during consumption, so you might want to lower these settings (example: 2 workers and 1 thread to always have some computing power left for other tasks). -- Keep [`PAPERLESS_OCR_MODE`](/configuration#PAPERLESS_OCR_MODE) at its default value `skip` and consider +- Keep [`PAPERLESS_OCR_MODE`](configuration.md#PAPERLESS_OCR_MODE) at its default value `skip` and consider OCR'ing your documents before feeding them into paperless. Some scanners are able to do this! -- Set [`PAPERLESS_OCR_SKIP_ARCHIVE_FILE`](/configuration#PAPERLESS_OCR_SKIP_ARCHIVE_FILE) to `with_text` to skip archive +- Set [`PAPERLESS_OCR_SKIP_ARCHIVE_FILE`](configuration.md#PAPERLESS_OCR_SKIP_ARCHIVE_FILE) to `with_text` to skip archive file generation for already ocr'ed documents, or `always` to skip it for all documents. - If you want to perform OCR on the device, consider using `PAPERLESS_OCR_CLEAN=none`. This will speed up OCR times and use less memory at the expense of slightly worse OCR results. -- If using docker, consider setting [`PAPERLESS_WEBSERVER_WORKERS`](/configuration#PAPERLESS_WEBSERVER_WORKERS) to 1. This will save some memory. -- Consider setting [`PAPERLESS_ENABLE_NLTK`](/configuration#PAPERLESS_ENABLE_NLTK) to false, to disable the +- If using docker, consider setting [`PAPERLESS_WEBSERVER_WORKERS`](configuration.md#PAPERLESS_WEBSERVER_WORKERS) to 1. This will save some memory. +- Consider setting [`PAPERLESS_ENABLE_NLTK`](configuration.md#PAPERLESS_ENABLE_NLTK) to false, to disable the more advanced language processing, which can take more memory and processing time. -For details, refer to [configuration](/configuration). +For details, refer to [configuration](configuration.md). !!! note Updating the - [automatic matching algorithm](/advanced_usage#automatic-matching) takes quite a bit of time. However, the update mechanism + [automatic matching algorithm](advanced_usage.md#automatic-matching) takes quite a bit of time. However, the update mechanism checks if your data has changed before doing the heavy lifting. If you experience the algorithm taking too much cpu time, consider changing the schedule in the admin interface to daily. You can also manually invoke diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index bf65f1e7f..170e6c027 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -6,7 +6,7 @@ Check for the following issues: - Ensure that the directory you're putting your documents in is the folder paperless is watching. With docker, this setting is performed - in the `docker-compose.yml` file. Without docker, look at the + in the `docker-compose.yml` file. Without Docker, look at the `CONSUMPTION_DIR` setting. Don't adjust this setting if you're using docker. @@ -46,7 +46,7 @@ run: If you notice that the consumer will only pickup files in the consumption directory at startup, but won't find any other files added later, you will need to enable filesystem polling with the configuration -option [`PAPERLESS_CONSUMER_POLLING`](/configuration#PAPERLESS_CONSUMER_POLLING). +option [`PAPERLESS_CONSUMER_POLLING`](configuration.md#PAPERLESS_CONSUMER_POLLING). This will disable listening to filesystem changes with inotify and paperless will manually check the consumption directory for changes @@ -120,7 +120,7 @@ Gotenberg raises this error. You can increase the timeout by configuring a command flag for Gotenberg (see also [here](https://gotenberg.dev/docs/modules/api#properties)). If -using docker-compose, this is achieved by the following configuration +using Docker Compose, this is achieved by the following configuration change in the `docker-compose.yml` file: ```yaml @@ -144,7 +144,7 @@ The following error occured while consuming document.pdf: [Errno 13] Permission This happens when paperless does not have permission to delete files inside the consumption directory. Ensure that `USERMAP_UID` and `USERMAP_GID` are set to the user id and group id you use on the host -operating system, if these are different from `1000`. See [Docker setup](/setup#docker_hub). +operating system, if these are different from `1000`. See [Docker setup](setup.md#docker_hub). Also ensure that you are able to read and write to the consumption directory on the host. @@ -264,8 +264,8 @@ This probably indicates paperless tried to consume the same file twice. This can happen for a number of reasons, depending on how documents are placed into the consume folder. If paperless is using inotify (the default) to check for documents, try adjusting the -[inotify configuration](/configuration#inotify). If polling is enabled, try adjusting the -[polling configuration](/configuration#polling). +[inotify configuration](configuration.md#inotify). If polling is enabled, try adjusting the +[polling configuration](configuration.md#polling). ## Consumer fails waiting for file to remain unmodified. @@ -277,7 +277,7 @@ You might find messages like these in your log files: This indicates paperless timed out while waiting for the file to be completely written to the consume folder. Adjusting -[polling configuration](/configuration#polling) values should resolve the issue. +[polling configuration](configuration.md#polling) values should resolve the issue. !!! note @@ -296,8 +296,8 @@ This indicates paperless was unable to open the file, as the OS reported the file as still being in use. To prevent a crash, paperless did not try to consume the file. If paperless is using inotify (the default) to check for documents, try adjusting the -[inotify configuration](/configuration#inotify). If polling is enabled, try adjusting the -[polling configuration](/configuration#polling). +[inotify configuration](configuration.md#inotify). If polling is enabled, try adjusting the +[polling configuration](configuration.md#polling). !!! note @@ -319,7 +319,7 @@ many workers attempting to access the database simultaneously. Consider changing to the PostgreSQL database if you will be processing many documents at once often. Otherwise, try tweaking the -[`PAPERLESS_DB_TIMEOUT`](/configuration#PAPERLESS_DB_TIMEOUT) setting to allow more time for the database to +[`PAPERLESS_DB_TIMEOUT`](configuration.md#PAPERLESS_DB_TIMEOUT) setting to allow more time for the database to unlock. This may have minor performance implications. ## gunicorn fails to start with "is not a valid port number" @@ -329,7 +329,7 @@ environment variable named `${serviceName}_PORT`. This is the same environment variable which is used by Paperless to optionally change the port gunicorn listens on. -To fix this, set [`PAPERLESS_PORT`](/configuration#PAPERLESS_PORT) again to your desired port, or the +To fix this, set [`PAPERLESS_PORT`](configuration.md#PAPERLESS_PORT) again to your desired port, or the default of 8000. ## Database Warns about unique constraint "documents_tag_name_uniq @@ -352,3 +352,7 @@ This is intentional as the output archive file may differ in unexpected or undes ways from the original. As the logs indicate, if you encounter this error you can set `PAPERLESS_OCR_USER_ARGS: '{"continue_on_soft_render_error": true}'` to try to 'force' processing documents with this issue. + +## Platform-Specific Deployment Troubleshooting + +A user-maintained wiki page is available to help troubleshoot issues that may arise when trying to deploy Paperless-ngx on specific platforms, for example SELinux. Please see [the wiki](https://github.com/paperless-ngx/paperless-ngx/wiki/Platform%E2%80%90Specific-Troubleshooting). diff --git a/docs/usage.md b/docs/usage.md index 3121d35b6..a3e5b3665 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -62,7 +62,7 @@ following operations on your documents: paperless to create archived versions for digital documents, you can configure that by configuring `PAPERLESS_OCR_SKIP_ARCHIVE_FILE=with_text`. Please read the - [relevant section in the documentation](/configuration#ocr). + [relevant section in the documentation](configuration.md#ocr). !!! note @@ -103,25 +103,14 @@ Typically, you're looking at an FTP server like ### Web UI Upload -The dashboard has a file drop field to upload documents to paperless. -Simply drag a file onto this field or select a file with the file -dialog. Multiple files are supported. - -You can also upload documents on any other page of the web UI by -dragging-and-dropping files into your browser window. +The dashboard has a button to upload documents to paperless or you +can simply drag a file anywhere into the app to initiate the consumption +process. ### Mobile upload {#usage-mobile_upload} -The mobile app over at [https://github.com/qcasey/paperless_share](https://github.com/qcasey/paperless_share) -allows Android users to share any documents with paperless. This can be -combined with any of the mobile scanning apps out there, such as Office -Lens. - -Furthermore, there is the [Paperless -App](https://github.com/bauerj/paperless_app) as well, which not only -has document upload, but also document browsing and download features. - -Another option is [Paperless Mobile](https://github.com/astubenbord/paperless-mobile), an Android app that supports document upload, scanning, management of labels and more. +Please see [the wiki](https://github.com/paperless-ngx/paperless-ngx/wiki/Affiliated-Projects) for a user-maintained list of affiliated projects and +software (e.g. for mobile devices) that is compatible with Paperless-ngx. ### IMAP (Email) {#usage-email} @@ -145,9 +134,9 @@ These rules perform the following: 5. If documents were consumed from a mail, the rule action is performed on that mail. -Paperless will completely ignore mails that do not match your filters. -It will also only perform the action on mails that it has consumed -documents from. +Paperless will check all emails only once and completely ignore messages +that do not match your filters. It will also only perform the rule action +on e-mails that it has consumed documents from. The actions all ensure that the same mail is not consumed twice by different means. These are as follows: @@ -208,11 +197,11 @@ different means. These are as follows: them further. Paperless is set up to check your mails every 10 minutes. This can be -configured via [`PAPERLESS_EMAIL_TASK_CRON`](/configuration#PAPERLESS_EMAIL_TASK_CRON) +configured via [`PAPERLESS_EMAIL_TASK_CRON`](configuration.md#PAPERLESS_EMAIL_TASK_CRON) ### REST API -You can also submit a document using the REST API, see [POSTing documents](/api#file-uploads) +You can also submit a document using the REST API, see [POSTing documents](api.md#file-uploads) for details. ## Permissions @@ -247,6 +236,13 @@ do not have an owner set. Note that superusers have access to all objects. +### Default permissions + +Default permissions for documents can be set using consumption templates. + +For objects created via the web UI (tags, doc types, etc.) the default is to set the current user +as owner and no extra permissions, but you explicitly set these under Settings > Permissions. + ### Users and Groups Paperless-ngx versions after 1.14.0 allow creating and editing users and groups via the 'frontend' UI. @@ -254,6 +250,112 @@ These can be found under Settings > Users & Groups, assuming the user has access as a member of a group those permissions will be inherited and this is reflected in the UI. Explicit permissions can be granted to limit access to certain parts of the UI (and corresponding API endpoints). +### Password reset + +In order to enable the password reset feature you will need to setup an SMTP backend, see +[`PAPERLESS_EMAIL_HOST`](configuration.md#PAPERLESS_EMAIL_HOST) + +## Consumption templates + +Consumption templates were introduced in v2.0 and allow for finer control over what metadata (tags, doc +types) and permissions (owner, privileges) are assigned to documents during consumption. In general, +templates are applied sequentially (by sort order) but subsequent templates will never override an +assignment from a preceding template. The same is true for mail rules, e.g. if you set the correspondent +in a mail rule any subsequent consumption templates that are applied _will not_ overwrite this. The +exception to this is assignments that can be multiple e.g. tags and permissions, which will be merged. + +Consumption templates allow you to filter by: + +- Source, e.g. documents uploaded via consume folder, API (& the web UI) and mail fetch +- File name, including wildcards e.g. \*.pdf will apply to all pdfs +- File path, including wildcards. Note that enabling `PAPERLESS_CONSUMER_RECURSIVE` would allow, for + example, automatically assigning documents to different owners based on the upload directory. +- Mail rule. Choosing this option will force 'mail fetch' to be the template source. + +!!! note + + You must include a file name filter, a path filter or a mail rule filter. Use * for either to apply + to all files. + +Consumption templates can assign: + +- Title, see [title placeholders](usage.md#title_placeholders) below +- Tags, correspondent, document types +- Document owner +- View and / or edit permissions to users or groups + +### Consumption template permissions + +All users who have application permissions for editing consumption templates can see the same set +of templates. In other words, templates themselves intentionally do not have an owner or permissions. + +Given their potentially far-reaching capabilities, you may want to restrict access to templates. + +Upon migration, existing installs will grant access to consumption templates to users who can add +documents (and superusers who can always access all parts of the app). + +### Title placeholders + +Consumption template titles can include placeholders, _only for items that are assigned within the template_. +This is because at the time of consumption (when the title is to be set), no automatic tags etc. have been +applied. You can use the following placeholders: + +- `{correspondent}`: assigned correspondent name +- `{document_type}`: assigned document type name +- `{owner_username}`: assigned owner username +- `{added}`: added datetime +- `{added_year}`: added year +- `{added_year_short}`: added year +- `{added_month}`: added month +- `{added_month_name}`: added month name +- `{added_month_name_short}`: added month short name +- `{added_day}`: added day + +## Custom Fields {#custom-fields} + +Paperless-ngx supports the use of custom fields for documents as of v2.0, allowing a user +to optionally attach data to documents which does not fit in the existing set of fields +Paperless-ngx provides. + +1. First, create a custom field (under "Manage"), with a given name and data type. This could be something like "Invoice Number" or "Date Paid", with a data type of "Number", "Date", "String", etc. +2. Once created, a field can be used with documents and data stored. To do so, use the "Custom Fields" menu on the document detail page, choose your existing field and click "Add". Once the field is visible in the form you can enter the appropriate + data which will be validated according to the custom field "data type". +3. Fields can be removed by hovering over the field name revealing a "Remove" button. + +!!! important + + Added / removed fields, as well as any data is not saved to the document until you + actually hit the "Save" button, similar to other changes on the document details page. + +!!! note + + Once the data type for a field is set, it cannot be changed. + +Multiple fields may be attached to a document but the same field name cannot be assigned multiple times to the a single document. + +The following custom field types are supported: + +- `Text`: any text +- `Boolean`: true / false (check / unchecked) field +- `Date`: date +- `URL`: a valid url +- `Integer`: integer number e.g. 12 +- `Number`: float number e.g. 12.3456 +- `Monetary`: float number with exactly two decimals, e.g. 12.30 + +## Share Links + +Paperless-ngx added the abiltiy to create shareable links to files in version 2.0. You can find the button for this on the document detail screen. + +- Share links do not require a user to login and thus link directly to a file. +- Links are unique and are of the form `{paperless-url}/share/{randomly-generated-slug}`. +- Links can optionally have an expiration time set. +- After a link expires or is deleted users will be redirected to the regular paperless-ngx login. + +!!! tip + + If your paperless-ngx instance is behind a reverse-proxy you may want to create an exception to bypass any authentication layers that are part of your setup in order to make links truly publicly-accessible. Of course, do so with caution. + ## Best practices {#basic-searching} Paperless offers a couple tools that help you organize your document @@ -462,7 +564,7 @@ Once you have scanned in a document, proceed in paperless as follows. paperless will assign them automatically. After consuming a couple documents, you can even ask paperless to *learn* when to assign tags and correspondents by itself. For details on this feature, see - [advanced matching](/advanced_usage#matching). + [advanced matching](advanced_usage.md#matching). ### Task management diff --git a/install-paperless-ngx.sh b/install-paperless-ngx.sh index 561c4e748..ecb83ae82 100755 --- a/install-paperless-ngx.sh +++ b/install-paperless-ngx.sh @@ -38,7 +38,6 @@ ask_docker_folder() { echo "Invalid folder: $result" fi - done } @@ -57,14 +56,9 @@ if ! command -v docker &> /dev/null ; then exit 1 fi -DOCKER_COMPOSE_CMD="docker-compose" -if ! command -v ${DOCKER_COMPOSE_CMD} ; then - if docker compose version &> /dev/null ; then - DOCKER_COMPOSE_CMD="docker compose" - else - echo "docker-compose executable not found. Is docker-compose installed?" - exit 1 - fi +if ! command -v docker compose &> /dev/null ; then + echo "docker compose executable not found. Is docker compose installed?" + exit 1 fi # Check if user has permissions to run Docker by trying to get the status of Docker (docker status). @@ -321,7 +315,8 @@ fi wget "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/docker-compose.$DOCKER_COMPOSE_VERSION.yml" -O docker-compose.yml wget "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/.env" -O .env -SECRET_KEY=$(tr --delete --complement 'a-zA-Z0-9' < /dev/urandom 2>/dev/null | head --bytes 64) +SECRET_KEY=$(LC_ALL=C tr -dc 'a-zA-Z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' < /dev/urandom | head --bytes 64) + DEFAULT_LANGUAGES=("deu eng fra ita spa") @@ -382,16 +377,16 @@ if [ "$l1" -eq "$l2" ] ; then fi -${DOCKER_COMPOSE_CMD} pull +docker compose pull if [ "$DATABASE_BACKEND" == "postgres" ] || [ "$DATABASE_BACKEND" == "mariadb" ] ; then echo "Starting DB first for initilzation" - ${DOCKER_COMPOSE_CMD} up --detach db + docker compose up --detach db # hopefully enough time for even the slower systems sleep 15 - ${DOCKER_COMPOSE_CMD} stop + docker compose stop fi -${DOCKER_COMPOSE_CMD} run --rm -e DJANGO_SUPERUSER_PASSWORD="$PASSWORD" webserver createsuperuser --noinput --username "$USERNAME" --email "$EMAIL" +docker compose run --rm -e DJANGO_SUPERUSER_PASSWORD="$PASSWORD" webserver createsuperuser --noinput --username "$USERNAME" --email "$EMAIL" -${DOCKER_COMPOSE_CMD} up --detach +docker compose up --detach diff --git a/mkdocs.yml b/mkdocs.yml index 29e997a27..55cd3ca94 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -43,6 +43,7 @@ markdown_extensions: - pymdownx.superfences - pymdownx.inlinehilite - pymdownx.snippets + - footnotes strict: true nav: - index.md @@ -65,3 +66,5 @@ extra: link: https://hub.docker.com/r/paperlessngx/paperless-ngx - icon: material/chat link: https://matrix.to/#/#paperless:matrix.org +plugins: + - glightbox diff --git a/src-ui/.eslintrc.json b/src-ui/.eslintrc.json index b036bf6ad..12b35ce26 100644 --- a/src-ui/.eslintrc.json +++ b/src-ui/.eslintrc.json @@ -24,7 +24,7 @@ "error", { "type": "attribute", - "prefix": "app", + "prefix": "pngx", "style": "camelCase" } ], @@ -32,7 +32,7 @@ "error", { "type": "element", - "prefix": "app", + "prefix": "pngx", "style": "kebab-case" } ] diff --git a/src-ui/angular.json b/src-ui/angular.json index ff3a26a22..1fef2fe7d 100644 --- a/src-ui/angular.json +++ b/src-ui/angular.json @@ -12,23 +12,28 @@ }, "root": "", "sourceRoot": "src", - "prefix": "app", + "prefix": "pngx", "i18n": { "sourceLocale": "en-US", "locales": { "ar-AR": "src/locale/messages.ar_AR.xlf", + "af-ZA": "src/locale/messages.af_ZA.xlf", + "bg-BG": "src/locale/messages.bg_BG.xlf", "be-BY": "src/locale/messages.be_BY.xlf", "ca-ES": "src/locale/messages.ca_ES.xlf", "cs-CZ": "src/locale/messages.cs_CZ.xlf", "da-DK": "src/locale/messages.da_DK.xlf", "de-DE": "src/locale/messages.de_DE.xlf", + "el-GR": "src/locale/messages.el_GR.xlf", "en-GB": "src/locale/messages.en_GB.xlf", "es-ES": "src/locale/messages.es_ES.xlf", "fi-FI": "src/locale/messages.fi_FI.xlf", "fr-FR": "src/locale/messages.fr_FR.xlf", + "hu-HU": "src/locale/messages.hu_HU.xlf", "it-IT": "src/locale/messages.it_IT.xlf", "lb-LU": "src/locale/messages.lb_LU.xlf", "nl-NL": "src/locale/messages.nl_NL.xlf", + "no-NO": "src/locale/messages.no_NO.xlf", "pl-PL": "src/locale/messages.pl_PL.xlf", "pt-BR": "src/locale/messages.pt_BR.xlf", "pt-PT": "src/locale/messages.pt_PT.xlf", diff --git a/src-ui/e2e/settings/requests/api-settings.har b/src-ui/e2e/admin/requests/api-settings.har similarity index 66% rename from src-ui/e2e/settings/requests/api-settings.har rename to src-ui/e2e/admin/requests/api-settings.har index 685e93fbc..2c0ca1e77 100644 --- a/src-ui/e2e/settings/requests/api-settings.har +++ b/src-ui/e2e/admin/requests/api-settings.har @@ -124,7 +124,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true}]}" + "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true}]}" }, "headersSize": -1, "bodySize": -1, diff --git a/src-ui/e2e/settings/settings.spec.ts b/src-ui/e2e/admin/settings.spec.ts similarity index 56% rename from src-ui/e2e/settings/settings.spec.ts rename to src-ui/e2e/admin/settings.spec.ts index 51210acdd..92c6918d9 100644 --- a/src-ui/e2e/settings/settings.spec.ts +++ b/src-ui/e2e/admin/settings.spec.ts @@ -1,24 +1,6 @@ import { test, expect } from '@playwright/test' -const REQUESTS_HAR = 'e2e/settings/requests/api-settings.har' - -test('should post settings on save', async ({ page }) => { - await page.routeFromHAR(REQUESTS_HAR, { notFound: 'fallback' }) - await page.goto('/settings') - await page.getByLabel('Use system setting').click() - await page.getByRole('button', { name: 'Save' }).scrollIntoViewIfNeeded() - const updatePromise = page.waitForRequest((request) => { - const data = request.postDataJSON() - const isValid = data['settings'] != null - return ( - isValid && - request.method() === 'POST' && - request.url().includes('/api/ui_settings/') - ) - }) - await page.getByRole('button', { name: 'Save' }).click() - await updatePromise -}) +const REQUESTS_HAR = 'e2e/admin/requests/api-settings.har' test('should activate / deactivate save button when settings change', async ({ page, @@ -46,10 +28,10 @@ test('should warn on unsaved changes', async ({ page }) => { test('should apply appearance changes when set', async ({ page }) => { await page.routeFromHAR(REQUESTS_HAR, { notFound: 'fallback' }) await page.goto('/settings') - await expect(page.locator('body')).toHaveClass(/color-scheme-system/) + await expect(page.locator('html')).toHaveAttribute('data-bs-theme', /auto/) await page.getByLabel('Use system setting').click() await page.getByLabel('Enable dark mode').click() - await expect(page.locator('body')).toHaveClass(/color-scheme-dark/) + await expect(page.locator('html')).toHaveAttribute('data-bs-theme', /dark/) }) test('should toggle saved view options when set & saved', async ({ page }) => { @@ -72,30 +54,3 @@ test('should toggle saved view options when set & saved', async ({ page }) => { await page.getByRole('button', { name: 'Save' }).click() await updatePromise }) - -test('should support tab direct navigation', async ({ page }) => { - await page.routeFromHAR(REQUESTS_HAR, { notFound: 'fallback' }) - await page.goto('/settings/general') - await expect(page.getByRole('tab', { name: 'General' })).toHaveAttribute( - 'aria-selected', - 'true' - ) - await page.goto('/settings/notifications') - await expect( - page.getByRole('tab', { name: 'Notifications' }) - ).toHaveAttribute('aria-selected', 'true') - await page.goto('/settings/savedviews') - await expect(page.getByRole('tab', { name: 'Saved Views' })).toHaveAttribute( - 'aria-selected', - 'true' - ) - await page.goto('/settings/mail') - await expect(page.getByRole('tab', { name: 'Mail' })).toHaveAttribute( - 'aria-selected', - 'true' - ) - await page.goto('/settings/usersgroups') - await expect( - page.getByRole('tab', { name: 'Users & Groups' }) - ).toHaveAttribute('aria-selected', 'true') -}) diff --git a/src-ui/e2e/dashboard/dashboard.spec.ts b/src-ui/e2e/dashboard/dashboard.spec.ts index ff22c490e..6a06eacee 100644 --- a/src-ui/e2e/dashboard/dashboard.spec.ts +++ b/src-ui/e2e/dashboard/dashboard.spec.ts @@ -10,7 +10,7 @@ test('dashboard inbox link', async ({ page }) => { await page.goto('/dashboard') await page.getByRole('link', { name: 'Documents in inbox' }).click() await expect(page).toHaveURL(/tags__id__all=9/) - await expect(page.locator('app-document-list')).toHaveText(/8 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/8 documents/) }) test('dashboard total documents link', async ({ page }) => { @@ -18,7 +18,7 @@ test('dashboard total documents link', async ({ page }) => { await page.goto('/dashboard') await page.getByRole('link').filter({ hasText: 'Total documents' }).click() await expect(page).toHaveURL(/documents/) - await expect(page.locator('app-document-list')).toHaveText(/61 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/61 documents/) await page.getByRole('button', { name: 'Reset filters' }) }) @@ -26,19 +26,20 @@ test('dashboard saved view show all', async ({ page }) => { await page.routeFromHAR(REQUESTS_HAR3, { notFound: 'fallback' }) await page.goto('/dashboard') await page - .locator('app-widget-frame') + .locator('pngx-widget-frame') .filter({ hasText: 'Inbox' }) .getByRole('link', { name: 'Show all' }) + .first() .click() await expect(page).toHaveURL(/view\/7/) - await expect(page.locator('app-document-list')).toHaveText(/8 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/8 documents/) }) test('dashboard saved view document links', async ({ page }) => { await page.routeFromHAR(REQUESTS_HAR4, { notFound: 'fallback' }) await page.goto('/dashboard') await page - .locator('app-widget-frame') + .locator('pngx-widget-frame') .filter({ hasText: 'Inbox' }) .locator('table') .getByRole('link', { name: /test/ }) diff --git a/src-ui/e2e/dashboard/requests/api-dashboard1.har b/src-ui/e2e/dashboard/requests/api-dashboard1.har index c032ae2a4..3e0829c2f 100644 --- a/src-ui/e2e/dashboard/requests/api-dashboard1.har +++ b/src-ui/e2e/dashboard/requests/api-dashboard1.har @@ -124,7 +124,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true}]}" + "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true}]}" }, "headersSize": -1, "bodySize": -1, diff --git a/src-ui/e2e/dashboard/requests/api-dashboard2.har b/src-ui/e2e/dashboard/requests/api-dashboard2.har index 5e0c1b30e..2436a6272 100644 --- a/src-ui/e2e/dashboard/requests/api-dashboard2.har +++ b/src-ui/e2e/dashboard/requests/api-dashboard2.har @@ -124,7 +124,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true}]}" + "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true}]}" }, "headersSize": -1, "bodySize": -1, diff --git a/src-ui/e2e/dashboard/requests/api-dashboard3.har b/src-ui/e2e/dashboard/requests/api-dashboard3.har index 4418b639a..328c9db6e 100644 --- a/src-ui/e2e/dashboard/requests/api-dashboard3.har +++ b/src-ui/e2e/dashboard/requests/api-dashboard3.har @@ -124,7 +124,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true}]}" + "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true}]}" }, "headersSize": -1, "bodySize": -1, diff --git a/src-ui/e2e/dashboard/requests/api-dashboard4.har b/src-ui/e2e/dashboard/requests/api-dashboard4.har index 28180a780..ca0101d59 100644 --- a/src-ui/e2e/dashboard/requests/api-dashboard4.har +++ b/src-ui/e2e/dashboard/requests/api-dashboard4.har @@ -124,7 +124,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true}]}" + "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true}]}" }, "headersSize": -1, "bodySize": -1, diff --git a/src-ui/e2e/document-detail/document-detail.spec.ts b/src-ui/e2e/document-detail/document-detail.spec.ts index 8248db04b..1bc2b6aa9 100644 --- a/src-ui/e2e/document-detail/document-detail.spec.ts +++ b/src-ui/e2e/document-detail/document-detail.spec.ts @@ -8,7 +8,7 @@ test('should activate / deactivate save button when changes are saved', async ({ }) => { await page.routeFromHAR(REQUESTS_HAR, { notFound: 'fallback' }) await page.goto('/documents/175/') - await page.waitForSelector('app-document-detail app-input-text:first-child') + await page.waitForSelector('pngx-document-detail pngx-input-text:first-child') await expect(page.getByTitle('Storage path', { exact: true })).toHaveText( /\w+/ ) @@ -85,7 +85,7 @@ test('should show a mobile preview', async ({ page }) => { test('should show a list of notes', async ({ page }) => { await page.routeFromHAR(REQUESTS_HAR, { notFound: 'fallback' }) await page.goto('/documents/175/notes') - await expect(page.locator('app-document-notes')).toBeVisible() + await expect(page.locator('pngx-document-notes')).toBeVisible() await expect( await page.getByRole('button', { name: /delete note/i, diff --git a/src-ui/e2e/document-detail/requests/api-document-detail.har b/src-ui/e2e/document-detail/requests/api-document-detail.har index d9abe46a0..c3892a121 100644 --- a/src-ui/e2e/document-detail/requests/api-document-detail.har +++ b/src-ui/e2e/document-detail/requests/api-document-detail.har @@ -124,7 +124,73 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true}]}" + "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true}]}" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { "send": -1, "wait": -1, "receive": 0.951 } + }, + { + "startedDateTime": "2023-05-14T07:03:41.086Z", + "time": 0.951, + "request": { + "method": "GET", + "url": "http://localhost:8000/api/custom_fields/?page=1&page_size=100000", + "httpVersion": "HTTP/1.1", + "cookies": [], + "headers": [ + { "name": "Accept", "value": "application/json; version=3" }, + { "name": "Accept-Encoding", "value": "gzip, deflate, br" }, + { "name": "Accept-Language", "value": "en-US" }, + { "name": "Connection", "value": "keep-alive" }, + { "name": "Host", "value": "localhost:8000" }, + { "name": "Origin", "value": "http://localhost:4200" }, + { "name": "Referer", "value": "http://localhost:4200/" }, + { "name": "Sec-Fetch-Dest", "value": "empty" }, + { "name": "Sec-Fetch-Mode", "value": "cors" }, + { "name": "Sec-Fetch-Site", "value": "same-site" }, + { "name": "User-Agent", "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.5672.53 Safari/537.36" } + ], + "queryString": [ + { + "name": "page", + "value": "1" + }, + { + "name": "page_size", + "value": "100000" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "HTTP/1.1", + "cookies": [], + "headers": [ + { "name": "Access-Control-Allow-Origin", "value": "http://localhost:4200" }, + { "name": "Allow", "value": "GET, POST, HEAD, OPTIONS" }, + { "name": "Content-Encoding", "value": "br" }, + { "name": "Content-Language", "value": "en-us" }, + { "name": "Content-Length", "value": "851" }, + { "name": "Content-Type", "value": "application/json" }, + { "name": "Cross-Origin-Opener-Policy", "value": "same-origin" }, + { "name": "Referrer-Policy", "value": "same-origin" }, + { "name": "Vary", "value": "Accept, Accept-Language, Origin, Cookie, Accept-Encoding" }, + { "name": "X-Api-Version", "value": "3" }, + { "name": "X-Content-Type-Options", "value": "nosniff" }, + { "name": "X-Frame-Options", "value": "ANY" }, + { "name": "X-Version", "value": "1.14.4" } + ], + "content": { + "size": -1, + "mimeType": "application/json", + "text": "{\"count\":0,\"next\":null,\"previous\":null,\"all\":[],\"results\":[]}" }, "headersSize": -1, "bodySize": -1, @@ -505,7 +571,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "{\"id\":175,\"correspondent\":null,\"document_type\":null,\"storage_path\":8,\"title\":\"file-sample_150kBs\",\"content\":\"Lorem ipsum\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing\\nelit. Nunc ac faucibus odio.\\n\\nVestibulum neque massa, scelerisque sit amet ligula eu, congue molestie mi. Praesent ut\\nvarius sem. Nullam at porttitor arcu, nec lacinia nisi. Ut ac dolor vitae odio interdum\\ncondimentum. Vivamus dapibus sodales ex, vitae malesuada ipsum cursus\\nconvallis. Maecenas sed egestas nulla, ac condimentum orci. Mauris diam felis,\\nvulputate ac suscipit et, iaculis non est. Curabitur semper arcu ac ligula semper, nec luctus\\nnisl blandit. Integer lacinia ante ac libero lobortis imperdiet. Nullam mollis convallis ipsum,\\nac accumsan nunc vehicula vitae. Nulla eget justo in felis tristique fringilla. Morbi sit amet\\ntortor quis risus auctor condimentum. Morbi in ullamcorper elit. Nulla iaculis tellus sit amet\\nmauris tempus fringilla.\\n\\nMaecenas mauris lectus, lobortis et purus mattis, blandit dictum tellus.\\n\\n• Maecenas non lorem quis tellus placerat varius.\\n\\n• Nulla facilisi.\\n\\n• Aenean congue fringilla justo ut aliquam.\\n\\n• Mauris id ex erat. Nunc vulputate neque vitae justo facilisis, non condimentum ante\\nsagittis.\\n\\n• Morbi viverra semper lorem nec molestie.\\n\\n• Maecenas tincidunt est efficitur ligula euismod, sit amet ornare est vulputate.\\n\\n\\n12\\n\\n10\\n\\n8\\nColumn 1\\n6\\nColumn 2\\n4 Column 3\\n\\n2\\n\\n0\\nRow 1 Row 2 Row 3 Row 4\\n\\nIn non mauris justo. Duis vehicula mi vel mi pretium, a viverra erat efficitur. Cras aliquam\\nest ac eros varius, id iaculis dui auctor. Duis pretium neque ligula, et pulvinar mi placerat\\net. Nulla nec nunc sit amet nunc posuere vestibulum. Ut id neque eget tortor mattis\\ntristique. Donec ante est, blandit sit amet tristique vel, lacinia pulvinar arcu. Pellentesque\\nscelerisque fermentum erat, id posuere justo pulvinar ut. Cras id eros sed enim aliquam\\nlobortis. Sed lobortis nisl ut eros efficitur tincidunt. Cras justo mi, porttitor quis mattis vel,\\nultricies ut purus. Ut facilisis et lacus eu cursus.\\n\\nIn eleifend velit vitae libero sollicitudin euismod. Fusce vitae vestibulum velit. Pellentesque\\nvulputate lectus quis pellentesque commodo. Aliquam erat volutpat. Vestibulum in egestas\\nvelit. Pellentesque fermentum nisl vitae fringilla venenatis. Etiam id mauris vitae orci\\nmaximus ultricies.\\n\\n\\n\\n\\nCras fringilla ipsum magna, in fringilla dui commodo\\na.\\n\\nLorem ipsum Lorem ipsum Lorem ipsum\\n\\n1 In eleifend velit vitae libero sollicitudin euismod. Lorem\\n\\n2 Cras fringilla ipsum magna, in fringilla dui commodo Ipsum\\na.\\n\\n3 Aliquam erat volutpat. Lorem\\n\\n4 Fusce vitae vestibulum velit. Lorem\\n\\n5 Etiam vehicula luctus fermentum. Ipsum\\n\\n\\n\\nEtiam vehicula luctus fermentum. In vel metus congue, pulvinar lectus vel, fermentum dui.\\nMaecenas ante orci, egestas ut aliquet sit amet, sagittis a magna. Aliquam ante quam,\\npellentesque ut dignissim quis, laoreet eget est. Aliquam erat volutpat. Class aptent taciti\\nsociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut ullamcorper\\njusto sapien, in cursus libero viverra eget. Vivamus auctor imperdiet urna, at pulvinar leo\\nposuere laoreet. Suspendisse neque nisl, fringilla at iaculis scelerisque, ornare vel dolor. Ut\\net pulvinar nunc. Pellentesque fringilla mollis efficitur. Nullam venenatis commodo\\nimperdiet. Morbi velit neque, semper quis lorem quis, efficitur dignissim ipsum. Ut ac lorem\\nsed turpis imperdiet eleifend sit amet id sapien.\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing\\nelit.\\n\\nNunc ac faucibus odio. Vestibulum neque massa, scelerisque sit amet ligula eu, congue\\nmolestie mi. Praesent ut varius sem. Nullam at porttitor arcu, nec lacinia nisi. Ut ac dolor\\nvitae odio interdum condimentum. Vivamus dapibus sodales ex, vitae malesuada ipsum\\ncursus convallis. Maecenas sed egestas nulla, ac condimentum orci. Mauris diam felis,\\nvulputate ac suscipit et, iaculis non est. Curabitur semper arcu ac ligula semper, nec luctus\\nnisl blandit. Integer lacinia ante ac libero lobortis imperdiet. Nullam mollis convallis ipsum,\\nac accumsan nunc vehicula vitae. Nulla eget justo in felis tristique fringilla. Morbi sit amet\\ntortor quis risus auctor condimentum. Morbi in ullamcorper elit. Nulla iaculis tellus sit amet\\nmauris tempus fringilla.\\n\\n\\nMaecenas mauris lectus, lobortis et purus mattis, blandit\\ndictum tellus.\\nMaecenas non lorem quis tellus placerat varius. Nulla facilisi. Aenean congue fringilla justo\\nut aliquam. Mauris id ex erat. Nunc vulputate neque vitae justo facilisis, non condimentum\\nante sagittis. Morbi viverra semper lorem nec molestie. Maecenas tincidunt est efficitur\\nligula euismod, sit amet ornare est vulputate.\\n\\nIn non mauris justo. Duis vehicula mi vel mi pretium, a viverra erat efficitur. Cras aliquam\\nest ac eros varius, id iaculis dui auctor. Duis pretium neque ligula, et pulvinar mi placerat\\net. Nulla nec nunc sit amet nunc posuere vestibulum. Ut id neque eget tortor mattis\\ntristique. Donec ante est, blandit sit amet tristique vel, lacinia pulvinar arcu. Pellentesque\\nscelerisque fermentum erat, id posuere justo pulvinar ut. Cras id eros sed enim aliquam\\nlobortis. Sed lobortis nisl ut eros efficitur tincidunt. Cras justo mi, porttitor quis mattis vel,\\nultricies ut purus. Ut facilisis et lacus eu cursus.\\n\\n\\nIn eleifend velit vitae libero sollicitudin euismod.\\nFusce vitae vestibulum velit. Pellentesque vulputate lectus quis pellentesque commodo.\\nAliquam erat volutpat. Vestibulum in egestas velit. Pellentesque fermentum nisl vitae\\nfringilla venenatis. Etiam id mauris vitae orci maximus ultricies. Cras fringilla ipsum\\nmagna, in fringilla dui commodo a.\\n\\nEtiam vehicula luctus fermentum. In vel metus congue, pulvinar lectus vel, fermentum dui.\\nMaecenas ante orci, egestas ut aliquet sit amet, sagittis a magna. Aliquam ante quam,\\npellentesque ut dignissim quis, laoreet eget est. Aliquam erat volutpat. Class aptent taciti\\nsociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut ullamcorper\\njusto sapien, in cursus libero viverra eget. Vivamus auctor imperdiet urna, at pulvinar leo\\nposuere laoreet. Suspendisse neque nisl, fringilla at iaculis scelerisque, ornare vel dolor. Ut\\net pulvinar nunc. Pellentesque fringilla mollis efficitur. Nullam venenatis commodo\\nimperdiet. Morbi velit neque, semper quis lorem quis, efficitur dignissim ipsum. Ut ac lorem\\nsed turpis imperdiet eleifend sit amet id sapien.\\n\\nSOOORGsARO Or\\n008soee\\naS\",\"tags\":[4],\"created\":\"2021-02-15T00:00:00Z\",\"created_date\":\"2021-02-15\",\"modified\":\"2023-02-17T22:25:47.449036Z\",\"added\":\"2021-01-26T22:46:32.447764Z\",\"archive_serial_number\":null,\"original_file_name\":\"2021-02-15 file-sample_150kBs.pdf\",\"archived_file_name\":\"2021-02-15 file-sample_150kBs.pdf\",\"owner\":null,\"permissions\":{\"view\":{\"users\":[],\"groups\":[]},\"change\":{\"users\":[],\"groups\":[]}},\"notes\":[{\"id\":70,\"note\":\"This is a second note\",\"created\":\"2023-05-12T17:04:50.873017Z\",\"document\":175,\"user\":2},{\"id\":71,\"note\":\"And a third\",\"created\":\"2023-05-12T17:04:54.027561Z\",\"document\":175,\"user\":2},{\"id\":72,\"note\":\"One more\",\"created\":\"2023-05-12T17:04:57.581521Z\",\"document\":175,\"user\":2},{\"id\":73,\"note\":\"This is a new note\",\"created\":\"2023-05-14T06:05:17.715744Z\",\"document\":175,\"user\":2}]}" + "text": "{\"id\":175,\"correspondent\":null,\"document_type\":null,\"storage_path\":8,\"title\":\"file-sample_150kBs\",\"content\":\"Lorem ipsum\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing\\nelit. Nunc ac faucibus odio.\\n\\nVestibulum neque massa, scelerisque sit amet ligula eu, congue molestie mi. Praesent ut\\nvarius sem. Nullam at porttitor arcu, nec lacinia nisi. Ut ac dolor vitae odio interdum\\ncondimentum. Vivamus dapibus sodales ex, vitae malesuada ipsum cursus\\nconvallis. Maecenas sed egestas nulla, ac condimentum orci. Mauris diam felis,\\nvulputate ac suscipit et, iaculis non est. Curabitur semper arcu ac ligula semper, nec luctus\\nnisl blandit. Integer lacinia ante ac libero lobortis imperdiet. Nullam mollis convallis ipsum,\\nac accumsan nunc vehicula vitae. Nulla eget justo in felis tristique fringilla. Morbi sit amet\\ntortor quis risus auctor condimentum. Morbi in ullamcorper elit. Nulla iaculis tellus sit amet\\nmauris tempus fringilla.\\n\\nMaecenas mauris lectus, lobortis et purus mattis, blandit dictum tellus.\\n\\n• Maecenas non lorem quis tellus placerat varius.\\n\\n• Nulla facilisi.\\n\\n• Aenean congue fringilla justo ut aliquam.\\n\\n• Mauris id ex erat. Nunc vulputate neque vitae justo facilisis, non condimentum ante\\nsagittis.\\n\\n• Morbi viverra semper lorem nec molestie.\\n\\n• Maecenas tincidunt est efficitur ligula euismod, sit amet ornare est vulputate.\\n\\n\\n12\\n\\n10\\n\\n8\\nColumn 1\\n6\\nColumn 2\\n4 Column 3\\n\\n2\\n\\n0\\nRow 1 Row 2 Row 3 Row 4\\n\\nIn non mauris justo. Duis vehicula mi vel mi pretium, a viverra erat efficitur. Cras aliquam\\nest ac eros varius, id iaculis dui auctor. Duis pretium neque ligula, et pulvinar mi placerat\\net. Nulla nec nunc sit amet nunc posuere vestibulum. Ut id neque eget tortor mattis\\ntristique. Donec ante est, blandit sit amet tristique vel, lacinia pulvinar arcu. Pellentesque\\nscelerisque fermentum erat, id posuere justo pulvinar ut. Cras id eros sed enim aliquam\\nlobortis. Sed lobortis nisl ut eros efficitur tincidunt. Cras justo mi, porttitor quis mattis vel,\\nultricies ut purus. Ut facilisis et lacus eu cursus.\\n\\nIn eleifend velit vitae libero sollicitudin euismod. Fusce vitae vestibulum velit. Pellentesque\\nvulputate lectus quis pellentesque commodo. Aliquam erat volutpat. Vestibulum in egestas\\nvelit. Pellentesque fermentum nisl vitae fringilla venenatis. Etiam id mauris vitae orci\\nmaximus ultricies.\\n\\n\\n\\n\\nCras fringilla ipsum magna, in fringilla dui commodo\\na.\\n\\nLorem ipsum Lorem ipsum Lorem ipsum\\n\\n1 In eleifend velit vitae libero sollicitudin euismod. Lorem\\n\\n2 Cras fringilla ipsum magna, in fringilla dui commodo Ipsum\\na.\\n\\n3 Aliquam erat volutpat. Lorem\\n\\n4 Fusce vitae vestibulum velit. Lorem\\n\\n5 Etiam vehicula luctus fermentum. Ipsum\\n\\n\\n\\nEtiam vehicula luctus fermentum. In vel metus congue, pulvinar lectus vel, fermentum dui.\\nMaecenas ante orci, egestas ut aliquet sit amet, sagittis a magna. Aliquam ante quam,\\npellentesque ut dignissim quis, laoreet eget est. Aliquam erat volutpat. Class aptent taciti\\nsociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut ullamcorper\\njusto sapien, in cursus libero viverra eget. Vivamus auctor imperdiet urna, at pulvinar leo\\nposuere laoreet. Suspendisse neque nisl, fringilla at iaculis scelerisque, ornare vel dolor. Ut\\net pulvinar nunc. Pellentesque fringilla mollis efficitur. Nullam venenatis commodo\\nimperdiet. Morbi velit neque, semper quis lorem quis, efficitur dignissim ipsum. Ut ac lorem\\nsed turpis imperdiet eleifend sit amet id sapien.\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing\\nelit.\\n\\nNunc ac faucibus odio. Vestibulum neque massa, scelerisque sit amet ligula eu, congue\\nmolestie mi. Praesent ut varius sem. Nullam at porttitor arcu, nec lacinia nisi. Ut ac dolor\\nvitae odio interdum condimentum. Vivamus dapibus sodales ex, vitae malesuada ipsum\\ncursus convallis. Maecenas sed egestas nulla, ac condimentum orci. Mauris diam felis,\\nvulputate ac suscipit et, iaculis non est. Curabitur semper arcu ac ligula semper, nec luctus\\nnisl blandit. Integer lacinia ante ac libero lobortis imperdiet. Nullam mollis convallis ipsum,\\nac accumsan nunc vehicula vitae. Nulla eget justo in felis tristique fringilla. Morbi sit amet\\ntortor quis risus auctor condimentum. Morbi in ullamcorper elit. Nulla iaculis tellus sit amet\\nmauris tempus fringilla.\\n\\n\\nMaecenas mauris lectus, lobortis et purus mattis, blandit\\ndictum tellus.\\nMaecenas non lorem quis tellus placerat varius. Nulla facilisi. Aenean congue fringilla justo\\nut aliquam. Mauris id ex erat. Nunc vulputate neque vitae justo facilisis, non condimentum\\nante sagittis. Morbi viverra semper lorem nec molestie. Maecenas tincidunt est efficitur\\nligula euismod, sit amet ornare est vulputate.\\n\\nIn non mauris justo. Duis vehicula mi vel mi pretium, a viverra erat efficitur. Cras aliquam\\nest ac eros varius, id iaculis dui auctor. Duis pretium neque ligula, et pulvinar mi placerat\\net. Nulla nec nunc sit amet nunc posuere vestibulum. Ut id neque eget tortor mattis\\ntristique. Donec ante est, blandit sit amet tristique vel, lacinia pulvinar arcu. Pellentesque\\nscelerisque fermentum erat, id posuere justo pulvinar ut. Cras id eros sed enim aliquam\\nlobortis. Sed lobortis nisl ut eros efficitur tincidunt. Cras justo mi, porttitor quis mattis vel,\\nultricies ut purus. Ut facilisis et lacus eu cursus.\\n\\n\\nIn eleifend velit vitae libero sollicitudin euismod.\\nFusce vitae vestibulum velit. Pellentesque vulputate lectus quis pellentesque commodo.\\nAliquam erat volutpat. Vestibulum in egestas velit. Pellentesque fermentum nisl vitae\\nfringilla venenatis. Etiam id mauris vitae orci maximus ultricies. Cras fringilla ipsum\\nmagna, in fringilla dui commodo a.\\n\\nEtiam vehicula luctus fermentum. In vel metus congue, pulvinar lectus vel, fermentum dui.\\nMaecenas ante orci, egestas ut aliquet sit amet, sagittis a magna. Aliquam ante quam,\\npellentesque ut dignissim quis, laoreet eget est. Aliquam erat volutpat. Class aptent taciti\\nsociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut ullamcorper\\njusto sapien, in cursus libero viverra eget. Vivamus auctor imperdiet urna, at pulvinar leo\\nposuere laoreet. Suspendisse neque nisl, fringilla at iaculis scelerisque, ornare vel dolor. Ut\\net pulvinar nunc. Pellentesque fringilla mollis efficitur. Nullam venenatis commodo\\nimperdiet. Morbi velit neque, semper quis lorem quis, efficitur dignissim ipsum. Ut ac lorem\\nsed turpis imperdiet eleifend sit amet id sapien.\\n\\nSOOORGsARO Or\\n008soee\\naS\",\"tags\":[4],\"created\":\"2021-02-15T00:00:00Z\",\"created_date\":\"2021-02-15\",\"modified\":\"2023-02-17T22:25:47.449036Z\",\"added\":\"2021-01-26T22:46:32.447764Z\",\"archive_serial_number\":null,\"original_file_name\":\"2021-02-15 file-sample_150kBs.pdf\",\"archived_file_name\":\"2021-02-15 file-sample_150kBs.pdf\",\"owner\":null,\"permissions\":{\"view\":{\"users\":[],\"groups\":[]},\"change\":{\"users\":[],\"groups\":[]}},\"notes\":[{\"id\":70,\"note\":\"This is a second note\",\"created\":\"2023-05-12T17:04:50.873017Z\",\"document\":175,\"user\":2},{\"id\":71,\"note\":\"And a third\",\"created\":\"2023-05-12T17:04:54.027561Z\",\"document\":175,\"user\":2},{\"id\":72,\"note\":\"One more\",\"created\":\"2023-05-12T17:04:57.581521Z\",\"document\":175,\"user\":2},{\"id\":73,\"note\":\"This is a new note\",\"created\":\"2023-05-14T06:05:17.715744Z\",\"document\":175,\"user\":2}],\"custom_fields\":[]}" }, "headersSize": -1, "bodySize": -1, diff --git a/src-ui/e2e/document-detail/requests/api-document-detail2.har b/src-ui/e2e/document-detail/requests/api-document-detail2.har index c0065697c..ee3166211 100644 --- a/src-ui/e2e/document-detail/requests/api-document-detail2.har +++ b/src-ui/e2e/document-detail/requests/api-document-detail2.har @@ -124,7 +124,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true}]}" + "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true}]}" }, "headersSize": -1, "bodySize": -1, @@ -133,6 +133,72 @@ "cache": {}, "timings": { "send": -1, "wait": -1, "receive": 1.02 } }, + { + "startedDateTime": "2023-05-14T07:03:41.086Z", + "time": 0.951, + "request": { + "method": "GET", + "url": "http://localhost:8000/api/custom_fields/?page=1&page_size=100000", + "httpVersion": "HTTP/1.1", + "cookies": [], + "headers": [ + { "name": "Accept", "value": "application/json; version=3" }, + { "name": "Accept-Encoding", "value": "gzip, deflate, br" }, + { "name": "Accept-Language", "value": "en-US" }, + { "name": "Connection", "value": "keep-alive" }, + { "name": "Host", "value": "localhost:8000" }, + { "name": "Origin", "value": "http://localhost:4200" }, + { "name": "Referer", "value": "http://localhost:4200/" }, + { "name": "Sec-Fetch-Dest", "value": "empty" }, + { "name": "Sec-Fetch-Mode", "value": "cors" }, + { "name": "Sec-Fetch-Site", "value": "same-site" }, + { "name": "User-Agent", "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.5672.53 Safari/537.36" } + ], + "queryString": [ + { + "name": "page", + "value": "1" + }, + { + "name": "page_size", + "value": "100000" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "HTTP/1.1", + "cookies": [], + "headers": [ + { "name": "Access-Control-Allow-Origin", "value": "http://localhost:4200" }, + { "name": "Allow", "value": "GET, POST, HEAD, OPTIONS" }, + { "name": "Content-Encoding", "value": "br" }, + { "name": "Content-Language", "value": "en-us" }, + { "name": "Content-Length", "value": "851" }, + { "name": "Content-Type", "value": "application/json" }, + { "name": "Cross-Origin-Opener-Policy", "value": "same-origin" }, + { "name": "Referrer-Policy", "value": "same-origin" }, + { "name": "Vary", "value": "Accept, Accept-Language, Origin, Cookie, Accept-Encoding" }, + { "name": "X-Api-Version", "value": "3" }, + { "name": "X-Content-Type-Options", "value": "nosniff" }, + { "name": "X-Frame-Options", "value": "ANY" }, + { "name": "X-Version", "value": "1.14.4" } + ], + "content": { + "size": -1, + "mimeType": "application/json", + "text": "{\"count\":0,\"next\":null,\"previous\":null,\"all\":[],\"results\":[]}" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { "send": -1, "wait": -1, "receive": 0.951 } + }, { "startedDateTime": "2023-05-28T06:08:41.662Z", "time": 1.012, @@ -506,7 +572,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "{\"id\":175,\"correspondent\":null,\"document_type\":null,\"storage_path\":8,\"title\":\"file-sample_150kBs\",\"content\":\"Lorem ipsum\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing\\nelit. Nunc ac faucibus odio.\\n\\nVestibulum neque massa, scelerisque sit amet ligula eu, congue molestie mi. Praesent ut\\nvarius sem. Nullam at porttitor arcu, nec lacinia nisi. Ut ac dolor vitae odio interdum\\ncondimentum. Vivamus dapibus sodales ex, vitae malesuada ipsum cursus\\nconvallis. Maecenas sed egestas nulla, ac condimentum orci. Mauris diam felis,\\nvulputate ac suscipit et, iaculis non est. Curabitur semper arcu ac ligula semper, nec luctus\\nnisl blandit. Integer lacinia ante ac libero lobortis imperdiet. Nullam mollis convallis ipsum,\\nac accumsan nunc vehicula vitae. Nulla eget justo in felis tristique fringilla. Morbi sit amet\\ntortor quis risus auctor condimentum. Morbi in ullamcorper elit. Nulla iaculis tellus sit amet\\nmauris tempus fringilla.\\n\\nMaecenas mauris lectus, lobortis et purus mattis, blandit dictum tellus.\\n\\n• Maecenas non lorem quis tellus placerat varius.\\n\\n• Nulla facilisi.\\n\\n• Aenean congue fringilla justo ut aliquam.\\n\\n• Mauris id ex erat. Nunc vulputate neque vitae justo facilisis, non condimentum ante\\nsagittis.\\n\\n• Morbi viverra semper lorem nec molestie.\\n\\n• Maecenas tincidunt est efficitur ligula euismod, sit amet ornare est vulputate.\\n\\n\\n12\\n\\n10\\n\\n8\\nColumn 1\\n6\\nColumn 2\\n4 Column 3\\n\\n2\\n\\n0\\nRow 1 Row 2 Row 3 Row 4\\n\\nIn non mauris justo. Duis vehicula mi vel mi pretium, a viverra erat efficitur. Cras aliquam\\nest ac eros varius, id iaculis dui auctor. Duis pretium neque ligula, et pulvinar mi placerat\\net. Nulla nec nunc sit amet nunc posuere vestibulum. Ut id neque eget tortor mattis\\ntristique. Donec ante est, blandit sit amet tristique vel, lacinia pulvinar arcu. Pellentesque\\nscelerisque fermentum erat, id posuere justo pulvinar ut. Cras id eros sed enim aliquam\\nlobortis. Sed lobortis nisl ut eros efficitur tincidunt. Cras justo mi, porttitor quis mattis vel,\\nultricies ut purus. Ut facilisis et lacus eu cursus.\\n\\nIn eleifend velit vitae libero sollicitudin euismod. Fusce vitae vestibulum velit. Pellentesque\\nvulputate lectus quis pellentesque commodo. Aliquam erat volutpat. Vestibulum in egestas\\nvelit. Pellentesque fermentum nisl vitae fringilla venenatis. Etiam id mauris vitae orci\\nmaximus ultricies.\\n\\n\\n\\n\\nCras fringilla ipsum magna, in fringilla dui commodo\\na.\\n\\nLorem ipsum Lorem ipsum Lorem ipsum\\n\\n1 In eleifend velit vitae libero sollicitudin euismod. Lorem\\n\\n2 Cras fringilla ipsum magna, in fringilla dui commodo Ipsum\\na.\\n\\n3 Aliquam erat volutpat. Lorem\\n\\n4 Fusce vitae vestibulum velit. Lorem\\n\\n5 Etiam vehicula luctus fermentum. Ipsum\\n\\n\\n\\nEtiam vehicula luctus fermentum. In vel metus congue, pulvinar lectus vel, fermentum dui.\\nMaecenas ante orci, egestas ut aliquet sit amet, sagittis a magna. Aliquam ante quam,\\npellentesque ut dignissim quis, laoreet eget est. Aliquam erat volutpat. Class aptent taciti\\nsociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut ullamcorper\\njusto sapien, in cursus libero viverra eget. Vivamus auctor imperdiet urna, at pulvinar leo\\nposuere laoreet. Suspendisse neque nisl, fringilla at iaculis scelerisque, ornare vel dolor. Ut\\net pulvinar nunc. Pellentesque fringilla mollis efficitur. Nullam venenatis commodo\\nimperdiet. Morbi velit neque, semper quis lorem quis, efficitur dignissim ipsum. Ut ac lorem\\nsed turpis imperdiet eleifend sit amet id sapien.\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing\\nelit.\\n\\nNunc ac faucibus odio. Vestibulum neque massa, scelerisque sit amet ligula eu, congue\\nmolestie mi. Praesent ut varius sem. Nullam at porttitor arcu, nec lacinia nisi. Ut ac dolor\\nvitae odio interdum condimentum. Vivamus dapibus sodales ex, vitae malesuada ipsum\\ncursus convallis. Maecenas sed egestas nulla, ac condimentum orci. Mauris diam felis,\\nvulputate ac suscipit et, iaculis non est. Curabitur semper arcu ac ligula semper, nec luctus\\nnisl blandit. Integer lacinia ante ac libero lobortis imperdiet. Nullam mollis convallis ipsum,\\nac accumsan nunc vehicula vitae. Nulla eget justo in felis tristique fringilla. Morbi sit amet\\ntortor quis risus auctor condimentum. Morbi in ullamcorper elit. Nulla iaculis tellus sit amet\\nmauris tempus fringilla.\\n\\n\\nMaecenas mauris lectus, lobortis et purus mattis, blandit\\ndictum tellus.\\nMaecenas non lorem quis tellus placerat varius. Nulla facilisi. Aenean congue fringilla justo\\nut aliquam. Mauris id ex erat. Nunc vulputate neque vitae justo facilisis, non condimentum\\nante sagittis. Morbi viverra semper lorem nec molestie. Maecenas tincidunt est efficitur\\nligula euismod, sit amet ornare est vulputate.\\n\\nIn non mauris justo. Duis vehicula mi vel mi pretium, a viverra erat efficitur. Cras aliquam\\nest ac eros varius, id iaculis dui auctor. Duis pretium neque ligula, et pulvinar mi placerat\\net. Nulla nec nunc sit amet nunc posuere vestibulum. Ut id neque eget tortor mattis\\ntristique. Donec ante est, blandit sit amet tristique vel, lacinia pulvinar arcu. Pellentesque\\nscelerisque fermentum erat, id posuere justo pulvinar ut. Cras id eros sed enim aliquam\\nlobortis. Sed lobortis nisl ut eros efficitur tincidunt. Cras justo mi, porttitor quis mattis vel,\\nultricies ut purus. Ut facilisis et lacus eu cursus.\\n\\n\\nIn eleifend velit vitae libero sollicitudin euismod.\\nFusce vitae vestibulum velit. Pellentesque vulputate lectus quis pellentesque commodo.\\nAliquam erat volutpat. Vestibulum in egestas velit. Pellentesque fermentum nisl vitae\\nfringilla venenatis. Etiam id mauris vitae orci maximus ultricies. Cras fringilla ipsum\\nmagna, in fringilla dui commodo a.\\n\\nEtiam vehicula luctus fermentum. In vel metus congue, pulvinar lectus vel, fermentum dui.\\nMaecenas ante orci, egestas ut aliquet sit amet, sagittis a magna. Aliquam ante quam,\\npellentesque ut dignissim quis, laoreet eget est. Aliquam erat volutpat. Class aptent taciti\\nsociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut ullamcorper\\njusto sapien, in cursus libero viverra eget. Vivamus auctor imperdiet urna, at pulvinar leo\\nposuere laoreet. Suspendisse neque nisl, fringilla at iaculis scelerisque, ornare vel dolor. Ut\\net pulvinar nunc. Pellentesque fringilla mollis efficitur. Nullam venenatis commodo\\nimperdiet. Morbi velit neque, semper quis lorem quis, efficitur dignissim ipsum. Ut ac lorem\\nsed turpis imperdiet eleifend sit amet id sapien.\\n\\nSOOORGsARO Or\\n008soee\\naS\",\"tags\":[4],\"created\":\"2021-02-15T00:00:00Z\",\"created_date\":\"2021-02-15\",\"modified\":\"2023-02-17T22:25:47.449036Z\",\"added\":\"2021-01-26T22:46:32.447764Z\",\"archive_serial_number\":null,\"original_file_name\":null,\"archived_file_name\":\"2021-02-15 file-sample_150kBs.pdf\",\"owner\":null,\"permissions\":{\"view\":{\"users\":[],\"groups\":[]},\"change\":{\"users\":[],\"groups\":[]}},\"notes\":[{\"id\":70,\"note\":\"This is a second note\",\"created\":\"2023-05-12T17:04:50.873017Z\",\"document\":175,\"user\":2},{\"id\":71,\"note\":\"And a third\",\"created\":\"2023-05-12T17:04:54.027561Z\",\"document\":175,\"user\":2},{\"id\":72,\"note\":\"One more\",\"created\":\"2023-05-12T17:04:57.581521Z\",\"document\":175,\"user\":2},{\"id\":73,\"note\":\"This is a new note\",\"created\":\"2023-05-14T06:05:17.715744Z\",\"document\":175,\"user\":2},{\"id\":74,\"note\":\"This is a new note\",\"created\":\"2023-05-28T05:49:25.763951Z\",\"document\":175,\"user\":2}]}" + "text": "{\"id\":175,\"correspondent\":null,\"document_type\":null,\"storage_path\":8,\"title\":\"file-sample_150kBs\",\"content\":\"Lorem ipsum\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing\\nelit. Nunc ac faucibus odio.\\n\\nVestibulum neque massa, scelerisque sit amet ligula eu, congue molestie mi. Praesent ut\\nvarius sem. Nullam at porttitor arcu, nec lacinia nisi. Ut ac dolor vitae odio interdum\\ncondimentum. Vivamus dapibus sodales ex, vitae malesuada ipsum cursus\\nconvallis. Maecenas sed egestas nulla, ac condimentum orci. Mauris diam felis,\\nvulputate ac suscipit et, iaculis non est. Curabitur semper arcu ac ligula semper, nec luctus\\nnisl blandit. Integer lacinia ante ac libero lobortis imperdiet. Nullam mollis convallis ipsum,\\nac accumsan nunc vehicula vitae. Nulla eget justo in felis tristique fringilla. Morbi sit amet\\ntortor quis risus auctor condimentum. Morbi in ullamcorper elit. Nulla iaculis tellus sit amet\\nmauris tempus fringilla.\\n\\nMaecenas mauris lectus, lobortis et purus mattis, blandit dictum tellus.\\n\\n• Maecenas non lorem quis tellus placerat varius.\\n\\n• Nulla facilisi.\\n\\n• Aenean congue fringilla justo ut aliquam.\\n\\n• Mauris id ex erat. Nunc vulputate neque vitae justo facilisis, non condimentum ante\\nsagittis.\\n\\n• Morbi viverra semper lorem nec molestie.\\n\\n• Maecenas tincidunt est efficitur ligula euismod, sit amet ornare est vulputate.\\n\\n\\n12\\n\\n10\\n\\n8\\nColumn 1\\n6\\nColumn 2\\n4 Column 3\\n\\n2\\n\\n0\\nRow 1 Row 2 Row 3 Row 4\\n\\nIn non mauris justo. Duis vehicula mi vel mi pretium, a viverra erat efficitur. Cras aliquam\\nest ac eros varius, id iaculis dui auctor. Duis pretium neque ligula, et pulvinar mi placerat\\net. Nulla nec nunc sit amet nunc posuere vestibulum. Ut id neque eget tortor mattis\\ntristique. Donec ante est, blandit sit amet tristique vel, lacinia pulvinar arcu. Pellentesque\\nscelerisque fermentum erat, id posuere justo pulvinar ut. Cras id eros sed enim aliquam\\nlobortis. Sed lobortis nisl ut eros efficitur tincidunt. Cras justo mi, porttitor quis mattis vel,\\nultricies ut purus. Ut facilisis et lacus eu cursus.\\n\\nIn eleifend velit vitae libero sollicitudin euismod. Fusce vitae vestibulum velit. Pellentesque\\nvulputate lectus quis pellentesque commodo. Aliquam erat volutpat. Vestibulum in egestas\\nvelit. Pellentesque fermentum nisl vitae fringilla venenatis. Etiam id mauris vitae orci\\nmaximus ultricies.\\n\\n\\n\\n\\nCras fringilla ipsum magna, in fringilla dui commodo\\na.\\n\\nLorem ipsum Lorem ipsum Lorem ipsum\\n\\n1 In eleifend velit vitae libero sollicitudin euismod. Lorem\\n\\n2 Cras fringilla ipsum magna, in fringilla dui commodo Ipsum\\na.\\n\\n3 Aliquam erat volutpat. Lorem\\n\\n4 Fusce vitae vestibulum velit. Lorem\\n\\n5 Etiam vehicula luctus fermentum. Ipsum\\n\\n\\n\\nEtiam vehicula luctus fermentum. In vel metus congue, pulvinar lectus vel, fermentum dui.\\nMaecenas ante orci, egestas ut aliquet sit amet, sagittis a magna. Aliquam ante quam,\\npellentesque ut dignissim quis, laoreet eget est. Aliquam erat volutpat. Class aptent taciti\\nsociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut ullamcorper\\njusto sapien, in cursus libero viverra eget. Vivamus auctor imperdiet urna, at pulvinar leo\\nposuere laoreet. Suspendisse neque nisl, fringilla at iaculis scelerisque, ornare vel dolor. Ut\\net pulvinar nunc. Pellentesque fringilla mollis efficitur. Nullam venenatis commodo\\nimperdiet. Morbi velit neque, semper quis lorem quis, efficitur dignissim ipsum. Ut ac lorem\\nsed turpis imperdiet eleifend sit amet id sapien.\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing\\nelit.\\n\\nNunc ac faucibus odio. Vestibulum neque massa, scelerisque sit amet ligula eu, congue\\nmolestie mi. Praesent ut varius sem. Nullam at porttitor arcu, nec lacinia nisi. Ut ac dolor\\nvitae odio interdum condimentum. Vivamus dapibus sodales ex, vitae malesuada ipsum\\ncursus convallis. Maecenas sed egestas nulla, ac condimentum orci. Mauris diam felis,\\nvulputate ac suscipit et, iaculis non est. Curabitur semper arcu ac ligula semper, nec luctus\\nnisl blandit. Integer lacinia ante ac libero lobortis imperdiet. Nullam mollis convallis ipsum,\\nac accumsan nunc vehicula vitae. Nulla eget justo in felis tristique fringilla. Morbi sit amet\\ntortor quis risus auctor condimentum. Morbi in ullamcorper elit. Nulla iaculis tellus sit amet\\nmauris tempus fringilla.\\n\\n\\nMaecenas mauris lectus, lobortis et purus mattis, blandit\\ndictum tellus.\\nMaecenas non lorem quis tellus placerat varius. Nulla facilisi. Aenean congue fringilla justo\\nut aliquam. Mauris id ex erat. Nunc vulputate neque vitae justo facilisis, non condimentum\\nante sagittis. Morbi viverra semper lorem nec molestie. Maecenas tincidunt est efficitur\\nligula euismod, sit amet ornare est vulputate.\\n\\nIn non mauris justo. Duis vehicula mi vel mi pretium, a viverra erat efficitur. Cras aliquam\\nest ac eros varius, id iaculis dui auctor. Duis pretium neque ligula, et pulvinar mi placerat\\net. Nulla nec nunc sit amet nunc posuere vestibulum. Ut id neque eget tortor mattis\\ntristique. Donec ante est, blandit sit amet tristique vel, lacinia pulvinar arcu. Pellentesque\\nscelerisque fermentum erat, id posuere justo pulvinar ut. Cras id eros sed enim aliquam\\nlobortis. Sed lobortis nisl ut eros efficitur tincidunt. Cras justo mi, porttitor quis mattis vel,\\nultricies ut purus. Ut facilisis et lacus eu cursus.\\n\\n\\nIn eleifend velit vitae libero sollicitudin euismod.\\nFusce vitae vestibulum velit. Pellentesque vulputate lectus quis pellentesque commodo.\\nAliquam erat volutpat. Vestibulum in egestas velit. Pellentesque fermentum nisl vitae\\nfringilla venenatis. Etiam id mauris vitae orci maximus ultricies. Cras fringilla ipsum\\nmagna, in fringilla dui commodo a.\\n\\nEtiam vehicula luctus fermentum. In vel metus congue, pulvinar lectus vel, fermentum dui.\\nMaecenas ante orci, egestas ut aliquet sit amet, sagittis a magna. Aliquam ante quam,\\npellentesque ut dignissim quis, laoreet eget est. Aliquam erat volutpat. Class aptent taciti\\nsociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut ullamcorper\\njusto sapien, in cursus libero viverra eget. Vivamus auctor imperdiet urna, at pulvinar leo\\nposuere laoreet. Suspendisse neque nisl, fringilla at iaculis scelerisque, ornare vel dolor. Ut\\net pulvinar nunc. Pellentesque fringilla mollis efficitur. Nullam venenatis commodo\\nimperdiet. Morbi velit neque, semper quis lorem quis, efficitur dignissim ipsum. Ut ac lorem\\nsed turpis imperdiet eleifend sit amet id sapien.\\n\\nSOOORGsARO Or\\n008soee\\naS\",\"tags\":[4],\"created\":\"2021-02-15T00:00:00Z\",\"created_date\":\"2021-02-15\",\"modified\":\"2023-02-17T22:25:47.449036Z\",\"added\":\"2021-01-26T22:46:32.447764Z\",\"archive_serial_number\":null,\"original_file_name\":null,\"archived_file_name\":\"2021-02-15 file-sample_150kBs.pdf\",\"owner\":null,\"permissions\":{\"view\":{\"users\":[],\"groups\":[]},\"change\":{\"users\":[],\"groups\":[]}},\"notes\":[{\"id\":70,\"note\":\"This is a second note\",\"created\":\"2023-05-12T17:04:50.873017Z\",\"document\":175,\"user\":2},{\"id\":71,\"note\":\"And a third\",\"created\":\"2023-05-12T17:04:54.027561Z\",\"document\":175,\"user\":2},{\"id\":72,\"note\":\"One more\",\"created\":\"2023-05-12T17:04:57.581521Z\",\"document\":175,\"user\":2},{\"id\":73,\"note\":\"This is a new note\",\"created\":\"2023-05-14T06:05:17.715744Z\",\"document\":175,\"user\":2},{\"id\":74,\"note\":\"This is a new note\",\"created\":\"2023-05-28T05:49:25.763951Z\",\"document\":175,\"user\":2}],\"custom_fields\":[]}" }, "headersSize": -1, "bodySize": -1, diff --git a/src-ui/e2e/document-list/document-list.spec.ts b/src-ui/e2e/document-list/document-list.spec.ts index 9bd86bb1d..06b512a28 100644 --- a/src-ui/e2e/document-list/document-list.spec.ts +++ b/src-ui/e2e/document-list/document-list.spec.ts @@ -13,33 +13,33 @@ test('basic filtering', async ({ page }) => { await page.getByRole('button', { name: 'Tags' }).click() await page.getByRole('menuitem', { name: 'Inbox' }).click() await expect(page).toHaveURL(/tags__id__all=9/) - await expect(page.locator('app-document-list')).toHaveText(/8 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/8 documents/) await page.getByRole('button', { name: 'Document type' }).click() await page.getByRole('menuitem', { name: 'Invoice Test 3' }).click() await expect(page).toHaveURL(/document_type__id__in=1/) - await expect(page.locator('app-document-list')).toHaveText(/3 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/3 documents/) await page.getByRole('button', { name: 'Reset filters' }).first().click() await page.getByRole('button', { name: 'Correspondent' }).click() await page.getByRole('menuitem', { name: 'Test Correspondent 1' }).click() await page.getByRole('menuitem', { name: 'Correspondent 9' }).click() await expect(page).toHaveURL(/correspondent__id__in=12,1/) - await expect(page.locator('app-document-list')).toHaveText(/7 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/7 documents/) await page - .locator('app-filter-editor') + .locator('pngx-filter-editor') .getByTitle('Correspondent') .getByText('Exclude') .click() await expect(page).toHaveURL(/correspondent__id__none=12,1/) - await expect(page.locator('app-document-list')).toHaveText(/54 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/54 documents/) // clear button await page.getByRole('button', { name: '2 selected', exact: true }).click() - await expect(page.locator('app-document-list')).toHaveText(/61 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/61 documents/) await page.getByRole('button', { name: 'Storage path' }).click() await page.getByRole('menuitem', { name: 'Testing 12' }).click() await expect(page).toHaveURL(/storage_path__id__in=5/) - await expect(page.locator('app-document-list')).toHaveText(/8 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/8 documents/) await page.getByRole('button', { name: 'Reset filters' }).first().click() - await expect(page.locator('app-document-list')).toHaveText(/61 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/61 documents/) }) test('text filtering', async ({ page }) => { @@ -47,35 +47,35 @@ test('text filtering', async ({ page }) => { await page.goto('/documents') await page.getByRole('textbox').click() await page.getByRole('textbox').fill('test') - await expect(page.locator('app-document-list')).toHaveText(/32 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/32 documents/) await expect(page).toHaveURL(/title_content=test/) await page.getByRole('button', { name: 'Title & content' }).click() await page.getByRole('button', { name: 'Title', exact: true }).click() - await expect(page.locator('app-document-list')).toHaveText(/9 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/9 documents/) await expect(page).toHaveURL(/title__icontains=test/) await page.getByRole('button', { name: 'Title', exact: true }).click() await page.getByRole('button', { name: 'Advanced search' }).click() await expect(page).toHaveURL(/query=test/) - await expect(page.locator('app-document-list')).toHaveText(/26 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/26 documents/) await page.getByRole('button', { name: 'Advanced search' }).click() await page.getByRole('button', { name: 'ASN' }).click() await page.getByRole('textbox').fill('1123') await expect(page).toHaveURL(/archive_serial_number=1123/) - await expect(page.locator('app-document-list')).toHaveText(/one document/i) + await expect(page.locator('pngx-document-list')).toHaveText(/one document/i) await page.locator('select').selectOption('greater') await page.getByRole('textbox').click() await page.getByRole('textbox').fill('1123') await expect(page).toHaveURL(/archive_serial_number__gt=1123/) - await expect(page.locator('app-document-list')).toHaveText(/5 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/5 documents/) await page.locator('select').selectOption('less') await expect(page).toHaveURL(/archive_serial_number__lt=1123/) - await expect(page.locator('app-document-list')).toHaveText(/0 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/0 documents/) await page.locator('select').selectOption('is null') await expect(page).toHaveURL(/archive_serial_number__isnull=1/) - await expect(page.locator('app-document-list')).toHaveText(/55 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/55 documents/) await page.locator('select').selectOption('not null') await expect(page).toHaveURL(/archive_serial_number__isnull=0/) - await expect(page.locator('app-document-list')).toHaveText(/6 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/6 documents/) }) test('date filtering', async ({ page }) => { @@ -83,7 +83,7 @@ test('date filtering', async ({ page }) => { await page.goto('/documents') await page.getByRole('button', { name: 'Created' }).click() await page.getByRole('menuitem', { name: 'Last 3 months' }).click() - await expect(page.locator('app-document-list')).toHaveText(/one document/i) + await expect(page.locator('pngx-document-list')).toHaveText(/one document/i) await page.getByRole('button', { name: 'Created Clear selected' }).click() await page.getByRole('button', { name: 'Created' }).click() await page @@ -94,7 +94,7 @@ test('date filtering', async ({ page }) => { await page.getByRole('combobox', { name: 'Select year' }).selectOption('2022') await page.getByText('11', { exact: true }).click() await page.getByRole('button', { name: 'Title & content' }).click() - await expect(page.locator('app-document-list')).toHaveText(/2 documents/) + await expect(page.locator('pngx-document-list')).toHaveText(/2 documents/) }) test('sorting', async ({ page }) => { @@ -105,7 +105,7 @@ test('sorting', async ({ page }) => { await expect(page).toHaveURL(/sort=archive_serial_number/) await page.getByRole('button', { name: 'Sort' }).click() await page - .locator('app-page-header') + .locator('pngx-page-header') .getByRole('button', { name: 'Correspondent' }) .click() await expect(page).toHaveURL(/sort=correspondent__name/) @@ -114,7 +114,7 @@ test('sorting', async ({ page }) => { await expect(page).toHaveURL(/sort=title/) await page.getByRole('button', { name: 'Sort' }).click() await page - .locator('app-page-header') + .locator('pngx-page-header') .getByRole('button', { name: 'Document type' }) .click() await expect(page).toHaveURL(/sort=document_type__name/) @@ -138,42 +138,42 @@ test('sorting', async ({ page }) => { test('change views', async ({ page }) => { await page.routeFromHAR(REQUESTS_HAR5, { notFound: 'fallback' }) await page.goto('/documents') - await page.locator('app-page-header label').first().click() - await expect(page.locator('app-document-list table')).toBeVisible() - await page.locator('app-page-header label').nth(1).click() - await expect(page.locator('app-document-card-small').first()).toBeAttached() - await page.locator('app-page-header label').nth(2).click() - await expect(page.locator('app-document-card-large').first()).toBeAttached() + await page.locator('pngx-page-header label').first().click() + await expect(page.locator('pngx-document-list table')).toBeVisible() + await page.locator('pngx-page-header label').nth(1).click() + await expect(page.locator('pngx-document-card-small').first()).toBeAttached() + await page.locator('pngx-page-header label').nth(2).click() + await expect(page.locator('pngx-document-card-large').first()).toBeAttached() }) test('bulk edit', async ({ page }) => { await page.routeFromHAR(REQUESTS_HAR6, { notFound: 'fallback' }) await page.goto('/documents') - await page.locator('app-document-card-small').nth(0).click() + await page.locator('pngx-document-card-small').nth(0).click() await page - .locator('app-document-card-small') + .locator('pngx-document-card-small') .nth(3) .click({ modifiers: ['Shift'], }) - await expect(page.locator('app-document-list')).toHaveText( + await expect(page.locator('pngx-document-list')).toHaveText( /Selected 4 of 61 documents/i ) await page.getByRole('button', { name: 'Page' }).click() - await expect(page.locator('app-document-list')).toHaveText( + await expect(page.locator('pngx-document-list')).toHaveText( /Selected 50 of 61 documents/i ) await page.getByRole('button', { name: 'All' }).click() - await expect(page.locator('app-document-list')).toHaveText( + await expect(page.locator('pngx-document-list')).toHaveText( /Selected 61 of 61 documents/i ) await page.getByRole('button', { name: 'Cancel' }).click() - await page.locator('app-document-card-small').nth(1).click() - await page.locator('app-document-card-small').nth(2).click() + await page.locator('pngx-document-card-small').nth(1).click() + await page.locator('pngx-document-card-small').nth(2).click() await page.getByRole('button', { name: 'Tags' }).click() await page.getByRole('menuitem', { name: 'TagWithPartial' }).click() diff --git a/src-ui/e2e/document-list/requests/api-document-list1.har b/src-ui/e2e/document-list/requests/api-document-list1.har index 4e4a140b5..6a4aa9ac1 100644 --- a/src-ui/e2e/document-list/requests/api-document-list1.har +++ b/src-ui/e2e/document-list/requests/api-document-list1.har @@ -124,7 +124,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true}]}" + "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true}]}" }, "headersSize": -1, "bodySize": -1, diff --git a/src-ui/e2e/document-list/requests/api-document-list2.har b/src-ui/e2e/document-list/requests/api-document-list2.har index eee01281b..65de66d17 100644 --- a/src-ui/e2e/document-list/requests/api-document-list2.har +++ b/src-ui/e2e/document-list/requests/api-document-list2.har @@ -124,7 +124,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true}]}" + "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true}]}" }, "headersSize": -1, "bodySize": -1, diff --git a/src-ui/e2e/document-list/requests/api-document-list3.har b/src-ui/e2e/document-list/requests/api-document-list3.har index 92ba63682..6d5d1808f 100644 --- a/src-ui/e2e/document-list/requests/api-document-list3.har +++ b/src-ui/e2e/document-list/requests/api-document-list3.har @@ -124,7 +124,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true}]}" + "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true}]}" }, "headersSize": -1, "bodySize": -1, diff --git a/src-ui/e2e/document-list/requests/api-document-list4.har b/src-ui/e2e/document-list/requests/api-document-list4.har index 2152c23a7..60657e3c9 100644 --- a/src-ui/e2e/document-list/requests/api-document-list4.har +++ b/src-ui/e2e/document-list/requests/api-document-list4.har @@ -124,7 +124,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true}]}" + "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true}]}" }, "headersSize": -1, "bodySize": -1, diff --git a/src-ui/e2e/document-list/requests/api-document-list5.har b/src-ui/e2e/document-list/requests/api-document-list5.har index f37ded6d8..8e96ed962 100644 --- a/src-ui/e2e/document-list/requests/api-document-list5.har +++ b/src-ui/e2e/document-list/requests/api-document-list5.har @@ -124,7 +124,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true}]}" + "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true}]}" }, "headersSize": -1, "bodySize": -1, diff --git a/src-ui/e2e/document-list/requests/api-document-list6.har b/src-ui/e2e/document-list/requests/api-document-list6.har index ec6f6e126..194b2f7b7 100644 --- a/src-ui/e2e/document-list/requests/api-document-list6.har +++ b/src-ui/e2e/document-list/requests/api-document-list6.har @@ -124,7 +124,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":{\"id\":2,\"password\":\"pbkdf2_sha256$390000$ElHGEQzOIS3Gv2wu8YDbSt$bWASwmUfHtFMZ6+rG+4rrrtejjC9RiwXm6xMi0bxMZo=\",\"last_login\":\"2023-04-26T09:08:14Z\",\"is_superuser\":false,\"username\":\"testuser\",\"first_name\":\"\",\"last_name\":\"\",\"email\":\"test@user.com\",\"is_staff\":true,\"is_active\":true,\"date_joined\":\"2021-01-03T07:37:04Z\",\"groups\":[],\"user_permissions\":[57,58,59,60,5,6,7,8,1,2,3,4,9,10,11,12,61,62,63,64,65,66,67,68,13,14,15,16,117,118,119,120,121,122,123,124,113,114,115,116,77,78,79,80,85,86,87,88,69,70,71,72,81,82,83,84,73,74,75,76,33,34,35,36,21,22,23,24,37,38,39,40,89,90,91,92,29,30,31,32,109,137,110,138,111,139,112,140,105,106,107,108,41,42,43,44,45,46,47,48,93,94,95,96,25,26,27,28,101,102,103,104,97,98,99,100,125,126,127,128,129,130,131,132,49,50,51,52,53,54,55,56,133,134,135,136,17,18,19,20]},\"user_can_change\":true}]}" + "text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true}]}" }, "headersSize": -1, "bodySize": -1, diff --git a/src-ui/jest.config.js b/src-ui/jest.config.js index 14892964e..78edc0822 100644 --- a/src-ui/jest.config.js +++ b/src-ui/jest.config.js @@ -11,4 +11,5 @@ module.exports = { moduleNameMapper: { '^src/(.*)': '/src/$1', }, + workerIdleMemoryLimit: '512MB', } diff --git a/src-ui/messages.xlf b/src-ui/messages.xlf index 1d07e98e4..870f7c696 100644 --- a/src-ui/messages.xlf +++ b/src-ui/messages.xlf @@ -243,174 +243,1700 @@ 13 - - Drop files to begin upload - - src/app/app.component.html - 7 - - - - Document added + + Document was added to Paperless-ngx. src/app/app.component.ts - 90 + 83 - - src/app/app.component.ts - 100 - - - - Document was added to paperless. src/app/app.component.ts 92 - - src/app/app.component.ts - 102 - Open document src/app/app.component.ts - 93 + 85 src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html - 46 + 50 Could not add : src/app/app.component.ts - 116 + 107 - - New document detected + + Document is being processed by Paperless-ngx. src/app/app.component.ts - 131 - - - - Document is being processed by paperless. - - src/app/app.component.ts - 133 + 122 Prev src/app/app.component.ts - 138 + 128 Next src/app/app.component.ts - 139 + 129 src/app/components/document-detail/document-detail.component.html - 55 + 81 End src/app/app.component.ts - 140 + 130 The dashboard can be used to show saved views, such as an 'Inbox'. Those settings are found under Settings > Saved Views once you have created some. src/app/app.component.ts - 146 + 136 Drag-and-drop documents here to start uploading or place them in the consume folder. You can also drag-and-drop documents anywhere on all other pages of the web app. Once you do, Paperless-ngx will start training its machine learning algorithms. src/app/app.component.ts - 153 + 143 The documents list shows all of your documents and allows for filtering as well as bulk-editing. There are three different view styles: list, small cards and large cards. A list of documents currently opened for editing is shown in the sidebar. src/app/app.component.ts - 158 + 148 The filtering tools allow you to quickly find documents using various searches, dates, tags, etc. src/app/app.component.ts - 165 + 155 Any combination of filters can be saved as a 'view' which can then be displayed on the dashboard and / or sidebar. src/app/app.component.ts - 171 + 161 Tags, correspondents, document types and storage paths can all be managed using these pages. They can also be created from the document edit view. src/app/app.component.ts - 176 + 166 + + + + Manage e-mail accounts and rules for automatically importing documents. + + src/app/app.component.ts + 174 + + + + Consumption templates give you finer control over the document ingestion process. + + src/app/app.component.ts + 182 File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process. src/app/app.component.ts - 184 + 190 - - Check out the settings for various tweaks to the web app, toggle settings for saved views or setup e-mail checking. + + Check out the settings for various tweaks to the web app and toggle settings for saved views. src/app/app.component.ts - 192 + 198 Thank you! 🙏 src/app/app.component.ts - 200 + 206 There are <em>tons</em> more features and info we didn't cover here, but this should get you started. Check out the documentation or visit the project on GitHub to learn more or to report issues. src/app/app.component.ts - 202 + 208 Lastly, on behalf of every contributor to this community-supported project, thank you for using Paperless-ngx! src/app/app.component.ts - 204 + 210 - - Initiating upload... + + Logs - src/app/app.component.ts - 273 + src/app/components/admin/logs/logs.component.html + 1 + + + src/app/components/app-frame/app-frame.component.html + 225 + + + src/app/components/app-frame/app-frame.component.html + 228 + + + + Loading... + + src/app/components/admin/logs/logs.component.html + 11 + + + src/app/components/admin/logs/logs.component.html + 20 + + + src/app/components/admin/settings/settings.component.html + 312 + + + src/app/components/admin/tasks/tasks.component.html + 19 + + + src/app/components/admin/tasks/tasks.component.html + 27 + + + src/app/components/admin/users-groups/users-groups.component.html + 96 + + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 30 + + + src/app/components/common/permissions-dialog/permissions-dialog.component.html + 18 + + + src/app/components/dashboard/dashboard.component.html + 14 + + + src/app/components/dashboard/widgets/widget-frame/widget-frame.component.html + 14 + + + src/app/components/document-list/document-list.component.html + 95 + + + src/app/components/manage/mail/mail.component.html + 104 + + + src/app/components/manage/management-list/management-list.component.html + 52 + + + src/app/components/manage/management-list/management-list.component.html + 52 + + + src/app/components/manage/management-list/management-list.component.html + 52 + + + src/app/components/manage/management-list/management-list.component.html + 52 + + + + Settings + + src/app/components/admin/settings/settings.component.html + 1 + + + src/app/components/admin/settings/settings.component.html + 274 + + + src/app/components/app-frame/app-frame.component.html + 45 + + + src/app/components/app-frame/app-frame.component.html + 203 + + + src/app/components/app-frame/app-frame.component.html + 206 + + + + Start tour + + src/app/components/admin/settings/settings.component.html + 2 + + + + Open Django Admin + + src/app/components/admin/settings/settings.component.html + 4 + + + + General + + src/app/components/admin/settings/settings.component.html + 15 + + + + Appearance + + src/app/components/admin/settings/settings.component.html + 18 + + + + Display language + + src/app/components/admin/settings/settings.component.html + 22 + + + + You need to reload the page after applying a new language. + + src/app/components/admin/settings/settings.component.html + 30 + + + + Date display + + src/app/components/admin/settings/settings.component.html + 37 + + + + Date format + + src/app/components/admin/settings/settings.component.html + 50 + + + + Short: + + src/app/components/admin/settings/settings.component.html + 56,57 + + + + Medium: + + src/app/components/admin/settings/settings.component.html + 60,61 + + + + Long: + + src/app/components/admin/settings/settings.component.html + 64,65 + + + + Items per page + + src/app/components/admin/settings/settings.component.html + 72 + + + + Document editor + + src/app/components/admin/settings/settings.component.html + 88 + + + + Use PDF viewer provided by the browser + + src/app/components/admin/settings/settings.component.html + 92 + + + + This is usually faster for displaying large PDF documents, but it might not work on some browsers. + + src/app/components/admin/settings/settings.component.html + 92 + + + + Sidebar + + src/app/components/admin/settings/settings.component.html + 99 + + + + Use 'slim' sidebar (icons only) + + src/app/components/admin/settings/settings.component.html + 103 + + + + Dark mode + + src/app/components/admin/settings/settings.component.html + 110 + + + + Use system settings + + src/app/components/admin/settings/settings.component.html + 113 + + + + Enable dark mode + + src/app/components/admin/settings/settings.component.html + 114 + + + + Invert thumbnails in dark mode + + src/app/components/admin/settings/settings.component.html + 115 + + + + Theme Color + + src/app/components/admin/settings/settings.component.html + 121 + + + + Reset + + src/app/components/admin/settings/settings.component.html + 130 + + + + Update checking + + src/app/components/admin/settings/settings.component.html + 135 + + + + Update checking works by pinging the public GitHub API for the latest release to determine whether a new version is available. Actual updating of the app must still be performed manually. + + src/app/components/admin/settings/settings.component.html + 139,142 + + + + No tracking data is collected by the app in any way. + + src/app/components/admin/settings/settings.component.html + 144,146 + + + + Enable update checking + + src/app/components/admin/settings/settings.component.html + 146 + + + + Bulk editing + + src/app/components/admin/settings/settings.component.html + 150 + + + + Show confirmation dialogs + + src/app/components/admin/settings/settings.component.html + 154 + + + + Deleting documents will always ask for confirmation. + + src/app/components/admin/settings/settings.component.html + 154 + + + + Apply on close + + src/app/components/admin/settings/settings.component.html + 155 + + + + Notes + + src/app/components/admin/settings/settings.component.html + 159 + + + src/app/components/document-list/document-list.component.html + 164 + + + src/app/services/rest/document.service.ts + 25 + + + + Enable notes + + src/app/components/admin/settings/settings.component.html + 163 + + + + Permissions + + src/app/components/admin/settings/settings.component.html + 171 + + + src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html + 11 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 30 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 2 + + + src/app/components/document-detail/document-detail.component.html + 221 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 78 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 76 + + + src/app/components/manage/mail/mail.component.html + 37 + + + src/app/components/manage/mail/mail.component.html + 86 + + + src/app/components/manage/management-list/management-list.component.html + 10 + + + src/app/components/manage/management-list/management-list.component.html + 10 + + + src/app/components/manage/management-list/management-list.component.html + 10 + + + src/app/components/manage/management-list/management-list.component.html + 10 + + + + Default Permissions + + src/app/components/admin/settings/settings.component.html + 174 + + + + Settings apply to this user account for objects (Tags, Mail Rules, etc.) created via the web UI + + src/app/components/admin/settings/settings.component.html + 178,180 + + + + Default Owner + + src/app/components/admin/settings/settings.component.html + 185 + + + + Objects without an owner can be viewed and edited by all users + + src/app/components/admin/settings/settings.component.html + 189 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 25 + + + + Default View Permissions + + src/app/components/admin/settings/settings.component.html + 194 + + + + Users: + + src/app/components/admin/settings/settings.component.html + 199 + + + src/app/components/admin/settings/settings.component.html + 226 + + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 46 + + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 65 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 31 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 50 + + + + Groups: + + src/app/components/admin/settings/settings.component.html + 209 + + + src/app/components/admin/settings/settings.component.html + 236 + + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 54 + + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 73 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 39 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 58 + + + + Default Edit Permissions + + src/app/components/admin/settings/settings.component.html + 221 + + + + Edit permissions also grant viewing permissions + + src/app/components/admin/settings/settings.component.html + 245 + + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 79 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 64 + + + + Notifications + + src/app/components/admin/settings/settings.component.html + 253 + + + + Document processing + + src/app/components/admin/settings/settings.component.html + 256 + + + + Show notifications when new documents are detected + + src/app/components/admin/settings/settings.component.html + 260 + + + + Show notifications when document processing completes successfully + + src/app/components/admin/settings/settings.component.html + 261 + + + + Show notifications when document processing fails + + src/app/components/admin/settings/settings.component.html + 262 + + + + Suppress notifications on dashboard + + src/app/components/admin/settings/settings.component.html + 263 + + + + This will suppress all messages about document processing status on the dashboard. + + src/app/components/admin/settings/settings.component.html + 263 + + + + Saved views + + src/app/components/admin/settings/settings.component.html + 271 + + + src/app/components/app-frame/app-frame.component.html + 91 + + + + Show warning when closing saved views with unsaved changes + + src/app/components/admin/settings/settings.component.html + 277 + + + + Views + + src/app/components/admin/settings/settings.component.html + 281 + + + src/app/components/document-list/document-list.component.html + 64 + + + + Name + + src/app/components/admin/settings/settings.component.html + 286 + + + src/app/components/admin/tasks/tasks.component.html + 40 + + + src/app/components/admin/users-groups/users-groups.component.html + 18 + + + src/app/components/admin/users-groups/users-groups.component.html + 61 + + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 10 + + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 9 + + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 8 + + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html + 10 + + + src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html + 10 + + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 10 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 10 + + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 9 + + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 8 + + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 8 + + + src/app/components/manage/consumption-templates/consumption-templates.component.html + 14 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 14 + + + src/app/components/manage/mail/mail.component.html + 17 + + + src/app/components/manage/mail/mail.component.html + 66 + + + src/app/components/manage/management-list/management-list.component.html + 24 + + + src/app/components/manage/management-list/management-list.component.html + 24 + + + src/app/components/manage/management-list/management-list.component.html + 24 + + + src/app/components/manage/management-list/management-list.component.html + 24 + + + src/app/components/manage/management-list/management-list.component.html + 41 + + + src/app/components/manage/management-list/management-list.component.html + 41 + + + src/app/components/manage/management-list/management-list.component.html + 41 + + + src/app/components/manage/management-list/management-list.component.html + 41 + + + +  Appears on + + src/app/components/admin/settings/settings.component.html + 291,292 + + + + Show on dashboard + + src/app/components/admin/settings/settings.component.html + 294 + + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 10 + + + + Show in sidebar + + src/app/components/admin/settings/settings.component.html + 298 + + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 9 + + + + Actions + + src/app/components/admin/settings/settings.component.html + 303 + + + src/app/components/admin/tasks/tasks.component.html + 44 + + + src/app/components/admin/users-groups/users-groups.component.html + 20 + + + src/app/components/admin/users-groups/users-groups.component.html + 64 + + + src/app/components/document-detail/document-detail.component.html + 34 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 86 + + + src/app/components/manage/consumption-templates/consumption-templates.component.html + 17 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 16 + + + src/app/components/manage/mail/mail.component.html + 19 + + + src/app/components/manage/mail/mail.component.html + 68 + + + src/app/components/manage/management-list/management-list.component.html + 45 + + + src/app/components/manage/management-list/management-list.component.html + 45 + + + src/app/components/manage/management-list/management-list.component.html + 45 + + + src/app/components/manage/management-list/management-list.component.html + 45 + + + + Delete + + src/app/components/admin/settings/settings.component.html + 304 + + + src/app/components/admin/users-groups/users-groups.component.html + 39 + + + src/app/components/admin/users-groups/users-groups.component.html + 83 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 53 + + + src/app/components/common/permissions-select/permissions-select.component.html + 9 + + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.html + 33 + + + src/app/components/document-detail/document-detail.component.html + 11 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 138 + + + src/app/components/manage/consumption-templates/consumption-templates.component.html + 36 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 34 + + + src/app/components/manage/mail/mail.component.html + 42 + + + src/app/components/manage/mail/mail.component.html + 91 + + + src/app/components/manage/management-list/management-list.component.html + 80 + + + src/app/components/manage/management-list/management-list.component.html + 80 + + + src/app/components/manage/management-list/management-list.component.html + 80 + + + src/app/components/manage/management-list/management-list.component.html + 80 + + + src/app/components/manage/management-list/management-list.component.html + 98 + + + src/app/components/manage/management-list/management-list.component.html + 98 + + + src/app/components/manage/management-list/management-list.component.html + 98 + + + src/app/components/manage/management-list/management-list.component.html + 98 + + + src/app/components/manage/management-list/management-list.component.ts + 205 + + + + No saved views defined. + + src/app/components/admin/settings/settings.component.html + 308 + + + + Save + + src/app/components/admin/settings/settings.component.html + 323 + + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 90 + + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 21 + + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 14 + + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html + 23 + + + src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html + 17 + + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 35 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 42 + + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 22 + + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 24 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 36 + + + src/app/components/document-detail/document-detail.component.html + 93 + + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 19 + + + + Error retrieving users + + src/app/components/admin/settings/settings.component.ts + 152 + + + src/app/components/admin/users-groups/users-groups.component.ts + 51 + + + + Error retrieving groups + + src/app/components/admin/settings/settings.component.ts + 171 + + + src/app/components/admin/users-groups/users-groups.component.ts + 63 + + + + Saved view "" deleted. + + src/app/components/admin/settings/settings.component.ts + 370 + + + + Settings were saved successfully. + + src/app/components/admin/settings/settings.component.ts + 492 + + + + Settings were saved successfully. Reload is required to apply some changes. + + src/app/components/admin/settings/settings.component.ts + 496 + + + + Reload now + + src/app/components/admin/settings/settings.component.ts + 497 + + + + An error occurred while saving settings. + + src/app/components/admin/settings/settings.component.ts + 507 + + + src/app/components/app-frame/app-frame.component.ts + 119 + + + + Use system language + + src/app/components/admin/settings/settings.component.ts + 515 + + + + Use date format of display language + + src/app/components/admin/settings/settings.component.ts + 522 + + + + Error while storing settings on server. + + src/app/components/admin/settings/settings.component.ts + 545 + + + + File Tasks + + src/app/components/admin/tasks/tasks.component.html + 1 + + + src/app/components/app-frame/app-frame.component.html + 217 + + + + Clear selection + + src/app/components/admin/tasks/tasks.component.html + 6 + + + src/app/components/manage/management-list/management-list.component.html + 5 + + + src/app/components/manage/management-list/management-list.component.html + 5 + + + src/app/components/manage/management-list/management-list.component.html + 5 + + + src/app/components/manage/management-list/management-list.component.html + 5 + + + + + + src/app/components/admin/tasks/tasks.component.html + 11 + + + src/app/components/common/input/tags/tags.component.html + 4 + + + src/app/components/common/permissions-select/permissions-select.component.html + 22 + + + + Refresh + + src/app/components/admin/tasks/tasks.component.html + 20 + + + + Created + + src/app/components/admin/tasks/tasks.component.html + 41 + + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 13 + + + src/app/components/document-list/document-list.component.html + 185 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 62 + + + src/app/services/rest/document.service.ts + 22 + + + + Results + + src/app/components/admin/tasks/tasks.component.html + 42 + + + + Info + + src/app/components/admin/tasks/tasks.component.html + 43 + + + + click for full output + + src/app/components/admin/tasks/tasks.component.html + 66 + + + + Dismiss + + src/app/components/admin/tasks/tasks.component.html + 81 + + + src/app/components/admin/tasks/tasks.component.ts + 63 + + + + Open Document + + src/app/components/admin/tasks/tasks.component.html + 87 + + + + {VAR_PLURAL, plural, =1 {One task} other { total tasks}} + + src/app/components/admin/tasks/tasks.component.html + 103 + + + + Failed + + src/app/components/admin/tasks/tasks.component.html + 110 + + + + Complete + + src/app/components/admin/tasks/tasks.component.html + 116 + + + + Started + + src/app/components/admin/tasks/tasks.component.html + 122 + + + + Queued + + src/app/components/admin/tasks/tasks.component.html + 128 + + + + Dismiss selected + + src/app/components/admin/tasks/tasks.component.ts + 28 + + + + Dismiss all + + src/app/components/admin/tasks/tasks.component.ts + 29 + + + + Confirm Dismiss All + + src/app/components/admin/tasks/tasks.component.ts + 60 + + + + Dismiss all tasks? + + src/app/components/admin/tasks/tasks.component.ts + 61 + + + + queued + + src/app/components/admin/tasks/tasks.component.ts + 129 + + + + started + + src/app/components/admin/tasks/tasks.component.ts + 131 + + + + completed + + src/app/components/admin/tasks/tasks.component.ts + 133 + + + + failed + + src/app/components/admin/tasks/tasks.component.ts + 135 + + + + Users & Groups + + src/app/components/admin/users-groups/users-groups.component.html + 1 + + + src/app/components/app-frame/app-frame.component.html + 210 + + + src/app/components/app-frame/app-frame.component.html + 213 + + + + Users + + src/app/components/admin/users-groups/users-groups.component.html + 6 + + + src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html + 68 + + + + Add User + + src/app/components/admin/users-groups/users-groups.component.html + 11 + + + + Username + + src/app/components/admin/users-groups/users-groups.component.html + 17 + + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 16 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 10 + + + + Groups + + src/app/components/admin/users-groups/users-groups.component.html + 19 + + + src/app/components/admin/users-groups/users-groups.component.html + 50 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 27 + + + + Edit + + src/app/components/admin/users-groups/users-groups.component.html + 34 + + + src/app/components/admin/users-groups/users-groups.component.html + 78 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 46 + + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 23 + + + src/app/components/document-list/document-card-large/document-card-large.component.html + 49 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 83 + + + src/app/components/manage/consumption-templates/consumption-templates.component.html + 31 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 29 + + + src/app/components/manage/mail/mail.component.html + 32 + + + src/app/components/manage/mail/mail.component.html + 81 + + + src/app/components/manage/management-list/management-list.component.html + 79 + + + src/app/components/manage/management-list/management-list.component.html + 79 + + + src/app/components/manage/management-list/management-list.component.html + 79 + + + src/app/components/manage/management-list/management-list.component.html + 79 + + + src/app/components/manage/management-list/management-list.component.html + 93 + + + src/app/components/manage/management-list/management-list.component.html + 93 + + + src/app/components/manage/management-list/management-list.component.html + 93 + + + src/app/components/manage/management-list/management-list.component.html + 93 + + + + Add Group + + src/app/components/admin/users-groups/users-groups.component.html + 55 + + + + No groups defined + + src/app/components/admin/users-groups/users-groups.component.html + 89 + + + + Password has been changed, you will be logged out momentarily. + + src/app/components/admin/users-groups/users-groups.component.ts + 89 + + + + Saved user "". + + src/app/components/admin/users-groups/users-groups.component.ts + 96 + + + + Error saving user. + + src/app/components/admin/users-groups/users-groups.component.ts + 106 + + + + Confirm delete user account + + src/app/components/admin/users-groups/users-groups.component.ts + 114 + + + + This operation will permanently delete this user account. + + src/app/components/admin/users-groups/users-groups.component.ts + 115 + + + + This operation cannot be undone. + + src/app/components/admin/users-groups/users-groups.component.ts + 116 + + + src/app/components/admin/users-groups/users-groups.component.ts + 166 + + + src/app/components/document-detail/document-detail.component.ts + 677 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 461 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 500 + + + src/app/components/manage/consumption-templates/consumption-templates.component.ts + 91 + + + src/app/components/manage/custom-fields/custom-fields.component.ts + 76 + + + src/app/components/manage/mail/mail.component.ts + 114 + + + src/app/components/manage/mail/mail.component.ts + 173 + + + + Proceed + + src/app/components/admin/users-groups/users-groups.component.ts + 118 + + + src/app/components/admin/users-groups/users-groups.component.ts + 168 + + + src/app/components/document-detail/document-detail.component.ts + 679 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 502 + + + src/app/components/manage/consumption-templates/consumption-templates.component.ts + 93 + + + src/app/components/manage/custom-fields/custom-fields.component.ts + 78 + + + src/app/components/manage/mail/mail.component.ts + 116 + + + src/app/components/manage/mail/mail.component.ts + 175 + + + + Deleted user + + src/app/components/admin/users-groups/users-groups.component.ts + 124 + + + + Error deleting user. + + src/app/components/admin/users-groups/users-groups.component.ts + 130 + + + + Saved group "". + + src/app/components/admin/users-groups/users-groups.component.ts + 148 + + + + Error saving group. + + src/app/components/admin/users-groups/users-groups.component.ts + 156 + + + + Confirm delete user group + + src/app/components/admin/users-groups/users-groups.component.ts + 164 + + + + This operation will permanently delete this user group. + + src/app/components/admin/users-groups/users-groups.component.ts + 165 + + + + Deleted group + + src/app/components/admin/users-groups/users-groups.component.ts + 174 + + + + Error deleting group. + + src/app/components/admin/users-groups/users-groups.component.ts + 180 @@ -435,29 +1961,6 @@ 39 - - Settings - - src/app/components/app-frame/app-frame.component.html - 45 - - - src/app/components/app-frame/app-frame.component.html - 174 - - - src/app/components/app-frame/app-frame.component.html - 177 - - - src/app/components/manage/settings/settings.component.html - 1 - - - src/app/components/manage/settings/settings.component.html - 192 - - Logout @@ -465,15 +1968,30 @@ 50 + + Documentation + + src/app/components/app-frame/app-frame.component.html + 56 + + + src/app/components/app-frame/app-frame.component.html + 232 + + + src/app/components/app-frame/app-frame.component.html + 235 + + Dashboard src/app/components/app-frame/app-frame.component.html - 69 + 75 src/app/components/app-frame/app-frame.component.html - 72 + 78 src/app/components/dashboard/dashboard.component.html @@ -484,11 +2002,11 @@ Documents src/app/components/app-frame/app-frame.component.html - 76 + 82 src/app/components/app-frame/app-frame.component.html - 79 + 85 src/app/components/document-list/document-list.component.ts @@ -496,81 +2014,82 @@ src/app/components/manage/management-list/management-list.component.html - 54 + 88 src/app/components/manage/management-list/management-list.component.html - 54 + 88 src/app/components/manage/management-list/management-list.component.html - 54 + 88 src/app/components/manage/management-list/management-list.component.html - 54 - - - - Saved views - - src/app/components/app-frame/app-frame.component.html - 85 - - - src/app/components/manage/settings/settings.component.html - 189 + 88 Open documents src/app/components/app-frame/app-frame.component.html - 101 + 118 Close all src/app/components/app-frame/app-frame.component.html - 117 + 134 src/app/components/app-frame/app-frame.component.html - 120 + 137 Manage src/app/components/app-frame/app-frame.component.html - 127 + 144 Correspondents src/app/components/app-frame/app-frame.component.html - 131 + 148 src/app/components/app-frame/app-frame.component.html - 134 + 151 + + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 55 Tags src/app/components/app-frame/app-frame.component.html - 138 + 155 src/app/components/app-frame/app-frame.component.html - 141 + 158 - src/app/components/common/input/tags/tags.component.html - 2 + src/app/components/common/input/tags/tags.component.ts + 63 + + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 15 + + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 49 src/app/components/document-list/bulk-editor/bulk-editor.component.html @@ -581,156 +2100,155 @@ 26 - - Document types + + Document Types src/app/components/app-frame/app-frame.component.html - 145 + 162 src/app/components/app-frame/app-frame.component.html - 148 + 165 + + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 61 - - Storage paths + + Storage Paths src/app/components/app-frame/app-frame.component.html - 152 + 169 src/app/components/app-frame/app-frame.component.html - 155 + 172 + + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 67 - - File Tasks + + Custom Fields src/app/components/app-frame/app-frame.component.html - 159 + 176 - src/app/components/manage/tasks/tasks.component.html + src/app/components/app-frame/app-frame.component.html + 179 + + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html + 6 + + + src/app/components/manage/custom-fields/custom-fields.component.html 1 + + Consumption templates + + src/app/components/app-frame/app-frame.component.html + 183 + + + + Templates + + src/app/components/app-frame/app-frame.component.html + 186 + + + + Mail + + src/app/components/app-frame/app-frame.component.html + 190 + + + src/app/components/app-frame/app-frame.component.html + 193 + + + + Administration + + src/app/components/app-frame/app-frame.component.html + 199 + + File Tasks src/app/components/app-frame/app-frame.component.html - 163 - - - - Logs - - src/app/components/app-frame/app-frame.component.html - 167 - - - src/app/components/app-frame/app-frame.component.html - 170 - - - src/app/components/manage/logs/logs.component.html - 1 - - - - Info - - src/app/components/app-frame/app-frame.component.html - 183 - - - src/app/components/manage/tasks/tasks.component.html - 43 - - - - Documentation - - src/app/components/app-frame/app-frame.component.html - 187 - - - src/app/components/app-frame/app-frame.component.html - 190 + 221 GitHub src/app/components/app-frame/app-frame.component.html - 195 - - - src/app/components/app-frame/app-frame.component.html - 198 - - - - Suggest an idea - - src/app/components/app-frame/app-frame.component.html - 200 - - - src/app/components/app-frame/app-frame.component.html - 204 + 241 is available. src/app/components/app-frame/app-frame.component.html - 213 + 247 Click to view. src/app/components/app-frame/app-frame.component.html - 213 + 247 Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 217 + 251 How does this work? src/app/components/app-frame/app-frame.component.html - 224,226 + 258,260 Update available src/app/components/app-frame/app-frame.component.html - 235 + 269 - - An error occurred while saving settings. + + Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 104 + 247 + + + Error updating sidebar views - src/app/components/manage/settings/settings.component.ts - 648 + src/app/components/app-frame/app-frame.component.ts + 250 An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 237 + 271 @@ -774,19 +2292,73 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 324 + 323 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 364 + 363 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 402 + 401 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 440 + 439 + + + + Create New Field + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html + 25 + + + + Add + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html + 30 + + + src/app/components/common/permissions-select/permissions-select.component.html + 7 + + + + Choose field + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.ts + 52 + + + + No unused fields found + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.ts + 56 + + + + Saved field "". + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.ts + 120 + + + src/app/components/manage/custom-fields/custom-fields.component.ts + 59 + + + + Error saving field. + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.ts + 128 + + + src/app/components/manage/custom-fields/custom-fields.component.ts + 66 @@ -838,95 +2410,265 @@ 57 - - Name + + Sort order - src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html - 9 + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 13 - src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html - 10 + src/app/components/manage/consumption-templates/consumption-templates.component.html + 15 + + + Filters - src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html - 10 + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 18 + + + Process documents that match all filters specified below. - src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html - 10 + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 19 + + + + Filter sources + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 20 + + + + Filter filename + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 21 + + + + Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 21 + + + + Filter path + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 22 + + + + Apply to documents that match this path. Wildcards specified as * are allowed. Case insensitive.</a> + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 22 + + + + Filter mail rule + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 23 + + + + Apply to documents consumed via this mail rule. + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 23 + + + + Assignments + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 28 + + + + Assign title + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 33 + + + + Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#consumption-templates'>documentation</a>. + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 33 + + + + Assign tags + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 34 + + + + Assign document type + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 35 src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html - 10 + 32 + + + + Assign correspondent + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 36 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 34 + + + + Assign storage path + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 37 + + + + Assign owner + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 40 + + + + Assign view permissions + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 42 + + + + Assign edit permissions + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 61 + + + + Error + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 88 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 40 + + + src/app/components/common/toasts/toasts.component.html + 24 + + + + Cancel + + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.html + 89 + + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 20 + + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 13 + + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html + 22 + + + src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html + 16 + + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 34 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 41 src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html - 9 + 21 src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 8 + 23 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 35 + + + src/app/components/common/permissions-dialog/permissions-dialog.component.html + 20 + + + src/app/components/common/select-dialog/select-dialog.component.html + 12 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 6 src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html - 8 + 18 + + + Consume Folder - src/app/components/manage/management-list/management-list.component.html - 9 + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.ts + 25 + + + API Upload - src/app/components/manage/management-list/management-list.component.html - 9 + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.ts + 29 + + + Mail Fetch - src/app/components/manage/management-list/management-list.component.html - 9 + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.ts + 33 + + + Create new consumption template - src/app/components/manage/management-list/management-list.component.html - 9 + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.ts + 83 + + + Edit consumption template - src/app/components/manage/management-list/management-list.component.html - 19 - - - src/app/components/manage/management-list/management-list.component.html - 19 - - - src/app/components/manage/management-list/management-list.component.html - 19 - - - src/app/components/manage/management-list/management-list.component.html - 19 - - - src/app/components/manage/settings/settings.component.html - 204 - - - src/app/components/manage/settings/settings.component.html - 257 - - - src/app/components/manage/settings/settings.component.html - 294 - - - src/app/components/manage/settings/settings.component.html - 345 - - - src/app/components/manage/settings/settings.component.html - 379 - - - src/app/components/manage/tasks/tasks.component.html - 40 + src/app/components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component.ts + 87 @@ -986,104 +2728,6 @@ 15 - - Cancel - - src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html - 20 - - - src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html - 22 - - - src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html - 16 - - - src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html - 34 - - - src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html - 39 - - - src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html - 21 - - - src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 23 - - - src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html - 35 - - - src/app/components/common/permissions-dialog/permissions-dialog.component.html - 20 - - - src/app/components/common/select-dialog/select-dialog.component.html - 12 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 6 - - - src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html - 18 - - - - Save - - src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html - 21 - - - src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html - 23 - - - src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html - 17 - - - src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html - 35 - - - src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html - 40 - - - src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html - 22 - - - src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 24 - - - src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html - 36 - - - src/app/components/document-detail/document-detail.component.html - 198 - - - src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html - 19 - - - src/app/components/manage/settings/settings.component.html - 415 - - Create new correspondent @@ -1098,6 +2742,34 @@ 31 + + Data type + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 9 + + + + Data type cannot be changed after a field is created + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 10 + + + + Create new custom field + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts + 39 + + + + Edit custom field + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts + 43 + + Create new document type @@ -1116,41 +2788,14 @@ Create new item src/app/components/common/edit-dialog/edit-dialog.component.ts - 88 + 109 Edit item src/app/components/common/edit-dialog/edit-dialog.component.ts - 92 - - - - Permissions - - src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html - 11 - - - src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html - 30 - - - src/app/components/common/input/permissions/permissions-form/permissions-form.component.html - 2 - - - src/app/components/document-detail/document-detail.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 - - - src/app/components/document-list/filter-editor/filter-editor.component.html - 76 + 113 @@ -1188,21 +2833,6 @@ 13 - - Username - - src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html - 16 - - - src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html - 10 - - - src/app/components/manage/settings/settings.component.html - 344 - - Password @@ -1235,49 +2865,6 @@ 19 - - Loading... - - src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html - 30 - - - src/app/components/common/permissions-dialog/permissions-dialog.component.html - 18 - - - src/app/components/dashboard/dashboard.component.html - 10 - - - src/app/components/dashboard/widgets/widget-frame/widget-frame.component.html - 7 - - - src/app/components/document-list/document-list.component.html - 95 - - - src/app/components/manage/settings/settings.component.html - 230 - - - src/app/components/manage/settings/settings.component.html - 320 - - - src/app/components/manage/settings/settings.component.html - 406 - - - src/app/components/manage/tasks/tasks.component.html - 19 - - - src/app/components/manage/tasks/tasks.component.html - 27 - - Test @@ -1341,8 +2928,8 @@ 11 - src/app/components/manage/settings/settings.component.html - 295 + src/app/components/manage/mail/mail.component.html + 67 @@ -1464,43 +3051,32 @@ 28 - - Assign title from + + Assignments specified here will supersede any consumption templates. src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html 29 - - Assign document type + + Assign title from src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html - 31 + 30 Assign correspondent from - - src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html - 32 - - - - Assign correspondent src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html 33 - - Error + + Assign owner from rule src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html - 38 - - - src/app/services/toast.service.ts - 37 + 35 @@ -1535,81 +3111,6 @@ 46 - - Delete - - src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts - 53 - - - src/app/components/common/permissions-select/permissions-select.component.html - 9 - - - src/app/components/document-detail/document-detail.component.html - 11 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 138 - - - src/app/components/manage/management-list/management-list.component.html - 46 - - - src/app/components/manage/management-list/management-list.component.html - 46 - - - src/app/components/manage/management-list/management-list.component.html - 46 - - - src/app/components/manage/management-list/management-list.component.html - 46 - - - src/app/components/manage/management-list/management-list.component.html - 64 - - - src/app/components/manage/management-list/management-list.component.html - 64 - - - src/app/components/manage/management-list/management-list.component.html - 64 - - - src/app/components/manage/management-list/management-list.component.html - 64 - - - src/app/components/manage/management-list/management-list.component.ts - 194 - - - src/app/components/manage/settings/settings.component.html - 222 - - - src/app/components/manage/settings/settings.component.html - 270 - - - src/app/components/manage/settings/settings.component.html - 307 - - - src/app/components/manage/settings/settings.component.html - 359 - - - src/app/components/manage/settings/settings.component.html - 394 - - Move to specified folder @@ -1652,46 +3153,53 @@ 80 + + Do not assign title from this rule + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 84 + + Do not assign a correspondent src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts - 87 + 91 Use mail address src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts - 91 + 95 Use name (or mail address if not available) src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts - 95 + 99 Use correspondent selected below src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts - 99 + 103 Create new mail rule src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts - 141 + 145 Edit mail rule src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts - 145 + 149 @@ -1821,21 +3329,6 @@ 23 - - Groups - - src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html - 27 - - - src/app/components/manage/settings/settings.component.html - 346 - - - src/app/components/manage/settings/settings.component.html - 367 - - Create new user account @@ -1916,26 +3409,53 @@ Filter drop down element to filter for documents with no correspondent/type/tag assigned + + Remove + + src/app/components/common/input/check/check.component.html + 8 + + + src/app/components/common/input/date/date.component.html + 8 + + + src/app/components/common/input/number/number.component.html + 8 + + + src/app/components/common/input/select/select.component.html + 8 + + + src/app/components/common/input/text/text.component.html + 8 + + + src/app/components/common/input/url/url.component.html + 8 + + Invalid date. src/app/components/common/input/date/date.component.html - 18 + 27 Suggestions: src/app/components/common/input/date/date.component.html - 21 + 30 src/app/components/common/input/select/select.component.html - 37 + 47 src/app/components/common/input/tags/tags.component.html - 47 + 46 @@ -1946,7 +3466,7 @@ src/app/components/common/input/select/select.component.ts - 149 + 155 @@ -1963,13 +3483,6 @@ 19 - - Objects without an owner can be viewed and edited by all users - - src/app/components/common/input/permissions/permissions-form/permissions-form.component.html - 25 - - View @@ -1985,107 +3498,11 @@ 56 - - Users: - - src/app/components/common/input/permissions/permissions-form/permissions-form.component.html - 31 - - - src/app/components/common/input/permissions/permissions-form/permissions-form.component.html - 50 - - - - Groups: - - src/app/components/common/input/permissions/permissions-form/permissions-form.component.html - 39 - - - src/app/components/common/input/permissions/permissions-form/permissions-form.component.html - 58 - - - - Edit - - src/app/components/common/input/permissions/permissions-form/permissions-form.component.html - 46 - - - src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html - 17 - - - src/app/components/document-list/document-card-large/document-card-large.component.html - 49 - - - src/app/components/document-list/document-card-small/document-card-small.component.html - 83 - - - src/app/components/manage/management-list/management-list.component.html - 45 - - - src/app/components/manage/management-list/management-list.component.html - 45 - - - src/app/components/manage/management-list/management-list.component.html - 45 - - - src/app/components/manage/management-list/management-list.component.html - 45 - - - src/app/components/manage/management-list/management-list.component.html - 59 - - - src/app/components/manage/management-list/management-list.component.html - 59 - - - src/app/components/manage/management-list/management-list.component.html - 59 - - - src/app/components/manage/management-list/management-list.component.html - 59 - - - src/app/components/manage/settings/settings.component.html - 269 - - - src/app/components/manage/settings/settings.component.html - 306 - - - src/app/components/manage/settings/settings.component.html - 358 - - - src/app/components/manage/settings/settings.component.html - 393 - - - - Edit permissions also grant viewing permissions - - src/app/components/common/input/permissions/permissions-form/permissions-form.component.html - 64 - - Add item src/app/components/common/input/select/select.component.html - 12 + 21 Used for both types, correspondents, storage paths @@ -2108,32 +3525,53 @@ 80 + + No items found + + src/app/components/common/input/select/select.component.ts + 92 + + Add tag src/app/components/common/input/tags/tags.component.html - 12 + 15 Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 39 + 38 - - Set Permissions + + Open link + + src/app/components/common/input/url/url.component.html + 14 + + + + Set permissions src/app/components/common/permissions-dialog/permissions-dialog.component.ts - 26 + 28 + + + + Edit permissions for + + src/app/components/common/permissions-dialog/permissions-dialog.component.ts + 33 Note that permissions set here will override any existing permissions src/app/components/common/permissions-dialog/permissions-dialog.component.ts - 43 + 62 @@ -2157,17 +3595,6 @@ 48 - - Users - - src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html - 68 - - - src/app/components/manage/settings/settings.component.html - 332 - - Hide unowned @@ -2182,13 +3609,6 @@ 5 - - Add - - src/app/components/common/permissions-select/permissions-select.component.html - 7 - - Change @@ -2196,17 +3616,6 @@ 8 - - - - src/app/components/common/permissions-select/permissions-select.component.html - 22 - - - src/app/components/manage/tasks/tasks.component.html - 11 - - Inherited from group @@ -2236,93 +3645,245 @@ 20 + + Share Links + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.html + 6 + + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.ts + 26 + + + + No existing links + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.html + 10,12 + + + + Copy + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.html + 23 + + + + Share + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.html + 28 + + + + Copied! + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.html + 36 + + + + Share archive version + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.html + 42 + + + + Expires + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.html + 46 + + + + Create + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.html + 55 + + + + 1 day + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.ts + 19 + + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.ts + 90 + + + + 7 days + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.ts + 20 + + + + 30 days + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.ts + 21 + + + + Never + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.ts + 22 + + + + Error retrieving links + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.ts + 74 + + + + days + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.ts + 90 + + + + Error deleting link + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.ts + 117 + + + + Error creating link + + src/app/components/common/share-links-dropdown/share-links-dropdown.component.ts + 145 + + + + Status + + src/app/components/common/toasts/toasts.component.html + 22 + + + + Copy Raw Error + + src/app/components/common/toasts/toasts.component.html + 33 + + Hello , welcome to Paperless-ngx src/app/components/dashboard/dashboard.component.ts - 23 + 38 Welcome to Paperless-ngx src/app/components/dashboard/dashboard.component.ts - 25 + 40 + + + + Dashboard updated + + src/app/components/dashboard/dashboard.component.ts + 71 + + + + Error updating dashboard + + src/app/components/dashboard/dashboard.component.ts + 74 Show all src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html - 3 + 8 src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html - 27 - - - - Created - - src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html - 9 - - - src/app/components/document-list/document-list.component.html - 184 - - - src/app/components/document-list/filter-editor/filter-editor.component.html - 62 - - - src/app/components/manage/tasks/tasks.component.html - 41 - - - src/app/services/rest/document.service.ts - 22 + 29 Title src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html - 10 + 14 src/app/components/document-detail/document-detail.component.html - 75 + 103 src/app/components/document-list/document-list.component.html - 149 + 150 src/app/components/document-list/filter-editor/filter-editor.component.ts - 201 + 203 src/app/services/rest/document.service.ts 20 + + Correspondent + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 16 + + + src/app/components/document-detail/document-detail.component.html + 107 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 38 + + + src/app/components/document-list/document-list.component.html + 142 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 35 + + + src/app/services/rest/document.service.ts + 19 + + View Preview src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html - 19 + 31 Download src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html - 29 + 41 src/app/components/document-detail/document-detail.component.html - 19 + 18 src/app/components/document-list/bulk-editor/bulk-editor.component.html @@ -2337,6 +3898,13 @@ 99 + + No documents + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 53 + + Statistics @@ -2383,7 +3951,7 @@ Other src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.ts - 55 + 65 @@ -2393,33 +3961,33 @@ 1 - - Dismiss completed + + Drop documents anywhere or src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html 4 - This button dismisses all status messages about processed documents on the dashboard (failed and successful) - - - Drop documents here or - - src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html - 13 - Browse files + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html + 5 + + + + Dismiss completed src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html 13 + This button dismisses all status messages about processed documents on the dashboard (failed and successful) {VAR_PLURAL, plural, =1 {One more document} other { more documents}} src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html - 25 + 27 This is shown as a summary line when there are more than 5 document in the processing pipeline. @@ -2427,32 +3995,32 @@ Processing: src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts - 39 + 44 Failed: src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts - 42 + 47 Added: src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts - 45 + 50 , src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts - 48 + 53 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 269 + 268 this string is used to separate processing, failed and added on the file upload widget @@ -2520,14 +4088,14 @@ Download original src/app/components/document-detail/document-detail.component.html - 25 + 24 Redo OCR src/app/components/document-detail/document-detail.component.html - 34 + 40 src/app/components/document-list/bulk-editor/bulk-editor.component.html @@ -2538,7 +4106,7 @@ More like this src/app/components/document-detail/document-detail.component.html - 40 + 46 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -2549,7 +4117,7 @@ Close src/app/components/document-detail/document-detail.component.html - 43 + 71 src/app/guards/dirty-saved-view.guard.ts @@ -2560,58 +4128,56 @@ Previous src/app/components/document-detail/document-detail.component.html - 50 + 76 + + + + Discard + + src/app/components/document-detail/document-detail.component.html + 89 + + + + Save & next + + src/app/components/document-detail/document-detail.component.html + 91 + + + + Save & close + + src/app/components/document-detail/document-detail.component.html + 92 Details src/app/components/document-detail/document-detail.component.html - 72 + 100 Archive serial number src/app/components/document-detail/document-detail.component.html - 76 + 104 Date created src/app/components/document-detail/document-detail.component.html - 77 - - - - Correspondent - - src/app/components/document-detail/document-detail.component.html - 79 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 38 - - - src/app/components/document-list/document-list.component.html - 142 - - - src/app/components/document-list/filter-editor/filter-editor.component.html - 35 - - - src/app/services/rest/document.service.ts - 19 + 105 Document type src/app/components/document-detail/document-detail.component.html - 81 + 109 src/app/components/document-list/bulk-editor/bulk-editor.component.html @@ -2619,7 +4185,7 @@ src/app/components/document-list/document-list.component.html - 170 + 171 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -2634,7 +4200,7 @@ Storage path src/app/components/document-detail/document-detail.component.html - 83 + 111 src/app/components/document-list/bulk-editor/bulk-editor.component.html @@ -2642,7 +4208,7 @@ src/app/components/document-list/document-list.component.html - 177 + 178 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -2653,21 +4219,21 @@ Default src/app/components/document-detail/document-detail.component.html - 84 + 112 Content src/app/components/document-detail/document-detail.component.html - 91 + 130 Metadata src/app/components/document-detail/document-detail.component.html - 100 + 139 src/app/components/document-detail/metadata-collapse/metadata-collapse.component.ts @@ -2678,297 +4244,216 @@ Date modified src/app/components/document-detail/document-detail.component.html - 106 + 145 Date added src/app/components/document-detail/document-detail.component.html - 110 + 149 Media filename src/app/components/document-detail/document-detail.component.html - 114 + 153 Original filename src/app/components/document-detail/document-detail.component.html - 118 + 157 Original MD5 checksum src/app/components/document-detail/document-detail.component.html - 122 + 161 Original file size src/app/components/document-detail/document-detail.component.html - 126 + 165 Original mime type src/app/components/document-detail/document-detail.component.html - 130 + 169 Archive MD5 checksum src/app/components/document-detail/document-detail.component.html - 134 + 173 Archive file size src/app/components/document-detail/document-detail.component.html - 138 + 177 Original document metadata src/app/components/document-detail/document-detail.component.html - 144 + 183 Archived document metadata src/app/components/document-detail/document-detail.component.html - 145 + 184 Preview src/app/components/document-detail/document-detail.component.html - 151 + 190 Enter Password src/app/components/document-detail/document-detail.component.html - 167 + 206 src/app/components/document-detail/document-detail.component.html - 218 + 249 Notes src/app/components/document-detail/document-detail.component.html - 175,176 - - - - Discard - - src/app/components/document-detail/document-detail.component.html - 194 - - - - Save & next - - src/app/components/document-detail/document-detail.component.html - 196 - - - - Save & close - - src/app/components/document-detail/document-detail.component.html - 197 + 214,215 An error occurred loading content: src/app/components/document-detail/document-detail.component.ts - 252,254 + 265,267 Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 397 + 413 Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 419 + 434 Document saved successfully. src/app/components/document-detail/document-detail.component.ts - 533 + 552 src/app/components/document-detail/document-detail.component.ts - 541 + 561 Error saving document src/app/components/document-detail/document-detail.component.ts - 546 + 565 src/app/components/document-detail/document-detail.component.ts - 591 + 606 Confirm delete src/app/components/document-detail/document-detail.component.ts - 620 + 632 src/app/components/manage/management-list/management-list.component.ts - 190 + 201 Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 621 + 633 The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 622 + 634 Delete document src/app/components/document-detail/document-detail.component.ts - 624 + 636 - - Error deleting document: + + Error deleting document src/app/components/document-detail/document-detail.component.ts - 644,646 + 655 Redo OCR confirm src/app/components/document-detail/document-detail.component.ts - 667 + 675 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 499 + 498 This operation will permanently redo OCR for this document. src/app/components/document-detail/document-detail.component.ts - 668 - - - - This operation cannot be undone. - - src/app/components/document-detail/document-detail.component.ts - 669 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 462 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 501 - - - src/app/components/manage/settings/settings.component.ts - 759 - - - src/app/components/manage/settings/settings.component.ts - 819 - - - src/app/components/manage/settings/settings.component.ts - 886 - - - src/app/components/manage/settings/settings.component.ts - 949 - - - - Proceed - - src/app/components/document-detail/document-detail.component.ts - 671 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 503 - - - src/app/components/manage/settings/settings.component.ts - 761 - - - src/app/components/manage/settings/settings.component.ts - 821 - - - src/app/components/manage/settings/settings.component.ts - 888 - - - src/app/components/manage/settings/settings.component.ts - 951 + 676 Redo OCR operation will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 679 + 687 - - Error executing operation: + + Error executing operation src/app/components/document-detail/document-detail.component.ts - 690,692 + 698 @@ -3029,53 +4514,6 @@ 52 - - Actions - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 - - - src/app/components/manage/management-list/management-list.component.html - 23 - - - src/app/components/manage/management-list/management-list.component.html - 23 - - - src/app/components/manage/management-list/management-list.component.html - 23 - - - src/app/components/manage/management-list/management-list.component.html - 23 - - - src/app/components/manage/settings/settings.component.html - 221 - - - src/app/components/manage/settings/settings.component.html - 259 - - - src/app/components/manage/settings/settings.component.html - 296 - - - src/app/components/manage/settings/settings.component.html - 347 - - - src/app/components/manage/settings/settings.component.html - 382 - - - src/app/components/manage/tasks/tasks.component.html - 44 - - Include: @@ -3104,31 +4542,29 @@ 125,127 - - Error executing bulk operation: + + Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 185,187 + 185 "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 261 + 260 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 267 + 266 "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 263 + 262 This is for messages like 'modify "tag1" and "tag2"' @@ -3136,7 +4572,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 271,273 + 270,272 this is for messages like 'modify "tag1", "tag2" and "tag3"' @@ -3144,14 +4580,14 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 288 + 287 This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 294 + 293 @@ -3160,14 +4596,14 @@ )"/> to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 299,301 + 298,300 This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 307 + 306 @@ -3176,7 +4612,7 @@ )"/> from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 312,314 + 311,313 @@ -3187,98 +4623,98 @@ )"/> on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 316,320 + 315,319 Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 357 + 356 This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 359 + 358 This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 361 + 360 Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 395 + 394 This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 397 + 396 This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 399 + 398 Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 433 + 432 This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 435 + 434 This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 437 + 436 Delete confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 460 + 459 This operation will permanently delete selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 461 + 460 Delete document(s) src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 464 + 463 This operation will permanently redo OCR for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 500 + 499 @@ -3289,7 +4725,7 @@ src/app/components/document-list/document-list.component.html - 206 + 207 @@ -3300,7 +4736,7 @@ src/app/components/document-list/document-list.component.html - 211 + 212 @@ -3325,7 +4761,7 @@ src/app/components/document-list/document-list.component.html - 227 + 228 @@ -3336,7 +4772,7 @@ src/app/components/document-list/document-list.component.html - 232 + 233 @@ -3435,17 +4871,6 @@ 38 - - Views - - src/app/components/document-list/document-list.component.html - 64 - - - src/app/components/manage/settings/settings.component.html - 199 - - Save "" @@ -3514,7 +4939,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 206 + 208 src/app/services/rest/document.service.ts @@ -3539,14 +4964,14 @@ Sort by owner src/app/components/document-list/document-list.component.html - 152 + 153 Owner src/app/components/document-list/document-list.component.html - 156 + 157 src/app/services/rest/document.service.ts @@ -3557,57 +4982,42 @@ Sort by notes src/app/components/document-list/document-list.component.html - 159 - - - - Notes - - src/app/components/document-list/document-list.component.html - 163 - - - src/app/components/manage/settings/settings.component.html - 159 - - - src/app/services/rest/document.service.ts - 25 + 160 Sort by document type src/app/components/document-list/document-list.component.html - 166 + 167 Sort by storage path src/app/components/document-list/document-list.component.html - 173 + 174 Sort by created date src/app/components/document-list/document-list.component.html - 180 + 181 Sort by added date src/app/components/document-list/document-list.component.html - 187 + 188 Added src/app/components/document-list/document-list.component.html - 191 + 192 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3622,7 +5032,7 @@ Edit document src/app/components/document-list/document-list.component.html - 210 + 211 @@ -3645,14 +5055,14 @@ )?.name"/> src/app/components/document-list/filter-editor/filter-editor.component.ts - 118,120 + 120,122 Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 122 + 124 @@ -3661,14 +5071,14 @@ )?.name"/> src/app/components/document-list/filter-editor/filter-editor.component.ts - 128,130 + 130,132 Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 132 + 134 @@ -3677,14 +5087,14 @@ )?.name"/> src/app/components/document-list/filter-editor/filter-editor.component.ts - 138,140 + 140,142 Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 142 + 144 @@ -3692,105 +5102,112 @@ ?.name"/> src/app/components/document-list/filter-editor/filter-editor.component.ts - 146,147 + 148,149 Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 151 + 153 Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 155 + 157 ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 158 + 160 Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 161 + 163 Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 164 + 166 Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 167 + 169 Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 204 + 206 + + + + Custom fields + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 211 Advanced search src/app/components/document-list/filter-editor/filter-editor.component.ts - 209 + 215 More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 221 equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 234 + 240 is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 238 + 244 is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 242 + 248 greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 246 + 252 less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 250 + 256 @@ -3800,28 +5217,6 @@ 3 - - Show in sidebar - - src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html - 9 - - - src/app/components/manage/settings/settings.component.html - 216 - - - - Show on dashboard - - src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html - 10 - - - src/app/components/manage/settings/settings.component.html - 212 - - Filter rules error occurred while saving this view @@ -3872,14 +5267,98 @@ Error saving note src/app/components/document-notes/document-notes.component.ts - 67 + 66 - - Error deleting note: + + Error deleting note src/app/components/document-notes/document-notes.component.ts - 85 + 80 + + + + Drop files to begin upload + + src/app/components/file-drop/file-drop.component.html + 6 + + + + Initiating upload... + + src/app/components/file-drop/file-drop.component.ts + 87 + + + + Consumption Templates + + src/app/components/manage/consumption-templates/consumption-templates.component.html + 1 + + + + Add Template + + src/app/components/manage/consumption-templates/consumption-templates.component.html + 6 + + + + Document Sources + + src/app/components/manage/consumption-templates/consumption-templates.component.html + 16 + + + + No templates defined. + + src/app/components/manage/consumption-templates/consumption-templates.component.html + 42 + + + + Saved template "". + + src/app/components/manage/consumption-templates/consumption-templates.component.ts + 73 + + + + Error saving template. + + src/app/components/manage/consumption-templates/consumption-templates.component.ts + 81 + + + + Confirm delete template + + src/app/components/manage/consumption-templates/consumption-templates.component.ts + 89 + + + + This operation will permanently delete this template. + + src/app/components/manage/consumption-templates/consumption-templates.component.ts + 90 + + + + Deleted template + + src/app/components/manage/consumption-templates/consumption-templates.component.ts + 99 + + + + Error deleting template. + + src/app/components/manage/consumption-templates/consumption-templates.component.ts + 104 @@ -3910,6 +5389,55 @@ 67 + + Add Field + + src/app/components/manage/custom-fields/custom-fields.component.html + 6 + + + + Data Type + + src/app/components/manage/custom-fields/custom-fields.component.html + 15 + + + + No fields defined. + + src/app/components/manage/custom-fields/custom-fields.component.html + 40 + + + + Confirm delete field + + src/app/components/manage/custom-fields/custom-fields.component.ts + 74 + + + + This operation will permanently delete this field. + + src/app/components/manage/custom-fields/custom-fields.component.ts + 75 + + + + Deleted field + + src/app/components/manage/custom-fields/custom-fields.component.ts + 84 + + + + Error deleting field. + + src/app/components/manage/custom-fields/custom-fields.component.ts + 89 + + document type @@ -3931,125 +5459,297 @@ 44 - - Create + + Mail Settings + + src/app/components/manage/mail/mail.component.html + 1 + + + + Mail accounts + + src/app/components/manage/mail/mail.component.html + 6 + + + + Add Account + + src/app/components/manage/mail/mail.component.html + 11 + + + + Server + + src/app/components/manage/mail/mail.component.html + 18 + + + + No mail accounts defined. + + src/app/components/manage/mail/mail.component.html + 48 + + + + Mail rules + + src/app/components/manage/mail/mail.component.html + 55 + + + + Add Rule + + src/app/components/manage/mail/mail.component.html + 60 + + + + No mail rules defined. + + src/app/components/manage/mail/mail.component.html + 97 + + + + Error retrieving mail accounts + + src/app/components/manage/mail/mail.component.ts + 56 + + + + Error retrieving mail rules + + src/app/components/manage/mail/mail.component.ts + 70 + + + + Saved account "". + + src/app/components/manage/mail/mail.component.ts + 92 + + + + Error saving account. + + src/app/components/manage/mail/mail.component.ts + 104 + + + + Confirm delete mail account + + src/app/components/manage/mail/mail.component.ts + 112 + + + + This operation will permanently delete this mail account. + + src/app/components/manage/mail/mail.component.ts + 113 + + + + Deleted mail account + + src/app/components/manage/mail/mail.component.ts + 122 + + + + Error deleting mail account. + + src/app/components/manage/mail/mail.component.ts + 132 + + + + Saved rule "". + + src/app/components/manage/mail/mail.component.ts + 152 + + + + Error saving rule. + + src/app/components/manage/mail/mail.component.ts + 163 + + + + Confirm delete mail rule + + src/app/components/manage/mail/mail.component.ts + 171 + + + + This operation will permanently delete this mail rule. + + src/app/components/manage/mail/mail.component.ts + 172 + + + + Deleted mail rule + + src/app/components/manage/mail/mail.component.ts + 181 + + + + Error deleting mail rule. + + src/app/components/manage/mail/mail.component.ts + 190 + + + + Permissions updated + + src/app/components/manage/mail/mail.component.ts + 212 + + + + Error updating permissions + + src/app/components/manage/mail/mail.component.ts + 216 + + + src/app/components/manage/management-list/management-list.component.ts + 300 + + + + Create src/app/components/manage/management-list/management-list.component.html - 2 + 13,17 src/app/components/manage/management-list/management-list.component.html - 2 + 13,17 src/app/components/manage/management-list/management-list.component.html - 2 + 13,17 src/app/components/manage/management-list/management-list.component.html - 2 + 13,17 Filter by: src/app/components/manage/management-list/management-list.component.html - 8 + 23 src/app/components/manage/management-list/management-list.component.html - 8 + 23 src/app/components/manage/management-list/management-list.component.html - 8 + 23 src/app/components/manage/management-list/management-list.component.html - 8 + 23 Matching src/app/components/manage/management-list/management-list.component.html - 20 + 42 src/app/components/manage/management-list/management-list.component.html - 20 + 42 src/app/components/manage/management-list/management-list.component.html - 20 + 42 src/app/components/manage/management-list/management-list.component.html - 20 + 42 Document count src/app/components/manage/management-list/management-list.component.html - 21 + 43 src/app/components/manage/management-list/management-list.component.html - 21 + 43 src/app/components/manage/management-list/management-list.component.html - 21 + 43 src/app/components/manage/management-list/management-list.component.html - 21 + 43 Filter Documents src/app/components/manage/management-list/management-list.component.html - 44 + 78 src/app/components/manage/management-list/management-list.component.html - 44 + 78 src/app/components/manage/management-list/management-list.component.html - 44 + 78 src/app/components/manage/management-list/management-list.component.html - 44 + 78 {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 73 + 109 src/app/components/manage/management-list/management-list.component.html - 73 + 109 src/app/components/manage/management-list/management-list.component.html - 73 + 109 src/app/components/manage/management-list/management-list.component.html - 73 + 109 Automatic src/app/components/manage/management-list/management-list.component.ts - 103 + 113 src/app/data/matching-model.ts @@ -4060,7 +5760,7 @@ None src/app/components/manage/management-list/management-list.component.ts - 105 + 115 src/app/data/matching-model.ts @@ -4071,681 +5771,49 @@ Successfully created . src/app/components/manage/management-list/management-list.component.ts - 145 + 158 Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 150 + 163 Successfully updated . src/app/components/manage/management-list/management-list.component.ts - 166 + 178 Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 171 + 183 Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 192 + 203 - - Error while deleting element: + + Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 205,207 + 219 - - Start tour + + Permissions updated successfully - src/app/components/manage/settings/settings.component.html - 2 - - - - Open Django Admin - - src/app/components/manage/settings/settings.component.html - 4 - - - - General - - src/app/components/manage/settings/settings.component.html - 15 - - - - Appearance - - src/app/components/manage/settings/settings.component.html - 18 - - - - Display language - - src/app/components/manage/settings/settings.component.html - 22 - - - - You need to reload the page after applying a new language. - - src/app/components/manage/settings/settings.component.html - 30 - - - - Date display - - src/app/components/manage/settings/settings.component.html - 37 - - - - Date format - - src/app/components/manage/settings/settings.component.html - 50 - - - - Short: - - src/app/components/manage/settings/settings.component.html - 56,57 - - - - Medium: - - src/app/components/manage/settings/settings.component.html - 60,61 - - - - Long: - - src/app/components/manage/settings/settings.component.html - 64,65 - - - - Items per page - - src/app/components/manage/settings/settings.component.html - 72 - - - - Document editor - - src/app/components/manage/settings/settings.component.html - 88 - - - - Use PDF viewer provided by the browser - - src/app/components/manage/settings/settings.component.html - 92 - - - - This is usually faster for displaying large PDF documents, but it might not work on some browsers. - - src/app/components/manage/settings/settings.component.html - 92 - - - - Sidebar - - src/app/components/manage/settings/settings.component.html - 99 - - - - Use 'slim' sidebar (icons only) - - src/app/components/manage/settings/settings.component.html - 103 - - - - Dark mode - - src/app/components/manage/settings/settings.component.html - 110 - - - - Use system settings - - src/app/components/manage/settings/settings.component.html - 113 - - - - Enable dark mode - - src/app/components/manage/settings/settings.component.html - 114 - - - - Invert thumbnails in dark mode - - src/app/components/manage/settings/settings.component.html - 115 - - - - Theme Color - - src/app/components/manage/settings/settings.component.html - 121 - - - - Reset - - src/app/components/manage/settings/settings.component.html - 130 - - - - Update checking - - src/app/components/manage/settings/settings.component.html - 135 - - - - Update checking works by pinging the public Github API for the latest release to determine whether a new version is available. Actual updating of the app must still be performed manually. - - src/app/components/manage/settings/settings.component.html - 139,142 - - - - No tracking data is collected by the app in any way. - - src/app/components/manage/settings/settings.component.html - 144,146 - - - - Enable update checking - - src/app/components/manage/settings/settings.component.html - 146 - - - - Note that for users of third-party containers e.g. linuxserver.io this notification may be 'ahead' of the current third-party release. - - src/app/components/manage/settings/settings.component.html - 146 - - - - Bulk editing - - src/app/components/manage/settings/settings.component.html - 150 - - - - Show confirmation dialogs - - src/app/components/manage/settings/settings.component.html - 154 - - - - Deleting documents will always ask for confirmation. - - src/app/components/manage/settings/settings.component.html - 154 - - - - Apply on close - - src/app/components/manage/settings/settings.component.html - 155 - - - - Enable notes - - src/app/components/manage/settings/settings.component.html - 163 - - - - Notifications - - src/app/components/manage/settings/settings.component.html - 171 - - - - Document processing - - src/app/components/manage/settings/settings.component.html - 174 - - - - Show notifications when new documents are detected - - src/app/components/manage/settings/settings.component.html - 178 - - - - Show notifications when document processing completes successfully - - src/app/components/manage/settings/settings.component.html - 179 - - - - Show notifications when document processing fails - - src/app/components/manage/settings/settings.component.html - 180 - - - - Suppress notifications on dashboard - - src/app/components/manage/settings/settings.component.html - 181 - - - - This will suppress all messages about document processing status on the dashboard. - - src/app/components/manage/settings/settings.component.html - 181 - - - - Show warning when closing saved views with unsaved changes - - src/app/components/manage/settings/settings.component.html - 195 - - - -  Appears on - - src/app/components/manage/settings/settings.component.html - 209,210 - - - - No saved views defined. - - src/app/components/manage/settings/settings.component.html - 226 - - - - Mail - - src/app/components/manage/settings/settings.component.html - 239 - - - - Mail accounts - - src/app/components/manage/settings/settings.component.html - 245 - - - - Add Account - - src/app/components/manage/settings/settings.component.html - 250 - - - - Server - - src/app/components/manage/settings/settings.component.html - 258 - - - - No mail accounts defined. - - src/app/components/manage/settings/settings.component.html - 276 - - - - Mail rules - - src/app/components/manage/settings/settings.component.html - 282 - - - - Add Rule - - src/app/components/manage/settings/settings.component.html - 287 - - - - No mail rules defined. - - src/app/components/manage/settings/settings.component.html - 313 - - - - Users & Groups - - src/app/components/manage/settings/settings.component.html - 327 - - - - Add User - - src/app/components/manage/settings/settings.component.html - 337 - - - - Add Group - - src/app/components/manage/settings/settings.component.html - 372 - - - - Error retrieving groups - - src/app/components/manage/settings/settings.component.ts - 278 - - - - Error retrieving users - - src/app/components/manage/settings/settings.component.ts - 287 - - - - Error retrieving mail rules - - src/app/components/manage/settings/settings.component.ts - 314 - - - - Error retrieving mail accounts - - src/app/components/manage/settings/settings.component.ts - 323 - - - - Saved view "" deleted. - - src/app/components/manage/settings/settings.component.ts - 530 - - - - Settings saved - - src/app/components/manage/settings/settings.component.ts - 632 - - - - Settings were saved successfully. - - src/app/components/manage/settings/settings.component.ts - 633 - - - - Settings were saved successfully. Reload is required to apply some changes. - - src/app/components/manage/settings/settings.component.ts - 637 - - - - Reload now - - src/app/components/manage/settings/settings.component.ts - 638 - - - - Use system language - - src/app/components/manage/settings/settings.component.ts - 657 - - - - Use date format of display language - - src/app/components/manage/settings/settings.component.ts - 664 - - - - Error while storing settings on server. - - src/app/components/manage/settings/settings.component.ts - 684 - - - - Password has been changed, you will be logged out momentarily. - - src/app/components/manage/settings/settings.component.ts - 727 - - - - Saved user "". - - src/app/components/manage/settings/settings.component.ts - 734 - - - - Error saving user. - - src/app/components/manage/settings/settings.component.ts - 746 - - - - Confirm delete user account - - src/app/components/manage/settings/settings.component.ts - 757 - - - - This operation will permanently delete this user account. - - src/app/components/manage/settings/settings.component.ts - 758 - - - - Deleted user - - src/app/components/manage/settings/settings.component.ts - 767 - - - - Error deleting user. - - src/app/components/manage/settings/settings.component.ts - 775 - - - - Saved group "". - - src/app/components/manage/settings/settings.component.ts - 796 - - - - Error saving group. - - src/app/components/manage/settings/settings.component.ts - 806 - - - - Confirm delete user group - - src/app/components/manage/settings/settings.component.ts - 817 - - - - This operation will permanently delete this user group. - - src/app/components/manage/settings/settings.component.ts - 818 - - - - Deleted group - - src/app/components/manage/settings/settings.component.ts - 827 - - - - Error deleting group. - - src/app/components/manage/settings/settings.component.ts - 835 - - - - Saved account "". - - src/app/components/manage/settings/settings.component.ts - 861 - - - - Error saving account. - - src/app/components/manage/settings/settings.component.ts - 873 - - - - Confirm delete mail account - - src/app/components/manage/settings/settings.component.ts - 884 - - - - This operation will permanently delete this mail account. - - src/app/components/manage/settings/settings.component.ts - 885 - - - - Deleted mail account - - src/app/components/manage/settings/settings.component.ts - 894 - - - - Error deleting mail account. - - src/app/components/manage/settings/settings.component.ts - 903 - - - - Saved rule "". - - src/app/components/manage/settings/settings.component.ts - 924 - - - - Error saving rule. - - src/app/components/manage/settings/settings.component.ts - 936 - - - - Confirm delete mail rule - - src/app/components/manage/settings/settings.component.ts - 947 - - - - This operation will permanently delete this mail rule. - - src/app/components/manage/settings/settings.component.ts - 948 - - - - Deleted mail rule - - src/app/components/manage/settings/settings.component.ts - 957 - - - - Error deleting mail rule. - - src/app/components/manage/settings/settings.component.ts - 966 + src/app/components/manage/management-list/management-list.component.ts + 293 @@ -4790,147 +5858,6 @@ 53 - - Clear selection - - src/app/components/manage/tasks/tasks.component.html - 6 - - - - Refresh - - src/app/components/manage/tasks/tasks.component.html - 20 - - - - Results - - src/app/components/manage/tasks/tasks.component.html - 42 - - - - click for full output - - src/app/components/manage/tasks/tasks.component.html - 66 - - - - Dismiss - - src/app/components/manage/tasks/tasks.component.html - 81 - - - src/app/components/manage/tasks/tasks.component.ts - 65 - - - - Open Document - - src/app/components/manage/tasks/tasks.component.html - 87 - - - - {VAR_PLURAL, plural, =1 {One task} other { total tasks}} - - src/app/components/manage/tasks/tasks.component.html - 103 - - - - Failed - - src/app/components/manage/tasks/tasks.component.html - 110 - - - - Complete - - src/app/components/manage/tasks/tasks.component.html - 116 - - - - Started - - src/app/components/manage/tasks/tasks.component.html - 122 - - - - Queued - - src/app/components/manage/tasks/tasks.component.html - 128 - - - - Dismiss selected - - src/app/components/manage/tasks/tasks.component.ts - 29 - - - - Dismiss all - - src/app/components/manage/tasks/tasks.component.ts - 30 - - - src/app/components/manage/tasks/tasks.component.ts - 63 - - - - Confirm Dismiss All - - src/app/components/manage/tasks/tasks.component.ts - 61 - - - - tasks? - - src/app/components/manage/tasks/tasks.component.ts - 63 - - - - queued - - src/app/components/manage/tasks/tasks.component.ts - 131 - - - - started - - src/app/components/manage/tasks/tasks.component.ts - 133 - - - - completed - - src/app/components/manage/tasks/tasks.component.ts - 135 - - - - failed - - src/app/components/manage/tasks/tasks.component.ts - 137 - - Not Found @@ -5029,6 +5956,55 @@ 46 + + Boolean + + src/app/data/paperless-custom-field.ts + 16 + + + + Date + + src/app/data/paperless-custom-field.ts + 20 + + + + Integer + + src/app/data/paperless-custom-field.ts + 24 + + + + Number + + src/app/data/paperless-custom-field.ts + 28 + + + + Monetary + + src/app/data/paperless-custom-field.ts + 32 + + + + Text + + src/app/data/paperless-custom-field.ts + 36 + + + + Url + + src/app/data/paperless-custom-field.ts + 40 + + Warning: You have unsaved changes to your document(s). @@ -5292,245 +6268,273 @@ English (US) src/app/services/settings.service.ts - 163 + 155 + + + + Afrikaans + + src/app/services/settings.service.ts + 161 Arabic src/app/services/settings.service.ts - 169 + 167 Belarusian src/app/services/settings.service.ts - 175 + 173 + + + + Bulgarian + + src/app/services/settings.service.ts + 179 Catalan src/app/services/settings.service.ts - 181 + 185 Czech src/app/services/settings.service.ts - 187 + 191 Danish src/app/services/settings.service.ts - 193 + 197 German src/app/services/settings.service.ts - 199 + 203 + + + + Greek + + src/app/services/settings.service.ts + 209 English (GB) src/app/services/settings.service.ts - 205 + 215 Spanish src/app/services/settings.service.ts - 211 + 221 Finnish src/app/services/settings.service.ts - 217 + 227 French src/app/services/settings.service.ts - 223 + 233 + + + + Hungarian + + src/app/services/settings.service.ts + 239 Italian src/app/services/settings.service.ts - 229 + 245 Luxembourgish src/app/services/settings.service.ts - 235 + 251 Dutch src/app/services/settings.service.ts - 241 + 257 + + + + Norwegian + + src/app/services/settings.service.ts + 263 Polish src/app/services/settings.service.ts - 247 + 269 Portuguese (Brazil) src/app/services/settings.service.ts - 253 + 275 Portuguese src/app/services/settings.service.ts - 259 + 281 Romanian src/app/services/settings.service.ts - 265 + 287 Russian src/app/services/settings.service.ts - 271 + 293 Slovak src/app/services/settings.service.ts - 277 + 299 Slovenian src/app/services/settings.service.ts - 283 + 305 Serbian src/app/services/settings.service.ts - 289 + 311 Swedish src/app/services/settings.service.ts - 295 + 317 Turkish src/app/services/settings.service.ts - 301 + 323 Ukrainian src/app/services/settings.service.ts - 307 + 329 Chinese Simplified src/app/services/settings.service.ts - 313 + 335 ISO 8601 src/app/services/settings.service.ts - 330 + 352 Successfully completed one-time migratration of settings to the database! src/app/services/settings.service.ts - 441 + 471 Unable to migrate settings to the database, please try saving manually. src/app/services/settings.service.ts - 442 + 472 You can restart the tour from the settings page. src/app/services/settings.service.ts - 516 - - - - Information - - src/app/services/toast.service.ts - 46 + 542 Connecting... src/app/services/upload-documents.service.ts - 31 + 42 Uploading... src/app/services/upload-documents.service.ts - 43 + 54 Upload complete, waiting... src/app/services/upload-documents.service.ts - 46 + 57 HTTP error: src/app/services/upload-documents.service.ts - 62 + 70 diff --git a/src-ui/package-lock.json b/src-ui/package-lock.json index a42672458..13f060d60 100644 --- a/src-ui/package-lock.json +++ b/src-ui/package-lock.json @@ -7,53 +7,56 @@ "": { "name": "paperless-ui", "version": "0.0.0", + "hasInstallScript": true, "dependencies": { - "@angular/common": "~16.1.7", - "@angular/compiler": "~16.1.7", - "@angular/core": "~16.1.7", - "@angular/forms": "~16.1.7", - "@angular/localize": "~16.1.7", - "@angular/platform-browser": "~16.1.7", - "@angular/platform-browser-dynamic": "~16.1.7", - "@angular/router": "~16.1.7", - "@ng-bootstrap/ng-bootstrap": "^15.1.0", - "@ng-select/ng-select": "^11.1.1", + "@angular/cdk": "^16.2.11", + "@angular/common": "~16.2.11", + "@angular/compiler": "~16.2.11", + "@angular/core": "~16.2.11", + "@angular/forms": "~16.2.11", + "@angular/localize": "~16.2.11", + "@angular/platform-browser": "~16.2.11", + "@angular/platform-browser-dynamic": "~16.2.11", + "@angular/router": "~16.2.11", + "@ng-bootstrap/ng-bootstrap": "^15.1.2", + "@ng-select/ng-select": "^11.2.0", "@ngneat/dirty-check-forms": "^3.0.3", "@popperjs/core": "^2.11.8", - "bootstrap": "^5.3.1", + "bootstrap": "^5.3.2", "file-saver": "^2.0.5", "mime-names": "^1.0.0", "ng2-pdf-viewer": "^10.0.0", "ngx-color": "^9.0.0", - "ngx-cookie-service": "^16.0.0", + "ngx-cookie-service": "^16.0.1", "ngx-file-drop": "^16.0.0", - "ngx-ui-tour-ng-bootstrap": "^13.0.3", + "ngx-ui-tour-ng-bootstrap": "^13.0.6", "rxjs": "^7.8.1", - "tslib": "^2.6.1", - "uuid": "^9.0.0", - "zone.js": "^0.13.0" + "tslib": "^2.6.2", + "uuid": "^9.0.1", + "zone.js": "^0.13.3" }, "devDependencies": { - "@angular-builders/jest": "16.0.0", - "@angular-devkit/build-angular": "~16.1.6", - "@angular-eslint/builder": "16.1.0", - "@angular-eslint/eslint-plugin": "16.1.0", - "@angular-eslint/eslint-plugin-template": "16.1.0", - "@angular-eslint/schematics": "16.1.0", - "@angular-eslint/template-parser": "16.1.0", - "@angular/cli": "~16.1.6", - "@angular/compiler-cli": "~16.1.3", - "@playwright/test": "^1.36.2", - "@types/jest": "^29.5.3", - "@types/node": "^20.4.5", - "@typescript-eslint/eslint-plugin": "^6.2.1", - "@typescript-eslint/parser": "^6.2.1", - "concurrently": "^8.1.0", - "eslint": "^8.46.0", - "jest": "29.6.2", - "jest-environment-jsdom": "^29.6.2", + "@angular-builders/jest": "16.0.1", + "@angular-devkit/build-angular": "~16.2.9", + "@angular-eslint/builder": "16.2.0", + "@angular-eslint/eslint-plugin": "16.2.0", + "@angular-eslint/eslint-plugin-template": "16.2.0", + "@angular-eslint/schematics": "16.2.0", + "@angular-eslint/template-parser": "16.2.0", + "@angular/cli": "~16.2.9", + "@angular/compiler-cli": "~16.2.3", + "@playwright/test": "^1.39.0", + "@types/jest": "^29.5.7", + "@types/node": "^20.8.10", + "@typescript-eslint/eslint-plugin": "^6.9.1", + "@typescript-eslint/parser": "^6.9.1", + "concurrently": "^8.2.2", + "eslint": "^8.52.0", + "jest": "29.7.0", + "jest-environment-jsdom": "^29.7.0", "jest-preset-angular": "^13.1.1", - "jest-websocket-mock": "^2.4.0", + "jest-websocket-mock": "^2.5.0", + "patch-package": "^8.0.0", "ts-node": "~10.9.1", "typescript": "^5.1.6", "wait-on": "^7.0.1" @@ -81,9 +84,9 @@ } }, "node_modules/@angular-builders/jest": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@angular-builders/jest/-/jest-16.0.0.tgz", - "integrity": "sha512-FyKrZLhbgeyqrwmh9oSJk8VL4cZ7qgwYKnn2KM0RwWjel5rxefGCNO+JL7qr4x07wvKXT2LLziO1OwsOTUjH1g==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@angular-builders/jest/-/jest-16.0.1.tgz", + "integrity": "sha512-FuYkfy8JwdfTHevjgs8z18sXt0egcWbSSkefyM/QsGVkMHs+b4N4xzV20MQtyx0Yc6nJzuknIH5ZvDwLYUDPyQ==", "dev": true, "dependencies": { "@angular-devkit/architect": ">=0.1600.0 < 0.1700.0", @@ -103,13 +106,41 @@ "jest": ">=29" } }, - "node_modules/@angular-devkit/architect": { - "version": "0.1601.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1601.6.tgz", - "integrity": "sha512-dY+/FNUNrOj+m4iG5/v8N0PfbDmjkjjoy/YkquRHS1yo7fGGDFNqji2552mbtjN6/LwyWDhOO7fxdqppadjnvA==", + "node_modules/@angular-builders/jest/node_modules/jest-preset-angular": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-13.1.1.tgz", + "integrity": "sha512-X8i7icKt9U5uhj7YKqdEZm7ZZPvNFRxfBnU+9SALdIkHYJhwtlJ5/MUk9wo4f3lX2smOkIl9LPJUu1APO+11Jg==", "dev": true, "dependencies": { - "@angular-devkit/core": "16.1.6", + "bs-logger": "^0.2.6", + "esbuild-wasm": ">=0.13.8", + "jest-environment-jsdom": "^29.0.0", + "jest-util": "^29.0.0", + "pretty-format": "^29.0.0", + "ts-jest": "^29.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "optionalDependencies": { + "esbuild": ">=0.13.8" + }, + "peerDependencies": { + "@angular-devkit/build-angular": ">=13.0.0 <17.0.0", + "@angular/compiler-cli": ">=13.0.0 <17.0.0", + "@angular/core": ">=13.0.0 <17.0.0", + "@angular/platform-browser-dynamic": ">=13.0.0 <17.0.0", + "jest": "^29.0.0", + "typescript": ">=4.4" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.1602.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.9.tgz", + "integrity": "sha512-U3vfb/e2sFfg0D9FyyRBXRPP7g4FBFtGK8Q3JPmvAVsHHwi5AUFRNR7YBChB/T5TMNY077HcTyEirVh2FeUpdA==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.2.9", "rxjs": "7.8.1" }, "engines": { @@ -119,40 +150,40 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.1.6.tgz", - "integrity": "sha512-IEC1tApX8/Qa/RIVmbj0nYbOQ5WGcrkGNJ7D42q4DkIo74XKPzxDRruJE1RCjdZsj8lf4CCCZgSOPBsEI8Zbdw==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.2.9.tgz", + "integrity": "sha512-S1C4UYxRVyNt3C0wCxbT2jZ1dN5i37kS0mol3PQjbR8gQ0GQzHmzhjTBl1oImo8aouET9yhrk9etk65oat4mBQ==", "dev": true, "dependencies": { "@ampproject/remapping": "2.2.1", - "@angular-devkit/architect": "0.1601.6", - "@angular-devkit/build-webpack": "0.1601.6", - "@angular-devkit/core": "16.1.6", - "@babel/core": "7.22.5", - "@babel/generator": "7.22.7", + "@angular-devkit/architect": "0.1602.9", + "@angular-devkit/build-webpack": "0.1602.9", + "@angular-devkit/core": "16.2.9", + "@babel/core": "7.22.9", + "@babel/generator": "7.22.9", "@babel/helper-annotate-as-pure": "7.22.5", - "@babel/helper-split-export-declaration": "7.22.5", + "@babel/helper-split-export-declaration": "7.22.6", "@babel/plugin-proposal-async-generator-functions": "7.20.7", "@babel/plugin-transform-async-to-generator": "7.22.5", - "@babel/plugin-transform-runtime": "7.22.5", - "@babel/preset-env": "7.22.5", - "@babel/runtime": "7.22.5", + "@babel/plugin-transform-runtime": "7.22.9", + "@babel/preset-env": "7.22.9", + "@babel/runtime": "7.22.6", "@babel/template": "7.22.5", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "16.1.6", + "@ngtools/webpack": "16.2.9", "@vitejs/plugin-basic-ssl": "1.0.1", "ansi-colors": "4.1.3", "autoprefixer": "10.4.14", - "babel-loader": "9.1.2", + "babel-loader": "9.1.3", "babel-plugin-istanbul": "6.1.1", "browserslist": "^4.21.5", - "cacache": "17.1.3", "chokidar": "3.5.3", "copy-webpack-plugin": "11.0.0", - "critters": "0.0.19", + "critters": "0.0.20", "css-loader": "6.8.1", - "esbuild-wasm": "0.17.19", - "fast-glob": "3.2.12", + "esbuild-wasm": "0.18.17", + "fast-glob": "3.3.1", + "guess-parser": "0.4.22", "https-proxy-agent": "5.0.1", "inquirer": "8.2.4", "jsonc-parser": "3.2.0", @@ -161,31 +192,31 @@ "less-loader": "11.1.0", "license-webpack-plugin": "4.0.2", "loader-utils": "3.2.1", - "magic-string": "0.30.0", + "magic-string": "0.30.1", "mini-css-extract-plugin": "2.7.6", "mrmime": "1.0.1", "open": "8.4.2", "ora": "5.4.1", "parse5-html-rewriting-stream": "7.0.0", "picomatch": "2.3.1", - "piscina": "3.2.0", - "postcss": "8.4.24", - "postcss-loader": "7.3.2", + "piscina": "4.0.0", + "postcss": "8.4.31", + "postcss-loader": "7.3.3", "resolve-url-loader": "5.0.0", "rxjs": "7.8.1", - "sass": "1.63.2", - "sass-loader": "13.3.1", - "semver": "7.5.3", + "sass": "1.64.1", + "sass-loader": "13.3.2", + "semver": "7.5.4", "source-map-loader": "4.0.1", "source-map-support": "0.5.21", - "terser": "5.17.7", + "terser": "5.19.2", "text-table": "0.2.0", "tree-kill": "1.2.2", - "tslib": "2.5.3", - "vite": "4.3.9", - "webpack": "5.86.0", + "tslib": "2.6.1", + "vite": "4.4.7", + "webpack": "5.88.2", "webpack-dev-middleware": "6.1.1", - "webpack-dev-server": "4.15.0", + "webpack-dev-server": "4.15.1", "webpack-merge": "5.9.0", "webpack-subresource-integrity": "5.1.0" }, @@ -195,7 +226,7 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.17.19" + "esbuild": "0.18.17" }, "peerDependencies": { "@angular/compiler-cli": "^16.0.0", @@ -240,19 +271,481 @@ } } }, + "node_modules/@angular-devkit/build-angular/node_modules/@babel/core": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", + "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz", + "integrity": "sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz", + "integrity": "sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.17.tgz", + "integrity": "sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz", + "integrity": "sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz", + "integrity": "sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz", + "integrity": "sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz", + "integrity": "sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz", + "integrity": "sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz", + "integrity": "sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ia32": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz", + "integrity": "sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-loong64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz", + "integrity": "sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-mips64el": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz", + "integrity": "sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ppc64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz", + "integrity": "sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-riscv64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz", + "integrity": "sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-s390x": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz", + "integrity": "sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz", + "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/netbsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz", + "integrity": "sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/openbsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz", + "integrity": "sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/sunos-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz", + "integrity": "sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz", + "integrity": "sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-ia32": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz", + "integrity": "sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz", + "integrity": "sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/esbuild": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz", + "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.17", + "@esbuild/android-arm64": "0.18.17", + "@esbuild/android-x64": "0.18.17", + "@esbuild/darwin-arm64": "0.18.17", + "@esbuild/darwin-x64": "0.18.17", + "@esbuild/freebsd-arm64": "0.18.17", + "@esbuild/freebsd-x64": "0.18.17", + "@esbuild/linux-arm": "0.18.17", + "@esbuild/linux-arm64": "0.18.17", + "@esbuild/linux-ia32": "0.18.17", + "@esbuild/linux-loong64": "0.18.17", + "@esbuild/linux-mips64el": "0.18.17", + "@esbuild/linux-ppc64": "0.18.17", + "@esbuild/linux-riscv64": "0.18.17", + "@esbuild/linux-s390x": "0.18.17", + "@esbuild/linux-x64": "0.18.17", + "@esbuild/netbsd-x64": "0.18.17", + "@esbuild/openbsd-x64": "0.18.17", + "@esbuild/sunos-x64": "0.18.17", + "@esbuild/win32-arm64": "0.18.17", + "@esbuild/win32-ia32": "0.18.17", + "@esbuild/win32-x64": "0.18.17" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@angular-devkit/build-angular/node_modules/tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "dev": true + }, + "node_modules/@angular-devkit/build-angular/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1601.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1601.6.tgz", - "integrity": "sha512-Uz/GjnhgAqSDPxrO4HP/tHNGPPZU3tEShtAVKyAypBl20bh2Aw1L5D+lCZi/Uq3Sh2JTPD9/M0ei2u9CMLhLDw==", + "version": "0.1602.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1602.9.tgz", + "integrity": "sha512-+3IxovfBPR2Vy730mGa0SVKkd5LQVom85gjXOs7WcnnnZmfc1q/BtFlqTgW1UWvTxP8IQdm7UYWVclQfL/WExw==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1601.6", + "@angular-devkit/architect": "0.1602.9", "rxjs": "7.8.1" }, "engines": { @@ -266,14 +759,15 @@ } }, "node_modules/@angular-devkit/core": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.6.tgz", - "integrity": "sha512-3OjtrPWvsqVkMBwqPeE65ccCIw56FooNpVVAJ0XwhVQv5mA81pmbCzU7JsR6U449ZT7O4cQblzZMQvWvx74HCg==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.9.tgz", + "integrity": "sha512-dcHWjHBNGm3yCeNz19y8A1At4KgyC6XHNnbFL0y+nnZYiaESXjUoXJYKASedI6A+Bpl0HNq2URhH6bL6Af3+4w==", "dev": true, "dependencies": { "ajv": "8.12.0", "ajv-formats": "2.1.1", "jsonc-parser": "3.2.0", + "picomatch": "2.3.1", "rxjs": "7.8.1", "source-map": "0.7.4" }, @@ -292,14 +786,14 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.6.tgz", - "integrity": "sha512-KA8P78gaS76HMHGBOM8JHJXWLOxCIShYVB2Un/Cu6z3jVODvXq+ILZUc1Y0RsAce/vsl2wf8qpoh5Lku9KJHUQ==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.9.tgz", + "integrity": "sha512-lB51CGCILpcSI37CwKUAGDLxMqh7zmuRbiPo9s9mSkCM4ccqxFlaL+VFTq2/laneARD6aikpOHnkVm5myNzQPw==", "dev": true, "dependencies": { - "@angular-devkit/core": "16.1.6", + "@angular-devkit/core": "16.2.9", "jsonc-parser": "3.2.0", - "magic-string": "0.30.0", + "magic-string": "0.30.1", "ora": "5.4.1", "rxjs": "7.8.1" }, @@ -310,9 +804,9 @@ } }, "node_modules/@angular-eslint/builder": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-16.1.0.tgz", - "integrity": "sha512-KIkE2SI1twFKoCiF/k2VR3ojOcc7TD1xPyY4kbUrx/Gxp+XEzar7O29I/ztzL4eHPBM+Uh3/NwS/jvjjBxjgAg==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-16.2.0.tgz", + "integrity": "sha512-SZjXOi3YIjuX2CocuRsR2QH6k1ca9lRO6IMm0YIYMmBPFCRP2KFHkL6aQnXM6DSaymQNN2TXfpuvUd45NxhU1w==", "dev": true, "dependencies": { "@nx/devkit": "16.5.1", @@ -324,18 +818,18 @@ } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-16.1.0.tgz", - "integrity": "sha512-5EFAWXuFJADr3imo/ZYshY8s0K7U7wyysnE2LXnpT9PAi5rmkzt70UNZNRuamCbXr4tdIiu+fXWOj7tUuJKnnw==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-16.2.0.tgz", + "integrity": "sha512-ct9orDYxkMl2+uvM7UBfgV28Dq57V4dEs+Drh7cD673JIMa6sXbgmd0QEtm8W3cmyK/jcTzmuoufxbH7hOxd6g==", "dev": true }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-16.1.0.tgz", - "integrity": "sha512-BFzzJJlgQgWc8avdSBkaDWAzNSUqcwWy0L1iZSBdXGoIOxj72kLbwe99emb8M+rUfCveljQkeM2pcYu8XLbJIA==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-16.2.0.tgz", + "integrity": "sha512-zdiAIox1T+B71HL+A8m+1jWdU34nvPGLhCRw/uZNwHzknsF4tYzNQ9W7T/SC/g/2s1yT2yNosEVNJSGSFvunJg==", "dev": true, "dependencies": { - "@angular-eslint/utils": "16.1.0", + "@angular-eslint/utils": "16.2.0", "@typescript-eslint/utils": "5.62.0" }, "peerDependencies": { @@ -344,17 +838,17 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-16.1.0.tgz", - "integrity": "sha512-wQHWR5vqWGgO7mqoG5ixXeplIlz/OmxBJE9QMLPTZE8GdaTx8+F/5J37OWh84zCpD3mOa/FHYZxBDm2MfUmA1Q==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-16.2.0.tgz", + "integrity": "sha512-YFdQ6hHX6NlQj0lfogZwfyKjU8pqkJU+Zsk0ehjlXP8VfKFVmDeQT5/Xr6Df9C8pveC3hvq6Jgd8vo67S9Enxg==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "16.1.0", - "@angular-eslint/utils": "16.1.0", + "@angular-eslint/bundled-angular-compiler": "16.2.0", + "@angular-eslint/utils": "16.2.0", "@typescript-eslint/type-utils": "5.62.0", "@typescript-eslint/utils": "5.62.0", "aria-query": "5.3.0", - "axobject-query": "3.1.1" + "axobject-query": "3.2.1" }, "peerDependencies": { "eslint": "^7.20.0 || ^8.0.0", @@ -362,12 +856,12 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template/node_modules/@angular-eslint/utils": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-16.1.0.tgz", - "integrity": "sha512-u5XscYUq1F/7RuwyVIV2a280QL27lyQz434VYR+Np/oO21NGj5jxoRKb55xhXT9EFVs5Sy4JYeEUp6S75J/cUw==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-16.2.0.tgz", + "integrity": "sha512-NxMRwnlIgzmbJQfWkfd9y3Sz0hzjFdK5LH44i+3D5NhpPdZ6SzwHAjMYWoYsmmNQX5tlDXoicYF9Mz9Wz8DJ/A==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "16.1.0", + "@angular-eslint/bundled-angular-compiler": "16.2.0", "@typescript-eslint/utils": "5.62.0" }, "peerDependencies": { @@ -498,12 +992,12 @@ } }, "node_modules/@angular-eslint/eslint-plugin/node_modules/@angular-eslint/utils": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-16.1.0.tgz", - "integrity": "sha512-u5XscYUq1F/7RuwyVIV2a280QL27lyQz434VYR+Np/oO21NGj5jxoRKb55xhXT9EFVs5Sy4JYeEUp6S75J/cUw==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-16.2.0.tgz", + "integrity": "sha512-NxMRwnlIgzmbJQfWkfd9y3Sz0hzjFdK5LH44i+3D5NhpPdZ6SzwHAjMYWoYsmmNQX5tlDXoicYF9Mz9Wz8DJ/A==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "16.1.0", + "@angular-eslint/bundled-angular-compiler": "16.2.0", "@typescript-eslint/utils": "5.62.0" }, "peerDependencies": { @@ -634,13 +1128,13 @@ } }, "node_modules/@angular-eslint/schematics": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-16.1.0.tgz", - "integrity": "sha512-L1tmP3R2krHyveaRXAvn/SeDoBFNpS1VtPPrzZm1NYr1qPcAxf3NtG2nnoyVFu6WZGt59ZGHNQ/dZxnXvm0UGg==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-16.2.0.tgz", + "integrity": "sha512-2JUVR7hAKx37mgWeDjvyWEMH5uSeeksYuaQT5wwlgIzgrO4BNFuqs6Rgyp2jiYa7BFMX/qHULSa+bSq5J5ceEA==", "dev": true, "dependencies": { - "@angular-eslint/eslint-plugin": "16.1.0", - "@angular-eslint/eslint-plugin-template": "16.1.0", + "@angular-eslint/eslint-plugin": "16.2.0", + "@angular-eslint/eslint-plugin-template": "16.2.0", "@nx/devkit": "16.5.1", "ignore": "5.2.4", "nx": "16.5.1", @@ -652,12 +1146,12 @@ } }, "node_modules/@angular-eslint/template-parser": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-16.1.0.tgz", - "integrity": "sha512-DOQtzVehtbO7+BQ+FMOXRsxGRjHb3ve6M+S4qASKTiI+twtONjRODcHezD3N4PDkjpKPbOnk7YnFsHur5csUNw==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-16.2.0.tgz", + "integrity": "sha512-v2jVKTy2wN7iM9nHpBkxLn2wfL8jSl4IlPrXThIqj8No2VHtpLQZPKuXbGPUXQX05VS2Mj5feScQ36ZVGS8Rbw==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "16.1.0", + "@angular-eslint/bundled-angular-compiler": "16.2.0", "eslint-scope": "^7.0.0" }, "peerDependencies": { @@ -665,16 +1159,32 @@ "typescript": "*" } }, + "node_modules/@angular/cdk": { + "version": "16.2.11", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-16.2.11.tgz", + "integrity": "sha512-FcJ9xd9ptjULdScnBNg7YkVnY9NKePFfmvvs2zt841Hd489L8BUkTUdbvtCLhMJTTSN+k+D+RYFhevZuhPKVVg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^7.1.2" + }, + "peerDependencies": { + "@angular/common": "^16.0.0 || ^17.0.0", + "@angular/core": "^16.0.0 || ^17.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, "node_modules/@angular/cli": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.1.6.tgz", - "integrity": "sha512-yXVgUKMXxlAHkhc6xk3ljR7TXpMLBykyu8do+ooSP08VKEQnWjTdVgrcOHd0n5w9YHXUQgBSmjDKxtQaBmvyZQ==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.2.9.tgz", + "integrity": "sha512-wkpV/Ni26LUeDmhee2TPXXEq3feEdZMSG8+nkfUK9kqIcxm0IjI1GLPeiVOX7aQobuKNe2cCAFNwsrXWjj+2og==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1601.6", - "@angular-devkit/core": "16.1.6", - "@angular-devkit/schematics": "16.1.6", - "@schematics/angular": "16.1.6", + "@angular-devkit/architect": "0.1602.9", + "@angular-devkit/core": "16.2.9", + "@angular-devkit/schematics": "16.2.9", + "@schematics/angular": "16.2.9", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "ini": "4.1.1", @@ -686,7 +1196,7 @@ "ora": "5.4.1", "pacote": "15.2.0", "resolve": "1.22.2", - "semver": "7.5.3", + "semver": "7.5.4", "symbol-observable": "4.0.0", "yargs": "17.7.2" }, @@ -699,10 +1209,43 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular/cli/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular/cli/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular/cli/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@angular/common": { - "version": "16.1.7", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.1.7.tgz", - "integrity": "sha512-7WwYwtJjuJtUkutB+aMCvtV5zxa43T4x+kqT+kS4KnUmLv5KdrGPxcS+/7YUuKEELWp1SG032UTwGPX0DXxH4g==", + "version": "16.2.11", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.2.11.tgz", + "integrity": "sha512-h80WUR2OYlqxQy+4XgNtWT2vB+vZ6oCrFX/q8cU5jAvbvGQfJuH0zfcbSlUflStmAhk5/OT25F0mt96cqapEAw==", "dependencies": { "tslib": "^2.3.0" }, @@ -710,14 +1253,14 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/core": "16.1.7", + "@angular/core": "16.2.11", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "16.1.7", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.1.7.tgz", - "integrity": "sha512-93nbMFPSpKNfUyuRvEQxPdYLU6g25oZ4Gp7ewzNLyDHIbTQv6FwsthHfgPigPJJUUyKak6Gr3koFsgk7Dl3LAA==", + "version": "16.2.11", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.2.11.tgz", + "integrity": "sha512-9q/E3uurvoQbdTTWDyWCLpzmfJ4+et7SUca1/EljD/X7Xg2FNU5GpTMutBtWFL7wDyWk1oswivuq9/C4GVW7fA==", "dependencies": { "tslib": "^2.3.0" }, @@ -725,7 +1268,7 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/core": "16.1.7" + "@angular/core": "16.2.11" }, "peerDependenciesMeta": { "@angular/core": { @@ -734,11 +1277,11 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "16.1.7", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.1.7.tgz", - "integrity": "sha512-6iuogfVrbCh6o4hWbNCClsLQdLtlXiaNc72LGz5LMXI0TOwKVlRXhbzhiQeLS0/nsYIdHFbgyr1aepI2wQA3mQ==", + "version": "16.2.11", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.2.11.tgz", + "integrity": "sha512-ZtZCXfkVBH78HUm2Byf+WX3Y6WzQK9EXYXNU/ni1rvSZ1vLNwieLDfWb/xwiO7QojrHZTym1RJ10jTMinTguqw==", "dependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.23.2", "@jridgewell/sourcemap-codec": "^1.4.14", "chokidar": "^3.0.0", "convert-source-map": "^1.5.1", @@ -756,14 +1299,14 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/compiler": "16.1.7", + "@angular/compiler": "16.2.11", "typescript": ">=4.9.3 <5.2" } }, "node_modules/@angular/core": { - "version": "16.1.7", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.1.7.tgz", - "integrity": "sha512-Wl5BR9X1xnV7Z9v/MNVANhymuTKAuRv4etr4rRgaC5NbbJSuFM4y+mg4yVI4wmrYJo0gKRcV9+2mHaePr41fTg==", + "version": "16.2.11", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.2.11.tgz", + "integrity": "sha512-Jb+7/p1vczQRQ3iC1QxUS5cE4X1hPVAvbrFnyMpSx6Pq5o274v/lK6PvhUZrfKrp9FxFp9pN+WHjUqNFqOuJZg==", "dependencies": { "tslib": "^2.3.0" }, @@ -776,9 +1319,9 @@ } }, "node_modules/@angular/forms": { - "version": "16.1.7", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.1.7.tgz", - "integrity": "sha512-AZ6oCIAS2JwH7rJiTOj2uKl1eykiDP98y0trgQ/42+zzpOQZyZAjXrtdqHkVUXMc1PFf5NmYioz19Muj1p+Ttg==", + "version": "16.2.11", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.2.11.tgz", + "integrity": "sha512-2powweUorehB1opfev6/sUeb3Bdey+Txq4gjI1Qdeo9c9OgtaKu6wK0KXgoism8HXXRFcGHMfS0dUVoDPVrtiQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -786,18 +1329,18 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/common": "16.1.7", - "@angular/core": "16.1.7", - "@angular/platform-browser": "16.1.7", + "@angular/common": "16.2.11", + "@angular/core": "16.2.11", + "@angular/platform-browser": "16.2.11", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/localize": { - "version": "16.1.7", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-16.1.7.tgz", - "integrity": "sha512-xxFwdu082rikBAQXshA8akc96lKFOusgOwa5kUh2m+d8h/Hp9sOl4nOtVuHqMLz/h1OJIpskoA22EasQaccaHg==", + "version": "16.2.11", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-16.2.11.tgz", + "integrity": "sha512-0wVJisUwUaSXAJXc3d+TEtYKYql1D866CJkEvDmWmZnhRCDtrdhvJH0rzkYPFMuK/9YYPH0VZeJQ0hmTHWFlpg==", "dependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.23.2", "fast-glob": "3.3.0", "yargs": "^17.2.1" }, @@ -810,8 +1353,8 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/compiler": "16.1.7", - "@angular/compiler-cli": "16.1.7" + "@angular/compiler": "16.2.11", + "@angular/compiler-cli": "16.2.11" } }, "node_modules/@angular/localize/node_modules/fast-glob": { @@ -830,9 +1373,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "16.1.7", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.1.7.tgz", - "integrity": "sha512-AjdUUv5+v50cclHPsKVVdNRdCQZJMGNKmvxyLgeGj2hs61lGoJxBYcYqPre2PpM0SvezNJBreUvjwqM3ttOjng==", + "version": "16.2.11", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.2.11.tgz", + "integrity": "sha512-gUptbI3lbaRg+L8rcTlxKtFunYmR/M/mm9/l9uRd+5qk2mnFI0+s/tzRoaq7K0XaRGKZiWLNTz6FTkviO1zo2g==", "dependencies": { "tslib": "^2.3.0" }, @@ -840,9 +1383,9 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/animations": "16.1.7", - "@angular/common": "16.1.7", - "@angular/core": "16.1.7" + "@angular/animations": "16.2.11", + "@angular/common": "16.2.11", + "@angular/core": "16.2.11" }, "peerDependenciesMeta": { "@angular/animations": { @@ -851,9 +1394,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "16.1.7", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.1.7.tgz", - "integrity": "sha512-xoT4wDl7Kurg2N5gcLNmkvqYx14xnYwa2Zm1ZIOM7kYMRXiAg1+XBzaxFXog0fCCs/lqUKUwaNn32YpLKwMNaw==", + "version": "16.2.11", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.2.11.tgz", + "integrity": "sha512-e+A7z6MUJaqC4Fdq7XQfIhAox3ZPM1lczM6G08fUKPbFDEe+c9i7C8YRLL+69BXDuG790btugIeOQcn5lnJcFg==", "dependencies": { "tslib": "^2.3.0" }, @@ -861,16 +1404,16 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/common": "16.1.7", - "@angular/compiler": "16.1.7", - "@angular/core": "16.1.7", - "@angular/platform-browser": "16.1.7" + "@angular/common": "16.2.11", + "@angular/compiler": "16.2.11", + "@angular/core": "16.2.11", + "@angular/platform-browser": "16.2.11" } }, "node_modules/@angular/router": { - "version": "16.1.7", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.1.7.tgz", - "integrity": "sha512-nzjuAEAXLktA3puvSae54noAHEiuizNTvaOpuvQYHfvZF27QMW28XlC33+vDhckWjSD02K7Fb2+AELkOJhUM5Q==", + "version": "16.2.11", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.2.11.tgz", + "integrity": "sha512-QTssqJue+xQ8M1gzmfJcIHPIpPOijVwGnXQjt7cnFggNe/CedOckLEzk2j7/6aC1b5aQKuZePPw6XMvk8ciilQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -878,9 +1421,9 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/common": "16.1.7", - "@angular/core": "16.1.7", - "@angular/platform-browser": "16.1.7", + "@angular/common": "16.2.11", + "@angular/core": "16.2.11", + "@angular/platform-browser": "16.2.11", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -891,44 +1434,45 @@ "dev": true }, "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dependencies": { - "@babel/highlight": "^7.22.5" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz", - "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", - "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helpers": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -938,6 +1482,38 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/@babel/generator": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "dependencies": { + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -947,9 +1523,10 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.7.tgz", - "integrity": "sha512-p+jPjMG+SI8yvIaxGgeW24u7q9+5+TGpZh8/CuB7RhBKd7RCy8FayNEFNNKrNK/eUcY/4ExQqLmyrvBXKsIcwQ==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", + "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "dev": true, "dependencies": { "@babel/types": "^7.22.5", "@jridgewell/gen-mapping": "^0.3.2", @@ -973,33 +1550,30 @@ } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", - "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.10.tgz", + "integrity": "sha512-Av0qubwDQxC56DoUReVDeLfMEjYYSN1nZrTUrWkXd7hpU73ymRANkbuDm3yni9npkn+RXy9nNbEJZEzXr7xrfQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.10" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", - "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.3", + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { @@ -1011,9 +1585,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz", - "integrity": "sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.11.tgz", + "integrity": "sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -1021,10 +1595,10 @@ "@babel/helper-function-name": "^7.22.5", "@babel/helper-member-expression-to-functions": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "semver": "^6.3.0" + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1043,14 +1617,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz", - "integrity": "sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", + "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1069,46 +1643,49 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz", - "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" + "resolve": "^1.14.2" }, "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name/node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -1138,32 +1715,32 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", - "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { @@ -1188,15 +1765,14 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz", - "integrity": "sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", + "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-wrap-function": "^7.22.9" }, "engines": { "node": ">=6.9.0" @@ -1206,20 +1782,20 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz", - "integrity": "sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-simple-access": { @@ -1246,9 +1822,9 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", - "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dependencies": { "@babel/types": "^7.22.5" }, @@ -1265,56 +1841,68 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz", - "integrity": "sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz", + "integrity": "sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==", "dev": true, "dependencies": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.10" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz", - "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", + "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", "dependencies": { "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -1322,9 +1910,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1386,6 +1974,7 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", "dev": true, "engines": { "node": ">=6.9.0" @@ -1398,6 +1987,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead.", "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", @@ -1703,14 +2293,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz", - "integrity": "sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.11.tgz", + "integrity": "sha512-0pAlmeRJn6wU84zzZsEOx1JV1Jf8fqO9ok7wofIJwUnplYo247dcd24P+cMJht7ts9xkzdtB0EPHmOb7F+KzXw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -1753,9 +2343,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz", - "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz", + "integrity": "sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1784,12 +2374,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", - "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, @@ -1801,19 +2391,19 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.5.tgz", - "integrity": "sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", + "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, "engines": { @@ -1840,9 +2430,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz", - "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz", + "integrity": "sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1886,9 +2476,9 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", - "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1918,9 +2508,9 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", - "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1966,9 +2556,9 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", - "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1997,9 +2587,9 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", - "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2044,12 +2634,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", - "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.11.tgz", + "integrity": "sha512-o2+bg7GDS60cJMgz9jWqRUsWkMzLCxp+jFDeDUT5sjRlAxcJWZ2ylNdI7QQ2+CH5hWu7OnN+Cv3htt7AkSf96g==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.9", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" }, @@ -2061,13 +2651,13 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", - "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", + "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.9", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.5" }, @@ -2126,9 +2716,9 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", - "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2142,9 +2732,9 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", - "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2158,13 +2748,13 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", - "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.11.tgz", + "integrity": "sha512-nX8cPFa6+UmbepISvlf5jhQyaC7ASs/7UxHmMkuJ/k5xSHvDPPaibMo+v3TXwU/Pjqhep/nFNpd3zn4YR59pnw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.10", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.22.5" @@ -2193,9 +2783,9 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", - "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2209,9 +2799,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz", - "integrity": "sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==", + "version": "7.22.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.12.tgz", + "integrity": "sha512-7XXCVqZtyFWqjDsYDY4T45w4mlx1rf7aOgkc/Ww76xkgBiOlmjPkx36PBLHa1k1rwWvVgYMPsbuVnIamx2ZQJw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2257,13 +2847,13 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", - "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, @@ -2290,13 +2880,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz", - "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.1" + "regenerator-transform": "^0.15.2" }, "engines": { "node": ">=6.9.0" @@ -2321,17 +2911,17 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.5.tgz", - "integrity": "sha512-bg4Wxd1FWeFx3daHFTWk1pkSWK/AyQuiyAoeZAOkAOUBjnZPH6KT7eMxouV47tQ6hl6ax2zyAWBdWZXbrvXlaw==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.9.tgz", + "integrity": "sha512-9KjBH61AGJetCPYp/IEyLEp47SyybZb0nDRpBvmtEkm+rUIwxdlKpyNHI1TmsGkeuLclJdleQHRZ8XLBnnh8CQ==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.3", - "babel-plugin-polyfill-corejs3": "^0.8.1", - "babel-plugin-polyfill-regenerator": "^0.5.0", - "semver": "^6.3.0" + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -2426,9 +3016,9 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", - "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -2489,13 +3079,13 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.5.tgz", - "integrity": "sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.9.tgz", + "integrity": "sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.22.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", @@ -2520,13 +3110,13 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.7", "@babel/plugin-transform-async-to-generator": "^7.22.5", "@babel/plugin-transform-block-scoped-functions": "^7.22.5", "@babel/plugin-transform-block-scoping": "^7.22.5", "@babel/plugin-transform-class-properties": "^7.22.5", "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-classes": "^7.22.5", + "@babel/plugin-transform-classes": "^7.22.6", "@babel/plugin-transform-computed-properties": "^7.22.5", "@babel/plugin-transform-destructuring": "^7.22.5", "@babel/plugin-transform-dotall-regex": "^7.22.5", @@ -2551,7 +3141,7 @@ "@babel/plugin-transform-object-rest-spread": "^7.22.5", "@babel/plugin-transform-object-super": "^7.22.5", "@babel/plugin-transform-optional-catch-binding": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.6", "@babel/plugin-transform-parameters": "^7.22.5", "@babel/plugin-transform-private-methods": "^7.22.5", "@babel/plugin-transform-private-property-in-object": "^7.22.5", @@ -2569,11 +3159,11 @@ "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", "@babel/preset-modules": "^0.1.5", "@babel/types": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.3", - "babel-plugin-polyfill-corejs3": "^0.8.1", - "babel-plugin-polyfill-regenerator": "^0.5.0", - "core-js-compat": "^3.30.2", - "semver": "^6.3.0" + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -2592,9 +3182,9 @@ } }, "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -2604,7 +3194,7 @@ "esutils": "^2.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/regjsgen": { @@ -2614,9 +3204,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz", - "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", + "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.11" @@ -2629,6 +3219,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dev": true, "dependencies": { "@babel/code-frame": "^7.22.5", "@babel/parser": "^7.22.5", @@ -2639,18 +3230,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2658,13 +3249,27 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "dependencies": { + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dependencies": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2717,9 +3322,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", "cpu": [ "arm" ], @@ -2733,9 +3338,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", "cpu": [ "arm64" ], @@ -2749,9 +3354,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", "cpu": [ "x64" ], @@ -2765,9 +3370,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", "cpu": [ "arm64" ], @@ -2781,9 +3386,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", "cpu": [ "x64" ], @@ -2797,9 +3402,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", "cpu": [ "arm64" ], @@ -2813,9 +3418,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", "cpu": [ "x64" ], @@ -2829,9 +3434,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", "cpu": [ "arm" ], @@ -2845,9 +3450,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", "cpu": [ "arm64" ], @@ -2861,9 +3466,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", "cpu": [ "ia32" ], @@ -2877,9 +3482,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", "cpu": [ "loong64" ], @@ -2893,9 +3498,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", "cpu": [ "mips64el" ], @@ -2909,9 +3514,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", "cpu": [ "ppc64" ], @@ -2925,9 +3530,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", "cpu": [ "riscv64" ], @@ -2941,9 +3546,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", "cpu": [ "s390x" ], @@ -2957,9 +3562,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", "cpu": [ "x64" ], @@ -2973,9 +3578,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", "cpu": [ "x64" ], @@ -2989,9 +3594,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", "cpu": [ "x64" ], @@ -3005,9 +3610,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", "cpu": [ "x64" ], @@ -3021,9 +3626,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", "cpu": [ "arm64" ], @@ -3037,9 +3642,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", "cpu": [ "ia32" ], @@ -3053,9 +3658,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", "cpu": [ "x64" ], @@ -3093,9 +3698,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz", - "integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -3138,9 +3743,9 @@ "dev": true }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3183,9 +3788,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz", - "integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", + "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3207,12 +3812,12 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -3234,9 +3839,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "node_modules/@isaacs/cliui": { @@ -3361,16 +3966,16 @@ } }, "node_modules/@jest/console": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.2.tgz", - "integrity": "sha512-0N0yZof5hi44HAR2pPS+ikJ3nzKNoZdVu8FffRf3wy47I7Dm7etk/3KetMdRUqzVd16V4O2m2ISpNTbnIuqy1w==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.6.2", - "jest-util": "^29.6.2", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0" }, "engines": { @@ -3448,37 +4053,37 @@ } }, "node_modules/@jest/core": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.2.tgz", - "integrity": "sha512-Oj+5B+sDMiMWLhPFF+4/DvHOf+U10rgvCLGPHP8Xlsy/7QxS51aU/eBngudHlJXnaWD5EohAgJ4js+T6pa+zOg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, "dependencies": { - "@jest/console": "^29.6.2", - "@jest/reporters": "^29.6.2", - "@jest/test-result": "^29.6.2", - "@jest/transform": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.5.0", - "jest-config": "^29.6.2", - "jest-haste-map": "^29.6.2", - "jest-message-util": "^29.6.2", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.6.2", - "jest-resolve-dependencies": "^29.6.2", - "jest-runner": "^29.6.2", - "jest-runtime": "^29.6.2", - "jest-snapshot": "^29.6.2", - "jest-util": "^29.6.2", - "jest-validate": "^29.6.2", - "jest-watcher": "^29.6.2", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", "micromatch": "^4.0.4", - "pretty-format": "^29.6.2", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -3565,88 +4170,88 @@ } }, "node_modules/@jest/environment": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.2.tgz", - "integrity": "sha512-AEcW43C7huGd/vogTddNNTDRpO6vQ2zaQNrttvWV18ArBx9Z56h7BIsXkNFJVOO4/kblWEQz30ckw0+L3izc+Q==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, "dependencies": { - "@jest/fake-timers": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.6.2" + "jest-mock": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.2.tgz", - "integrity": "sha512-m6DrEJxVKjkELTVAztTLyS/7C92Y2b0VYqmDROYKLLALHn8T/04yPs70NADUYPrV3ruI+H3J0iUIuhkjp7vkfg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, "dependencies": { - "expect": "^29.6.2", - "jest-snapshot": "^29.6.2" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.2.tgz", - "integrity": "sha512-6zIhM8go3RV2IG4aIZaZbxwpOzz3ZiM23oxAlkquOIole+G6TrbeXnykxWYlqF7kz2HlBjdKtca20x9atkEQYg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, "dependencies": { - "jest-get-type": "^29.4.3" + "jest-get-type": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.2.tgz", - "integrity": "sha512-euZDmIlWjm1Z0lJ1D0f7a0/y5Kh/koLFMUBE5SUYWrmy8oNhJpbTBDAP6CxKnadcMLDoDf4waRYCe35cH6G6PA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.6.2", - "jest-mock": "^29.6.2", - "jest-util": "^29.6.2" + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.2.tgz", - "integrity": "sha512-cjuJmNDjs6aMijCmSa1g2TNG4Lby/AeU7/02VtpW+SLcZXzOLK2GpN2nLqcFjmhy3B3AoPeQVx7BnyOf681bAw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.2", - "@jest/expect": "^29.6.2", - "@jest/types": "^29.6.1", - "jest-mock": "^29.6.2" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.2.tgz", - "integrity": "sha512-sWtijrvIav8LgfJZlrGCdN0nP2EWbakglJY49J1Y5QihcQLfy7ovyxxjJBRXMNltgt4uPtEcFmIMbVshEDfFWw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.6.2", - "@jest/test-result": "^29.6.2", - "@jest/transform": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", "chalk": "^4.0.0", @@ -3655,13 +4260,13 @@ "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.6.2", - "jest-util": "^29.6.2", - "jest-worker": "^29.6.2", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -3757,6 +4362,49 @@ "node": ">=8" } }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", + "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3769,10 +4417,16 @@ "node": ">=8" } }, + "node_modules/@jest/reporters/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@jest/schemas": { - "version": "29.6.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", - "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3782,9 +4436,9 @@ } }, "node_modules/@jest/source-map": { - "version": "29.6.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.0.tgz", - "integrity": "sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -3796,13 +4450,13 @@ } }, "node_modules/@jest/test-result": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.2.tgz", - "integrity": "sha512-3VKFXzcV42EYhMCsJQURptSqnyjqCGbtLuX5Xxb6Pm6gUf1wIRIl+mandIRGJyWKgNKYF9cnstti6Ls5ekduqw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, "dependencies": { - "@jest/console": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -3811,14 +4465,14 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.2.tgz", - "integrity": "sha512-GVYi6PfPwVejO7slw6IDO0qKVum5jtrJ3KoLGbgBWyr2qr4GaxFV6su+ZAjdTX75Sr1DkMFRk09r2ZVa+wtCGw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "dependencies": { - "@jest/test-result": "^29.6.2", + "@jest/test-result": "^29.7.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.2", + "jest-haste-map": "^29.7.0", "slash": "^3.0.0" }, "engines": { @@ -3826,22 +4480,22 @@ } }, "node_modules/@jest/transform": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.2.tgz", - "integrity": "sha512-ZqCqEISr58Ce3U+buNFJYUktLJZOggfyvR+bZMaiV1e8B1SIvJbwZMrYz3gx/KAPn9EXmOmN+uB08yLCjWkQQg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "@jridgewell/trace-mapping": "^0.3.18", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.2", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.6.2", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -3928,12 +4582,12 @@ } }, "node_modules/@jest/types": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz", - "integrity": "sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.0", + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -4075,9 +4729,9 @@ "dev": true }, "node_modules/@ng-bootstrap/ng-bootstrap": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-15.1.0.tgz", - "integrity": "sha512-4Z/sXYcAq22D15jtlnZV7qztuSnlSlOgO7EVp6rJ8dyGi3CPzX9PqMfetoM6K5sKQTiSW8IfsbdXCWN7rnzxWQ==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-15.1.2.tgz", + "integrity": "sha512-mM2yiGnt9o7KZLIFp8K1vjfmVfu7HR3d8dhH5SszfArbgn9DvvQ4P5D5TDGygzyBSzeyZe18p7I8rX8vgA6DKw==", "dependencies": { "tslib": "^2.3.0" }, @@ -4091,9 +4745,9 @@ } }, "node_modules/@ng-select/ng-select": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/@ng-select/ng-select/-/ng-select-11.1.1.tgz", - "integrity": "sha512-Z5wV/u2HgaKl7CQSG3Sy1oF+BPQolmVV6jBuPqHa2+OWg0Nn2e9eXYdcZT8Q3BahfP5j5rHNIBrkkESg/m4YiQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@ng-select/ng-select/-/ng-select-11.2.0.tgz", + "integrity": "sha512-lTyw93kFdKGecp9eKmOP0PQSCaAJS8DCt4D60ns055+ixvRSp2fuXAuJUvn1e3gAsvpZor37osmYlOJ4LYwYIA==", "dependencies": { "tslib": "^2.3.1" }, @@ -4123,9 +4777,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.1.6.tgz", - "integrity": "sha512-rDE1bV3+Ys/VyeD6l7JKtbs3+bTQAfWhi7meEuq5mkaJHOERu6Z40ce866faAIX2I1AVpsSv8rLlb7kB7t7kzw==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.9.tgz", + "integrity": "sha512-rOclD7FfT4OSwVA0nDnULbJS6TORJ0+sQiuT2ebaNFErYr3LOm6Zut05tnmzFw8q1cePrILbG+xpnbggNr9Pyw==", "dev": true, "engines": { "node": "^16.14.0 || >=18.10.0", @@ -4535,22 +5189,18 @@ } }, "node_modules/@playwright/test": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.37.0.tgz", - "integrity": "sha512-181WBLk4SRUyH1Q96VZl7BP6HcK0b7lbdeKisn3N/vnjitk+9HbdlFz/L5fey05vxaAhldIDnzo8KUoy8S3mmQ==", + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.39.0.tgz", + "integrity": "sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ==", "dev": true, "dependencies": { - "@types/node": "*", - "playwright-core": "1.37.0" + "playwright": "1.39.0" }, "bin": { "playwright": "cli.js" }, "engines": { "node": ">=16" - }, - "optionalDependencies": { - "fsevents": "2.3.2" } }, "node_modules/@popperjs/core": { @@ -4563,13 +5213,13 @@ } }, "node_modules/@schematics/angular": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.1.6.tgz", - "integrity": "sha512-BxghkeLfnMgV0D4DZDcbfPpox/Orw1ismSVGoQMIV/Daj2pqfSK+n97NAu0r0EsQyR5agPxOX9khVft+otODhg==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.9.tgz", + "integrity": "sha512-uiU2YbZRVHgk1N1DDsek/5CKhfpZ8myJYNJk8eHV5LswnXOP3aqvH23VhneaAgOYwK5fISC7eMG0pLVKMvFfZQ==", "dev": true, "dependencies": { - "@angular-devkit/core": "16.1.6", - "@angular-devkit/schematics": "16.1.6", + "@angular-devkit/core": "16.2.9", + "@angular-devkit/schematics": "16.2.9", "jsonc-parser": "3.2.0" }, "engines": { @@ -4766,9 +5416,9 @@ } }, "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.4.tgz", + "integrity": "sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==", "dev": true, "dependencies": { "@types/connect": "*", @@ -4776,27 +5426,27 @@ } }, "node_modules/@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.12.tgz", + "integrity": "sha512-ky0kWSqXVxSqgqJvPIkgFkcn4C8MnRog308Ou8xBBIVo39OmUFy+jqNe0nPwLCDFxUpmT9EvT91YzOJgkDRcFg==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.37", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.37.tgz", + "integrity": "sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.2.tgz", + "integrity": "sha512-gX2j9x+NzSh4zOhnRPSdPPmTepS4DfxES0AvIFv3jGv5QyeAJf6u6dY5/BAoAJU9Qq1uTvwOku8SSC2GnCRl6Q==", "dev": true, "dependencies": { "@types/express-serve-static-core": "*", @@ -4830,9 +5480,9 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.20.tgz", + "integrity": "sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw==", "dev": true, "dependencies": { "@types/body-parser": "*", @@ -4842,9 +5492,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.35", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", - "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", + "version": "4.17.39", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.39.tgz", + "integrity": "sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ==", "dev": true, "dependencies": { "@types/node": "*", @@ -4863,15 +5513,15 @@ } }, "node_modules/@types/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.3.tgz", + "integrity": "sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA==", "dev": true }, "node_modules/@types/http-proxy": { - "version": "1.17.11", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", - "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "version": "1.17.13", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.13.tgz", + "integrity": "sha512-GkhdWcMNiR5QSQRYnJ+/oXzu0+7JJEPC8vkWXK351BkhjraZF+1W13CUYARUvX9+NqIU2n6YHA4iwywsc/M6Sw==", "dev": true, "dependencies": { "@types/node": "*" @@ -4902,9 +5552,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.3", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.3.tgz", - "integrity": "sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==", + "version": "29.5.7", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.7.tgz", + "integrity": "sha512-HLyetab6KVPSiF+7pFcUyMeLsx25LDNDemw9mGsJBkai/oouwrjTycocSDYopMEwFhN2Y4s9oPyOCZNofgSt2g==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -4929,27 +5579,39 @@ "dev": true }, "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.4.tgz", + "integrity": "sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw==", "dev": true }, "node_modules/@types/node": { - "version": "20.4.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.5.tgz", - "integrity": "sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==", - "dev": true + "version": "20.8.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.10.tgz", + "integrity": "sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.8.tgz", + "integrity": "sha512-vGXshY9vim9CJjrpcS5raqSjEfKlJcWy2HNdgUasR66fAnVEYarrf1ULV4nfvpC1nZq/moA9qyqBcu83x+Jlrg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "version": "6.9.9", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.9.tgz", + "integrity": "sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==", "dev": true }, "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.6.tgz", + "integrity": "sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA==", "dev": true }, "node_modules/@types/retry": { @@ -4965,9 +5627,9 @@ "dev": true }, "node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.3.tgz", + "integrity": "sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug==", "dev": true, "dependencies": { "@types/mime": "^1", @@ -4975,18 +5637,18 @@ } }, "node_modules/@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.3.tgz", + "integrity": "sha512-4KG+yMEuvDPRrYq5fyVm/I2uqAJSAwZK9VSa+Zf+zUq9/oxSSvy3kkIqyL+jjStv6UCVi8/Aho0NHtB1Fwosrg==", "dev": true, "dependencies": { "@types/express": "*" } }, "node_modules/@types/serve-static": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", - "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.4.tgz", + "integrity": "sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw==", "dev": true, "dependencies": { "@types/http-errors": "*", @@ -4995,9 +5657,9 @@ } }, "node_modules/@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "version": "0.3.35", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.35.tgz", + "integrity": "sha512-tIF57KB+ZvOBpAQwSaACfEu7htponHXaFzP7RfKYgsOS0NoYnn+9+jzp7bbq4fWerizI3dTB4NfAZoyeQKWJLw==", "dev": true, "dependencies": { "@types/node": "*" @@ -5016,9 +5678,9 @@ "dev": true }, "node_modules/@types/ws": { - "version": "8.5.5", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", - "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.8.tgz", + "integrity": "sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg==", "dev": true, "dependencies": { "@types/node": "*" @@ -5040,21 +5702,20 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.2.1.tgz", - "integrity": "sha512-iZVM/ALid9kO0+I81pnp1xmYiFyqibAHzrqX4q5YvvVEyJqY+e6rfTXSCsc2jUxGNqJqTfFSSij/NFkZBiBzLw==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.1.tgz", + "integrity": "sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.2.1", - "@typescript-eslint/type-utils": "6.2.1", - "@typescript-eslint/utils": "6.2.1", - "@typescript-eslint/visitor-keys": "6.2.1", + "@typescript-eslint/scope-manager": "6.9.1", + "@typescript-eslint/type-utils": "6.9.1", + "@typescript-eslint/utils": "6.9.1", + "@typescript-eslint/visitor-keys": "6.9.1", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", "natural-compare": "^1.4.0", - "natural-compare-lite": "^1.4.0", "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, @@ -5076,13 +5737,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.2.1.tgz", - "integrity": "sha512-fTfCgomBMIgu2Dh2Or3gMYgoNAnQm3RLtRp+jP7A8fY+LJ2+9PNpi5p6QB5C4RSP+U3cjI0vDlI3mspAkpPVbQ==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.1.tgz", + "integrity": "sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.2.1", - "@typescript-eslint/utils": "6.2.1", + "@typescript-eslint/typescript-estree": "6.9.1", + "@typescript-eslint/utils": "6.9.1", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -5136,15 +5797,15 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.2.1.tgz", - "integrity": "sha512-Ld+uL1kYFU8e6btqBFpsHkwQ35rw30IWpdQxgOqOh4NfxSDH6uCkah1ks8R/RgQqI5hHPXMaLy9fbFseIe+dIg==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.1.tgz", + "integrity": "sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.2.1", - "@typescript-eslint/types": "6.2.1", - "@typescript-eslint/typescript-estree": "6.2.1", - "@typescript-eslint/visitor-keys": "6.2.1", + "@typescript-eslint/scope-manager": "6.9.1", + "@typescript-eslint/types": "6.9.1", + "@typescript-eslint/typescript-estree": "6.9.1", + "@typescript-eslint/visitor-keys": "6.9.1", "debug": "^4.3.4" }, "engines": { @@ -5164,13 +5825,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.2.1.tgz", - "integrity": "sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.1.tgz", + "integrity": "sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.2.1", - "@typescript-eslint/visitor-keys": "6.2.1" + "@typescript-eslint/types": "6.9.1", + "@typescript-eslint/visitor-keys": "6.9.1" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -5330,9 +5991,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.2.1.tgz", - "integrity": "sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.1.tgz", + "integrity": "sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -5343,13 +6004,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.1.tgz", - "integrity": "sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.1.tgz", + "integrity": "sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.2.1", - "@typescript-eslint/visitor-keys": "6.2.1", + "@typescript-eslint/types": "6.9.1", + "@typescript-eslint/visitor-keys": "6.9.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5403,17 +6064,17 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.2.1.tgz", - "integrity": "sha512-eBIXQeupYmxVB6S7x+B9SdBeB6qIdXKjgQBge2J+Ouv8h9Cxm5dHf/gfAZA6dkMaag+03HdbVInuXMmqFB/lKQ==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.1.tgz", + "integrity": "sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.2.1", - "@typescript-eslint/types": "6.2.1", - "@typescript-eslint/typescript-estree": "6.2.1", + "@typescript-eslint/scope-manager": "6.9.1", + "@typescript-eslint/types": "6.9.1", + "@typescript-eslint/typescript-estree": "6.9.1", "semver": "^7.5.4" }, "engines": { @@ -5461,12 +6122,12 @@ "dev": true }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.1.tgz", - "integrity": "sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.1.tgz", + "integrity": "sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/types": "6.9.1", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -5477,6 +6138,12 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@vitejs/plugin-basic-ssl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz", @@ -5635,6 +6302,373 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/@wessberg/ts-evaluator": { + "version": "0.0.27", + "resolved": "https://registry.npmjs.org/@wessberg/ts-evaluator/-/ts-evaluator-0.0.27.tgz", + "integrity": "sha512-7gOpVm3yYojUp/Yn7F4ZybJRxyqfMNf0LXK5KJiawbPfL0XTsJV+0mgrEDjOIR6Bi0OYk2Cyg4tjFu1r8MCZaA==", + "deprecated": "this package has been renamed to ts-evaluator. Please install ts-evaluator instead", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "jsdom": "^16.4.0", + "object-path": "^0.11.5", + "tslib": "^2.0.3" + }, + "engines": { + "node": ">=10.1.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/wessberg/ts-evaluator?sponsor=1" + }, + "peerDependencies": { + "typescript": ">=3.2.x || >= 4.x" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@wessberg/ts-evaluator/node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/@wessberg/ts-evaluator/node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/@wessberg/ts-evaluator/node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/@wessberg/ts-evaluator/node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -5979,19 +7013,6 @@ "dequal": "^2.0.3" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -6019,6 +7040,15 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/autoprefixer": { "version": "10.4.14", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", @@ -6052,18 +7082,6 @@ "postcss": "^8.1.0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/axios": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", @@ -6076,24 +7094,24 @@ } }, "node_modules/axobject-query": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", - "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", "dev": true, "dependencies": { - "deep-equal": "^2.0.5" + "dequal": "^2.0.3" } }, "node_modules/babel-jest": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.2.tgz", - "integrity": "sha512-BYCzImLos6J3BH/+HvUCHG1dTf2MzmAB4jaVxHV+29RZLjR29XuYTmsf2sdDwkrb+FczkGo3kOhE7ga6sI0P4A==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "dependencies": { - "@jest/transform": "^29.6.2", + "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", + "babel-preset-jest": "^29.6.3", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -6176,12 +7194,12 @@ } }, "node_modules/babel-loader": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.2.tgz", - "integrity": "sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dev": true, "dependencies": { - "find-cache-dir": "^3.3.2", + "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" }, "engines": { @@ -6209,9 +7227,9 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", @@ -6224,17 +7242,17 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz", - "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.4.0", - "semver": "^6.1.1" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { @@ -6247,28 +7265,28 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz", - "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.0", - "core-js-compat": "^3.30.1" + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz", - "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.0" + "@babel/helper-define-polyfill-provider": "^0.4.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-preset-current-node-syntax": { @@ -6295,12 +7313,12 @@ } }, "node_modules/babel-preset-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^29.5.0", + "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { @@ -6437,9 +7455,9 @@ "dev": true }, "node_modules/bootstrap": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.1.tgz", - "integrity": "sha512-jzwza3Yagduci2x0rr9MeFSORjcHpt0lRZukZPZQJT1Dth5qzV7XcgGqYzi39KGAVYR8QEDVoO0ubFKOxzMG+g==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", + "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", "funding": [ { "type": "github", @@ -6475,10 +7493,16 @@ "node": ">=8" } }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, "node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", "funding": [ { "type": "opencollective", @@ -6494,9 +7518,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", "update-browserslist-db": "^1.0.11" }, "bin": { @@ -6608,13 +7632,14 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6639,9 +7664,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001509", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001509.tgz", - "integrity": "sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==", + "version": "1.0.30001525", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001525.tgz", + "integrity": "sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q==", "funding": [ { "type": "opencollective", @@ -6888,10 +7913,10 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", "dev": true }, "node_modules/compressible": { @@ -6952,9 +7977,9 @@ "dev": true }, "node_modules/concurrently": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.0.tgz", - "integrity": "sha512-nnLMxO2LU492mTUj9qX/az/lESonSZu81UznYDoXtz1IQf996ixVqPAgHXwvHiHCAef/7S8HIK+fTFK7Ifk8YA==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", + "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", "dev": true, "dependencies": { "chalk": "^4.1.2", @@ -7199,12 +8224,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.31.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.0.tgz", - "integrity": "sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==", + "version": "3.32.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.1.tgz", + "integrity": "sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==", "dev": true, "dependencies": { - "browserslist": "^4.21.5" + "browserslist": "^4.21.10" }, "funding": { "type": "opencollective", @@ -7253,6 +8278,97 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/create-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/create-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/create-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/create-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/create-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -7260,9 +8376,9 @@ "dev": true }, "node_modules/critters": { - "version": "0.0.19", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.19.tgz", - "integrity": "sha512-Fm4ZAXsG0VzWy1U30rP4qxbaWGSsqXDgSupJW1OUJGDAs0KWC+j37v7p5a2kZ9BPJvhRzWm3be+Hc9WvQOBUOw==", + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.20.tgz", + "integrity": "sha512-CImNRorKOl5d8TWcnAz5n5izQ6HFsvz29k327/ELy6UFcmbiZNOsinaKvzv16WZR0P6etfSWYzE47C4/56B3Uw==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -7514,35 +8630,6 @@ } } }, - "node_modules/deep-equal": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz", - "integrity": "sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.0", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -7582,6 +8669,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -7591,22 +8692,6 @@ "node": ">=8" } }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -7675,9 +8760,9 @@ } }, "node_modules/diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -7702,9 +8787,9 @@ "dev": true }, "node_modules/dns-packet": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", - "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" @@ -7841,9 +8926,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.447", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.447.tgz", - "integrity": "sha512-sxX0LXh+uL41hSJsujAN86PjhrV/6c79XmpY0TvjZStV6VxIgarf8SRkUoUTuYmFcZQTemsoqo8qXOGw5npWfw==" + "version": "1.4.508", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.508.tgz", + "integrity": "sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==" }, "node_modules/emittery": { "version": "0.13.1", @@ -7941,7 +9026,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.12" }, @@ -7986,26 +9071,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es-module-lexer": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", @@ -8013,9 +9078,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", "dev": true, "hasInstallScript": true, "bin": { @@ -8025,34 +9090,34 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" } }, "node_modules/esbuild-wasm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.17.19.tgz", - "integrity": "sha512-X9UQEMJMZXwlGCfqcBmJ1jEa+KrLfd+gCBypO/TSzo5hZvbVwFqpxj1YCuX54ptTF75wxmrgorR4RL40AKtLVg==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.18.17.tgz", + "integrity": "sha512-9OHGcuRzy+I8ziF9FzjfKLWAPbvi0e/metACVg9k6bK+SI4FFxeV6PcZsz8RIVaMD4YNehw+qj6UMR3+qj/EuQ==", "dev": true, "bin": { "esbuild": "bin/esbuild" @@ -8115,18 +9180,19 @@ } }, "node_modules/eslint": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz", - "integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", + "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.1", - "@eslint/js": "^8.46.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.52.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -8134,7 +9200,7 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.2", + "eslint-visitor-keys": "^3.4.3", "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", @@ -8185,9 +9251,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", - "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -8544,17 +9610,16 @@ } }, "node_modules/expect": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.2.tgz", - "integrity": "sha512-iAErsLxJ8C+S02QbLAwgSGSezLQK+XXRDt8IuFXFpwCNw2ECmzZSmjKcCaFVp5VRMk+WAvz6h6jokzEzBFZEuA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "dependencies": { - "@jest/expect-utils": "^29.6.2", - "@types/node": "*", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.6.2", - "jest-message-util": "^29.6.2", - "jest-util": "^29.6.2" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -8662,9 +9727,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -8825,20 +9890,116 @@ "dev": true }, "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/find-up": { @@ -8854,6 +10015,15 @@ "node": ">=8" } }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dev": true, + "dependencies": { + "micromatch": "^4.0.2" + } + }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -8902,15 +10072,6 @@ } } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, "node_modules/foreground-child": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", @@ -9030,15 +10191,9 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9086,15 +10241,15 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9236,6 +10391,18 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/guess-parser": { + "version": "0.4.22", + "resolved": "https://registry.npmjs.org/guess-parser/-/guess-parser-0.4.22.tgz", + "integrity": "sha512-KcUWZ5ACGaBM69SbqwVIuWGoSAgD+9iJnchR9j/IarVI1jHVeXv+bUXBIMeqVMSKt3zrn0Dgf9UpcOEpPBLbSg==", + "dev": true, + "dependencies": { + "@wessberg/ts-evaluator": "0.0.27" + }, + "peerDependencies": { + "typescript": ">=3.7.5" + } + }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -9254,15 +10421,6 @@ "node": ">= 0.4.0" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -9272,12 +10430,12 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9307,27 +10465,24 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hdr-histogram-js": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", @@ -9378,12 +10533,6 @@ "wbuf": "^1.1.0" } }, - "node_modules/hpack.js/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, "node_modules/hpack.js/node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", @@ -9875,20 +11024,6 @@ "node": ">=8" } }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", @@ -9904,54 +11039,12 @@ "node": ">= 10" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -9963,34 +11056,6 @@ "node": ">=8" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-core-module": { "version": "2.12.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", @@ -10003,21 +11068,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -10084,15 +11134,6 @@ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "dev": true }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -10101,21 +11142,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -10155,43 +11181,6 @@ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -10204,55 +11193,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -10265,28 +11205,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-what": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", @@ -10306,9 +11224,9 @@ } }, "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "node_modules/isexe": { @@ -10383,21 +11301,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10553,15 +11456,15 @@ } }, "node_modules/jest": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.2.tgz", - "integrity": "sha512-8eQg2mqFbaP7CwfsTpCxQ+sHzw1WuNWL5UUvjnWP4hx2riGz9fPSzYOaU5q8/GqWn1TfgZIVTqYJygbGbWAANg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "dependencies": { - "@jest/core": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", "import-local": "^3.0.2", - "jest-cli": "^29.6.2" + "jest-cli": "^29.7.0" }, "bin": { "jest": "bin/jest.js" @@ -10579,12 +11482,13 @@ } }, "node_modules/jest-changed-files": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", - "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "dependencies": { "execa": "^5.0.0", + "jest-util": "^29.7.0", "p-limit": "^3.1.0" }, "engines": { @@ -10592,28 +11496,28 @@ } }, "node_modules/jest-circus": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.2.tgz", - "integrity": "sha512-G9mN+KOYIUe2sB9kpJkO9Bk18J4dTDArNFPwoZ7WKHKel55eKIS/u2bLthxgojwlf9NLCVQfgzM/WsOVvoC6Fw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.2", - "@jest/expect": "^29.6.2", - "@jest/test-result": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^1.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.6.2", - "jest-matcher-utils": "^29.6.2", - "jest-message-util": "^29.6.2", - "jest-runtime": "^29.6.2", - "jest-snapshot": "^29.6.2", - "jest-util": "^29.6.2", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", "p-limit": "^3.1.0", - "pretty-format": "^29.6.2", + "pretty-format": "^29.7.0", "pure-rand": "^6.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" @@ -10693,22 +11597,21 @@ } }, "node_modules/jest-cli": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.2.tgz", - "integrity": "sha512-TT6O247v6dCEX2UGHGyflMpxhnrL0DNqP2fRTKYm3nJJpCTfXX3GCMQPGFjXDoj0i5/Blp3jriKXFgdfmbYB6Q==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "dependencies": { - "@jest/core": "^29.6.2", - "@jest/test-result": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", + "create-jest": "^29.7.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.6.2", - "jest-util": "^29.6.2", - "jest-validate": "^29.6.2", - "prompts": "^2.0.1", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "yargs": "^17.3.1" }, "bin": { @@ -10797,31 +11700,31 @@ } }, "node_modules/jest-config": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.2.tgz", - "integrity": "sha512-VxwFOC8gkiJbuodG9CPtMRjBUNZEHxwfQXmIudSTzFWxaci3Qub1ddTRbFNQlD/zUeaifLndh/eDccFX4wCMQw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.6.2", - "@jest/types": "^29.6.1", - "babel-jest": "^29.6.2", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.6.2", - "jest-environment-node": "^29.6.2", - "jest-get-type": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.6.2", - "jest-runner": "^29.6.2", - "jest-util": "^29.6.2", - "jest-validate": "^29.6.2", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.6.2", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -10932,15 +11835,15 @@ } }, "node_modules/jest-diff": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.2.tgz", - "integrity": "sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.2" + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -11017,9 +11920,9 @@ } }, "node_modules/jest-docblock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", - "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "dependencies": { "detect-newline": "^3.0.0" @@ -11029,16 +11932,16 @@ } }, "node_modules/jest-each": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.2.tgz", - "integrity": "sha512-MsrsqA0Ia99cIpABBc3izS1ZYoYfhIy0NNWqPSE0YXbQjwchyt6B1HD2khzyPe1WiJA7hbxXy77ZoUQxn8UlSw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "jest-util": "^29.6.2", - "pretty-format": "^29.6.2" + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -11115,18 +12018,18 @@ } }, "node_modules/jest-environment-jsdom": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.6.2.tgz", - "integrity": "sha512-7oa/+266AAEgkzae8i1awNEfTfjwawWKLpiw2XesZmaoVVj9u9t8JOYx18cG29rbPNtkUlZ8V4b5Jb36y/VxoQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.2", - "@jest/fake-timers": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/jsdom": "^20.0.0", "@types/node": "*", - "jest-mock": "^29.6.2", - "jest-util": "^29.6.2", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", "jsdom": "^20.0.0" }, "engines": { @@ -11142,46 +12045,46 @@ } }, "node_modules/jest-environment-node": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.2.tgz", - "integrity": "sha512-YGdFeZ3T9a+/612c5mTQIllvWkddPbYcN2v95ZH24oWMbGA4GGS2XdIF92QMhUhvrjjuQWYgUGW2zawOyH63MQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.2", - "@jest/fake-timers": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.6.2", - "jest-util": "^29.6.2" + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-haste-map": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.2.tgz", - "integrity": "sha512-+51XleTDAAysvU8rT6AnS1ZJ+WHVNqhj1k6nTvN2PYP+HjU3kqlaKQ1Lnw3NYW3bm2r8vq82X0Z1nDDHZMzHVA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.6.2", - "jest-worker": "^29.6.2", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -11193,28 +12096,28 @@ } }, "node_modules/jest-leak-detector": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.2.tgz", - "integrity": "sha512-aNqYhfp5uYEO3tdWMb2bfWv6f0b4I0LOxVRpnRLAeque2uqOVVMLh6khnTcE2qJ5wAKop0HcreM1btoysD6bPQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "dependencies": { - "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.2" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.2.tgz", - "integrity": "sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.6.2", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.2" + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -11291,18 +12194,18 @@ } }, "node_modules/jest-message-util": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.2.tgz", - "integrity": "sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.6.2", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -11381,14 +12284,14 @@ } }, "node_modules/jest-mock": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.2.tgz", - "integrity": "sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-util": "^29.6.2" + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -11412,9 +12315,9 @@ } }, "node_modules/jest-preset-angular": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-13.1.1.tgz", - "integrity": "sha512-X8i7icKt9U5uhj7YKqdEZm7ZZPvNFRxfBnU+9SALdIkHYJhwtlJ5/MUk9wo4f3lX2smOkIl9LPJUu1APO+11Jg==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-13.1.2.tgz", + "integrity": "sha512-kuzuIch/YYTMaMnuGDaiZEu++Bjc5WskOAmMwqWO0Grpcd0SulqTOV70Gz6Q/ZOQuMye+LS4KPyIVfqnJr2e3g==", "dev": true, "dependencies": { "bs-logger": "^0.2.6", @@ -11440,26 +12343,26 @@ } }, "node_modules/jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.2.tgz", - "integrity": "sha512-G/iQUvZWI5e3SMFssc4ug4dH0aZiZpsDq9o1PtXTV1210Ztyb2+w+ZgQkB3iOiC5SmAEzJBOHWz6Hvrd+QnNPw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.2", + "jest-haste-map": "^29.7.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.6.2", - "jest-validate": "^29.6.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "resolve": "^1.20.0", "resolve.exports": "^2.0.0", "slash": "^3.0.0" @@ -11469,13 +12372,13 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.2.tgz", - "integrity": "sha512-LGqjDWxg2fuQQm7ypDxduLu/m4+4Lb4gczc13v51VMZbVP5tSBILqVx8qfWcsdP8f0G7aIqByIALDB0R93yL+w==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, "dependencies": { - "jest-regex-util": "^29.4.3", - "jest-snapshot": "^29.6.2" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -11552,30 +12455,30 @@ } }, "node_modules/jest-runner": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.2.tgz", - "integrity": "sha512-wXOT/a0EspYgfMiYHxwGLPCZfC0c38MivAlb2lMEAlwHINKemrttu1uSbcGbfDV31sFaPWnWJPmb2qXM8pqZ4w==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, "dependencies": { - "@jest/console": "^29.6.2", - "@jest/environment": "^29.6.2", - "@jest/test-result": "^29.6.2", - "@jest/transform": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.6.2", - "jest-haste-map": "^29.6.2", - "jest-leak-detector": "^29.6.2", - "jest-message-util": "^29.6.2", - "jest-resolve": "^29.6.2", - "jest-runtime": "^29.6.2", - "jest-util": "^29.6.2", - "jest-watcher": "^29.6.2", - "jest-worker": "^29.6.2", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -11673,31 +12576,31 @@ } }, "node_modules/jest-runtime": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.2.tgz", - "integrity": "sha512-2X9dqK768KufGJyIeLmIzToDmsN0m7Iek8QNxRSI/2+iPFYHF0jTwlO3ftn7gdKd98G/VQw9XJCk77rbTGZnJg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.2", - "@jest/fake-timers": "^29.6.2", - "@jest/globals": "^29.6.2", - "@jest/source-map": "^29.6.0", - "@jest/test-result": "^29.6.2", - "@jest/transform": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.2", - "jest-message-util": "^29.6.2", - "jest-mock": "^29.6.2", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.6.2", - "jest-snapshot": "^29.6.2", - "jest-util": "^29.6.2", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -11796,9 +12699,9 @@ } }, "node_modules/jest-snapshot": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.2.tgz", - "integrity": "sha512-1OdjqvqmRdGNvWXr/YZHuyhh5DeaLp1p/F8Tht/MrMw4Kr1Uu/j4lRG+iKl1DAqUJDWxtQBMk41Lnf/JETYBRA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", @@ -11806,20 +12709,20 @@ "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.6.2", - "@jest/transform": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.6.2", + "expect": "^29.7.0", "graceful-fs": "^4.2.9", - "jest-diff": "^29.6.2", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.6.2", - "jest-message-util": "^29.6.2", - "jest-util": "^29.6.2", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "natural-compare": "^1.4.0", - "pretty-format": "^29.6.2", + "pretty-format": "^29.7.0", "semver": "^7.5.3" }, "engines": { @@ -11897,12 +12800,12 @@ } }, "node_modules/jest-util": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.2.tgz", - "integrity": "sha512-3eX1qb6L88lJNCFlEADKOkjpXJQyZRiavX1INZ4tRnrBVr2COd3RgcTLyUiEXMNBlDU/cgYq6taUS0fExrWW4w==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -11984,17 +12887,17 @@ } }, "node_modules/jest-validate": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.2.tgz", - "integrity": "sha512-vGz0yMN5fUFRRbpJDPwxMpgSXW1LDKROHfBopAvDcmD6s+B/s8WJrwi+4bfH4SdInBA5C3P3BI19dBtKzx1Arg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", + "jest-get-type": "^29.6.3", "leven": "^3.1.0", - "pretty-format": "^29.6.2" + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -12083,18 +12986,18 @@ } }, "node_modules/jest-watcher": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.2.tgz", - "integrity": "sha512-GZitlqkMkhkefjfN/p3SJjrDaxPflqxEAv3/ik10OirZqJGYH5rPiIsgVcfof0Tdqg3shQGdEIxDBx+B4tuLzA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "dependencies": { - "@jest/test-result": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.6.2", + "jest-util": "^29.7.0", "string-length": "^4.0.1" }, "engines": { @@ -12172,171 +13075,23 @@ } }, "node_modules/jest-websocket-mock": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jest-websocket-mock/-/jest-websocket-mock-2.4.0.tgz", - "integrity": "sha512-AOwyuRw6fgROXHxMOiTDl1/T4dh3fV4jDquha5N0csS/PNp742HeTZWPAuKppVRSQ8s3fUGgJHoyZT9JDO0hMA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/jest-websocket-mock/-/jest-websocket-mock-2.5.0.tgz", + "integrity": "sha512-a+UJGfowNIWvtIKIQBHoEWIUqRxxQHFx4CXT+R5KxxKBtEQ5rS3pPOV/5299sHzqbmeCzxxY5qE4+yfXePePig==", "dev": true, "dependencies": { - "jest-diff": "^28.0.2", - "mock-socket": "^9.1.0" - } - }, - "node_modules/jest-websocket-mock/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.24.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-websocket-mock/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true - }, - "node_modules/jest-websocket-mock/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-websocket-mock/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-websocket-mock/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-websocket-mock/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-websocket-mock/node_modules/diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-websocket-mock/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-websocket-mock/node_modules/jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-websocket-mock/node_modules/jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-websocket-mock/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-websocket-mock/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-websocket-mock/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "jest-diff": "^29.2.0", + "mock-socket": "^9.3.0" } }, "node_modules/jest-worker": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.2.tgz", - "integrity": "sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "dependencies": { "@types/node": "*", - "jest-util": "^29.6.2", + "jest-util": "^29.7.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -12369,9 +13124,9 @@ } }, "node_modules/jiti": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", - "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==", + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.3.tgz", + "integrity": "sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==", "dev": true, "bin": { "jiti": "bin/jiti.js" @@ -12476,6 +13231,18 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "node_modules/json-stable-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", + "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", + "dev": true, + "dependencies": { + "jsonify": "^0.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -12511,6 +13278,15 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -12538,6 +13314,15 @@ "node": ">=0.10.0" } }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -12557,13 +13342,13 @@ } }, "node_modules/launch-editor": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", - "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", "dev": true, "dependencies": { "picocolors": "^1.0.0", - "shell-quote": "^1.7.3" + "shell-quote": "^1.8.1" } }, "node_modules/less": { @@ -12849,41 +13634,32 @@ } }, "node_modules/magic-string": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", - "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", + "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", "dev": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" + "@jridgewell/sourcemap-codec": "^1.4.15" }, "engines": { "node": ">=12" } }, "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "dependencies": { - "semver": "^6.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -13312,9 +14088,9 @@ } }, "node_modules/mock-socket": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.2.1.tgz", - "integrity": "sha512-aw9F9T9G2zpGipLLhSNh6ZpgUyUl4frcVmRN08uE1NWPWg43Wx6+sGPDbQ7E5iFZZDJW5b5bypMeAEHqTbIFag==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.3.1.tgz", + "integrity": "sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==", "dev": true, "engines": { "node": ">= 8" @@ -13377,12 +14153,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "node_modules/needle": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", @@ -13466,9 +14236,9 @@ } }, "node_modules/ngx-cookie-service": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/ngx-cookie-service/-/ngx-cookie-service-16.0.0.tgz", - "integrity": "sha512-bD0F8/I6Y7lfP1THeQDR70hv1SSEfFOjJqF1tnLphNBvR9EwkITO2KSOtfag7VH5CHT16PRIqv8XaGRDbCNAmA==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/ngx-cookie-service/-/ngx-cookie-service-16.0.1.tgz", + "integrity": "sha512-q8i5eX2b6SIIZcu9wy+lvOU65cLJhHD9EVz5TGGkKi8Y7X/aZbUyQ9U4CgNOfKDWtPUDFOMD8IW/cijoVKe59Q==", "dependencies": { "tslib": "^2.0.0" }, @@ -13494,9 +14264,9 @@ } }, "node_modules/ngx-ui-tour-core": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/ngx-ui-tour-core/-/ngx-ui-tour-core-11.0.3.tgz", - "integrity": "sha512-CKi9NFS3btmjV/QL5zC2pQxmGDyYQBArRnjuQzn9zN+9bSJcwLePAh7jFjPhorbBvK682GutUKDv36OKc6mxJA==", + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/ngx-ui-tour-core/-/ngx-ui-tour-core-11.0.6.tgz", + "integrity": "sha512-fJvnZTqZ15PL+NrU3I/4Fqg0rSCO90ZGFJbsjN6b79tfibEcurRW6ARLPJkyOWPJehpmJFO5zDuXLHzDcQHoQw==", "dependencies": { "tslib": "^2.0.0" }, @@ -13508,11 +14278,11 @@ } }, "node_modules/ngx-ui-tour-ng-bootstrap": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/ngx-ui-tour-ng-bootstrap/-/ngx-ui-tour-ng-bootstrap-13.0.3.tgz", - "integrity": "sha512-ZaJiS4eUzPTb+kl70aRyEkGrmsXo0nN1ePtMxlpl496L2CnnGEQBnz/5NEJrJ0rX89fFmZn5hr39N89N3QEagg==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/ngx-ui-tour-ng-bootstrap/-/ngx-ui-tour-ng-bootstrap-13.0.6.tgz", + "integrity": "sha512-tr9mSZc0R//YfMDIV3h5CJ+8IJhzAks4CgQZGnFpp9O8OtYrs5bnV7LBiaMViHMAPLqgLbx7H1paHotjLOzc4Q==", "dependencies": { - "ngx-ui-tour-core": "11.0.3", + "ngx-ui-tour-core": "11.0.6", "tslib": "^2.0.0" }, "peerDependencies": { @@ -13614,9 +14384,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==" + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" }, "node_modules/nopt": { "version": "6.0.0", @@ -14007,55 +14777,21 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/object-path": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", + "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", "dev": true, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 10.12.0" } }, "node_modules/obuf": { @@ -14420,7 +15156,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, + "devOptional": true, "dependencies": { "entities": "^4.4.0" }, @@ -14463,6 +15199,190 @@ "node": ">= 0.8" } }, + "node_modules/patch-package": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", + "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==", + "dev": true, + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "ci-info": "^3.7.0", + "cross-spawn": "^7.0.3", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^9.0.0", + "json-stable-stringify": "^1.0.2", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^7.5.3", + "slash": "^2.0.0", + "tmp": "^0.0.33", + "yaml": "^2.2.2" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "node": ">=14", + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/patch-package/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/patch-package/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/patch-package/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/patch-package/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/patch-package/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/patch-package/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -14589,9 +15509,9 @@ } }, "node_modules/piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.0.0.tgz", + "integrity": "sha512-641nAmJS4k4iqpNUqfggqUBUMmlw0ZoM5VZKdQkV2e970Inn3Tk9kroCc1wpsYLD07vCwpys5iY0d3xI/9WkTg==", "dev": true, "dependencies": { "eventemitter-asyncresource": "^1.0.0", @@ -14614,10 +15534,28 @@ "node": ">=8" } }, + "node_modules/playwright": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.39.0.tgz", + "integrity": "sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw==", + "dev": true, + "dependencies": { + "playwright-core": "1.39.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, "node_modules/playwright-core": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.37.0.tgz", - "integrity": "sha512-1c46jhTH/myQw6sesrcuHVtLoSNfJv8Pfy9t3rs6subY7kARv0HRw5PpyfPYPpPtQvBOmgbE6K+qgYUpj81LAA==", + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.39.0.tgz", + "integrity": "sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==", "dev": true, "bin": { "playwright-core": "cli.js" @@ -14627,9 +15565,9 @@ } }, "node_modules/postcss": { - "version": "8.4.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", - "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "funding": [ { @@ -14655,14 +15593,13 @@ } }, "node_modules/postcss-loader": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.2.tgz", - "integrity": "sha512-c7qDlXErX6n0VT+LUsW+nwefVtTu3ORtVvK8EXuUIDcxo+b/euYqpuHlJAvePb0Af5e8uMjR/13e0lTuYifaig==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", + "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", "dev": true, "dependencies": { - "cosmiconfig": "^8.1.3", + "cosmiconfig": "^8.2.0", "jiti": "^1.18.2", - "klona": "^2.0.6", "semver": "^7.3.8" }, "engines": { @@ -14777,12 +15714,12 @@ } }, "node_modules/pretty-format": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.2.tgz", - "integrity": "sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.0", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -14900,9 +15837,9 @@ } }, "node_modules/pure-rand": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", - "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz", + "integrity": "sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==", "dev": true, "funding": [ { @@ -15104,9 +16041,9 @@ "dev": true }, "node_modules/regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" @@ -15118,23 +16055,6 @@ "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", "dev": true }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/regexpu-core": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", @@ -15436,9 +16356,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.63.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.2.tgz", - "integrity": "sha512-u56TU0AIFqMtauKl/OJ1AeFsXqRHkgO7nCWmHaDwfxDo9GUMSqBA4NEh6GMuh1CYVM7zuROYtZrHzPc2ixK+ww==", + "version": "1.64.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", + "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -15453,12 +16373,11 @@ } }, "node_modules/sass-loader": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.1.tgz", - "integrity": "sha512-cBTxmgyVA1nXPvIK4brjJMXOMJ2v2YrQEuHqLw3LylGb3gsR6jAvdjHMcy/+JGTmmIF9SauTrLLR7bsWDMWqgg==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", + "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", "dev": true, "dependencies": { - "klona": "^2.0.6", "neo-async": "^2.6.2" }, "engines": { @@ -15535,11 +16454,12 @@ "dev": true }, "node_modules/selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, "dependencies": { + "@types/node-forge": "^1.3.0", "node-forge": "^1" }, "engines": { @@ -15729,6 +16649,21 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -16079,18 +17014,6 @@ "node": ">= 0.8" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", - "dev": true, - "dependencies": { - "internal-slot": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -16323,9 +17246,9 @@ "dev": true }, "node_modules/terser": { - "version": "5.17.7", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.7.tgz", - "integrity": "sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==", + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -16726,9 +17649,9 @@ } }, "node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -16829,6 +17752,12 @@ "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -16975,9 +17904,13 @@ } }, "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } @@ -17040,14 +17973,14 @@ } }, "node_modules/vite": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", - "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.7.tgz", + "integrity": "sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==", "dev": true, "dependencies": { - "esbuild": "^0.17.5", - "postcss": "^8.4.23", - "rollup": "^3.21.0" + "esbuild": "^0.18.10", + "postcss": "^8.4.26", + "rollup": "^3.25.2" }, "bin": { "vite": "bin/vite.js" @@ -17055,12 +17988,16 @@ "engines": { "node": "^14.18.0 || >=16.0.0" }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, "optionalDependencies": { "fsevents": "~2.3.2" }, "peerDependencies": { "@types/node": ">= 14", "less": "*", + "lightningcss": "^1.21.0", "sass": "*", "stylus": "*", "sugarss": "*", @@ -17073,6 +18010,9 @@ "less": { "optional": true }, + "lightningcss": { + "optional": true + }, "sass": { "optional": true }, @@ -17087,6 +18027,16 @@ } } }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, "node_modules/w3c-xmlserializer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", @@ -17186,9 +18136,9 @@ } }, "node_modules/webpack": { - "version": "5.86.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.86.0.tgz", - "integrity": "sha512-3BOvworZ8SO/D4GVP+GoRC3fVeg5MO4vzmq8TJJEkdmopxyazGDxN8ClqN12uzrZW9Tv8EED8v5VSb6Sqyi0pg==", + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -17200,7 +18150,7 @@ "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.14.1", + "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -17210,7 +18160,7 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", @@ -17261,9 +18211,9 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.0.tgz", - "integrity": "sha512-HmNB5QeSl1KpulTBQ8UT4FPrByYyaLxpJoQ0+s7EvUrMc16m0ZS1sgb1XGqzmgCPk0c9y+aaXxn11tbLzuM7NQ==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, "dependencies": { "@types/bonjour": "^3.5.9", @@ -17272,7 +18222,7 @@ "@types/serve-index": "^1.9.1", "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", @@ -17540,57 +18490,6 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dev": true, - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -17777,6 +18676,15 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, + "node_modules/yaml": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", + "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -17837,9 +18745,9 @@ } }, "node_modules/zone.js": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.13.1.tgz", - "integrity": "sha512-+bIeDAFEBYuXRuU3qGQvzdPap+N1zjM4KkBAiiQuVVCrHrhjDuY6VkUhNa5+U27+9w0q3fbKiMCbpJ0XzMmSWA==", + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.13.3.tgz", + "integrity": "sha512-MKPbmZie6fASC/ps4dkmIhaT5eonHkEt6eAy80K42tAm0G2W+AahLJjbfi6X9NPdciOE9GRFTTM8u2IiF6O3ww==", "dependencies": { "tslib": "^2.3.0" } diff --git a/src-ui/package.json b/src-ui/package.json index 85762c702..39e71d033 100644 --- a/src-ui/package.json +++ b/src-ui/package.json @@ -6,56 +6,59 @@ "start": "ng serve", "build": "ng build", "test": "ng test --no-watch --coverage", - "lint": "ng lint" + "lint": "ng lint", + "postinstall": "patch-package" }, "private": true, "dependencies": { - "@angular/common": "~16.1.7", - "@angular/compiler": "~16.1.7", - "@angular/core": "~16.1.7", - "@angular/forms": "~16.1.7", - "@angular/localize": "~16.1.7", - "@angular/platform-browser": "~16.1.7", - "@angular/platform-browser-dynamic": "~16.1.7", - "@angular/router": "~16.1.7", - "@ng-bootstrap/ng-bootstrap": "^15.1.0", - "@ng-select/ng-select": "^11.1.1", + "@angular/cdk": "^16.2.11", + "@angular/common": "~16.2.11", + "@angular/compiler": "~16.2.11", + "@angular/core": "~16.2.11", + "@angular/forms": "~16.2.11", + "@angular/localize": "~16.2.11", + "@angular/platform-browser": "~16.2.11", + "@angular/platform-browser-dynamic": "~16.2.11", + "@angular/router": "~16.2.11", + "@ng-bootstrap/ng-bootstrap": "^15.1.2", + "@ng-select/ng-select": "^11.2.0", "@ngneat/dirty-check-forms": "^3.0.3", "@popperjs/core": "^2.11.8", - "bootstrap": "^5.3.1", + "bootstrap": "^5.3.2", "file-saver": "^2.0.5", "mime-names": "^1.0.0", "ng2-pdf-viewer": "^10.0.0", "ngx-color": "^9.0.0", - "ngx-cookie-service": "^16.0.0", + "ngx-cookie-service": "^16.0.1", "ngx-file-drop": "^16.0.0", - "ngx-ui-tour-ng-bootstrap": "^13.0.3", + "ngx-ui-tour-ng-bootstrap": "^13.0.6", "rxjs": "^7.8.1", - "tslib": "^2.6.1", - "uuid": "^9.0.0", - "zone.js": "^0.13.0" + "tslib": "^2.6.2", + "uuid": "^9.0.1", + "zone.js": "^0.13.3" }, "devDependencies": { - "@angular-builders/jest": "16.0.0", - "@angular-devkit/build-angular": "~16.1.6", - "@angular-eslint/builder": "16.1.0", - "@angular-eslint/eslint-plugin": "16.1.0", - "@angular-eslint/eslint-plugin-template": "16.1.0", - "@angular-eslint/schematics": "16.1.0", - "@angular-eslint/template-parser": "16.1.0", - "@angular/cli": "~16.1.6", - "@angular/compiler-cli": "~16.1.3", - "@playwright/test": "^1.36.2", - "@types/jest": "^29.5.3", - "@types/node": "^20.4.5", - "@typescript-eslint/eslint-plugin": "^6.2.1", - "@typescript-eslint/parser": "^6.2.1", - "concurrently": "^8.1.0", - "eslint": "^8.46.0", - "jest": "29.6.2", - "jest-environment-jsdom": "^29.6.2", + "@angular-builders/jest": "16.0.1", + "@angular-devkit/build-angular": "~16.2.9", + "@angular-eslint/builder": "16.2.0", + "@angular-eslint/eslint-plugin": "16.2.0", + "@angular-eslint/eslint-plugin-template": "16.2.0", + "@angular-eslint/schematics": "16.2.0", + "@angular-eslint/template-parser": "16.2.0", + "@angular/cli": "~16.2.9", + "@angular/compiler-cli": "~16.2.3", + "@playwright/test": "^1.39.0", + "@types/jest": "^29.5.7", + "@types/node": "^20.8.10", + "@typescript-eslint/eslint-plugin": "^6.9.1", + "@typescript-eslint/parser": "^6.9.1", + "concurrently": "^8.2.2", + "eslint": "^8.52.0", + "jest": "29.7.0", + "jest-environment-jsdom": "^29.7.0", "jest-preset-angular": "^13.1.1", - "jest-websocket-mock": "^2.4.0", + "jest-websocket-mock": "^2.5.0", + "patch-package": "^8.0.0", "ts-node": "~10.9.1", "typescript": "^5.1.6", "wait-on": "^7.0.1" diff --git a/src-ui/patches/ngx-file-drop+16.0.0.patch b/src-ui/patches/ngx-file-drop+16.0.0.patch new file mode 100644 index 000000000..759ea75f6 --- /dev/null +++ b/src-ui/patches/ngx-file-drop+16.0.0.patch @@ -0,0 +1,206 @@ +diff --git a/node_modules/ngx-file-drop/esm2022/lib/dom.types.mjs b/node_modules/ngx-file-drop/esm2022/lib/dom.types.mjs +index 825469b..85bdc89 100644 +--- a/node_modules/ngx-file-drop/esm2022/lib/dom.types.mjs ++++ b/node_modules/ngx-file-drop/esm2022/lib/dom.types.mjs +@@ -1,2 +1,4 @@ +-export {}; +-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZpbGUtZHJvcC9zcmMvbGliL2RvbS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVN5c3RlbUVudHJ5IHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgaXNEaXJlY3Rvcnk6IGJvb2xlYW5cclxuICBpc0ZpbGU6IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWxlU3lzdGVtRW50cnlNZXRhZGF0YSB7XHJcbiAgbW9kaWZpY2F0aW9uVGltZT86IERhdGUsXHJcbiAgc2l6ZT86IG51bWJlclxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIge1xyXG4gIHJlYWRFbnRyaWVzKFxyXG4gICAgc3VjY2Vzc0NhbGxiYWNrOiAocmVzdWx0OiBGaWxlU3lzdGVtRW50cnlbXSkgPT4gdm9pZCxcclxuICApOiB2b2lkXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVN5c3RlbUZsYWdzIHtcclxuICBjcmVhdGU/OiBib29sZWFuXHJcbiAgZXhjbHVzaXZlPzogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSBleHRlbmRzIEZpbGVTeXN0ZW1FbnRyeSB7XHJcbiAgaXNEaXJlY3Rvcnk6IHRydWVcclxuICBpc0ZpbGU6IGZhbHNlXHJcbiAgY3JlYXRlUmVhZGVyKCk6IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXJcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWxlU3lzdGVtRmlsZUVudHJ5IGV4dGVuZHMgRmlsZVN5c3RlbUVudHJ5IHtcclxuICBpc0RpcmVjdG9yeTogZmFsc2VcclxuICBpc0ZpbGU6IHRydWVcclxuICBmaWxlPFQ+KGNhbGxiYWNrOiAoZmlsZTogRmlsZSkgPT4gVCk6IFRcclxufVxyXG4iXX0= +\ No newline at end of file ++export function isDataTransferItem(item) { ++ return "webkitGetAsEntry" in item && "getAsFile" in item; ++} ++//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZpbGUtZHJvcC9zcmMvbGliL2RvbS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQ0EsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQTZCO0lBQzlELE9BQU8sa0JBQWtCLElBQUksSUFBSSxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGludGVyZmFjZSBGaWxlU3lzdGVtRW50cnkge1xuICBuYW1lOiBzdHJpbmcsXG4gIGlzRGlyZWN0b3J5OiBib29sZWFuXG4gIGlzRmlsZTogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTeXN0ZW1FbnRyeU1ldGFkYXRhIHtcbiAgbW9kaWZpY2F0aW9uVGltZT86IERhdGUsXG4gIHNpemU/OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyIHtcbiAgcmVhZEVudHJpZXMoXG4gICAgc3VjY2Vzc0NhbGxiYWNrOiAocmVzdWx0OiBGaWxlU3lzdGVtRW50cnlbXSkgPT4gdm9pZCxcbiAgKTogdm9pZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTeXN0ZW1GbGFncyB7XG4gIGNyZWF0ZT86IGJvb2xlYW5cbiAgZXhjbHVzaXZlPzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSBleHRlbmRzIEZpbGVTeXN0ZW1FbnRyeSB7XG4gIGlzRGlyZWN0b3J5OiB0cnVlXG4gIGlzRmlsZTogZmFsc2VcbiAgY3JlYXRlUmVhZGVyKCk6IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlU3lzdGVtRmlsZUVudHJ5IGV4dGVuZHMgRmlsZVN5c3RlbUVudHJ5IHtcbiAgaXNEaXJlY3Rvcnk6IGZhbHNlXG4gIGlzRmlsZTogdHJ1ZVxuICBmaWxlPFQ+KGNhbGxiYWNrOiAoZmlsZTogRmlsZSkgPT4gVCk6IFRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0YVRyYW5zZmVySXRlbShpdGVtOiBEYXRhVHJhbnNmZXJJdGVtIHwgRmlsZSk6IGl0ZW0gaXMgRGF0YVRyYW5zZmVySXRlbSB7XG4gIHJldHVybiBcIndlYmtpdEdldEFzRW50cnlcIiBpbiBpdGVtICYmIFwiZ2V0QXNGaWxlXCIgaW4gaXRlbTtcbn1cbiJdfQ== +\ No newline at end of file +diff --git a/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop-entry.mjs b/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop-entry.mjs +index 2cd97e8..c89ace2 100644 +--- a/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop-entry.mjs ++++ b/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop-entry.mjs +@@ -9,4 +9,4 @@ export class NgxFileDropEntry { + this.fileEntry = fileEntry; + } + } +-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpbGUtZHJvcC1lbnRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1maWxlLWRyb3Avc3JjL2xpYi9uZ3gtZmlsZS1kcm9wLWVudHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLFlBQ1csWUFBb0IsRUFDcEIsU0FBMEI7UUFEMUIsaUJBQVksR0FBWixZQUFZLENBQVE7UUFDcEIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7SUFFckMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsZVN5c3RlbUVudHJ5LCBGaWxlU3lzdGVtRmlsZUVudHJ5LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkgfSBmcm9tICcuL2RvbS50eXBlcyc7XHJcblxyXG4vKipcclxuICogZmlsZUVudHJ5IGlzIGFuIGluc3RhbmNlIG9mIHtAbGluayBGaWxlU3lzdGVtRmlsZUVudHJ5fSBvciB7QGxpbmsgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5fS5cclxuICogV2hpY2ggb25lIGlzIGl0IGNhbiBiZSBjaGVja2VkIHVzaW5nIHtAbGluayBGaWxlU3lzdGVtRW50cnkuaXNGaWxlfSBvciB7QGxpbmsgRmlsZVN5c3RlbUVudHJ5LmlzRGlyZWN0b3J5fVxyXG4gKiBwcm9wZXJ0aWVzIG9mIHRoZSBnaXZlbiB7QGxpbmsgRmlsZVN5c3RlbUVudHJ5fS5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBOZ3hGaWxlRHJvcEVudHJ5IHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyByZWxhdGl2ZVBhdGg6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgZmlsZUVudHJ5OiBGaWxlU3lzdGVtRW50cnlcclxuICAgICkge1xyXG4gICAgfVxyXG59XHJcbiJdfQ== +\ No newline at end of file ++//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpbGUtZHJvcC1lbnRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1maWxlLWRyb3Avc3JjL2xpYi9uZ3gtZmlsZS1kcm9wLWVudHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLFlBQ1csWUFBb0IsRUFDcEIsU0FBMEI7UUFEMUIsaUJBQVksR0FBWixZQUFZLENBQVE7UUFDcEIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7SUFFckMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsZVN5c3RlbUVudHJ5LCBGaWxlU3lzdGVtRmlsZUVudHJ5LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkgfSBmcm9tICcuL2RvbS50eXBlcyc7XG5cbi8qKlxuICogZmlsZUVudHJ5IGlzIGFuIGluc3RhbmNlIG9mIHtAbGluayBGaWxlU3lzdGVtRmlsZUVudHJ5fSBvciB7QGxpbmsgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5fS5cbiAqIFdoaWNoIG9uZSBpcyBpdCBjYW4gYmUgY2hlY2tlZCB1c2luZyB7QGxpbmsgRmlsZVN5c3RlbUVudHJ5LmlzRmlsZX0gb3Ige0BsaW5rIEZpbGVTeXN0ZW1FbnRyeS5pc0RpcmVjdG9yeX1cbiAqIHByb3BlcnRpZXMgb2YgdGhlIGdpdmVuIHtAbGluayBGaWxlU3lzdGVtRW50cnl9LlxuICovXG5leHBvcnQgY2xhc3MgTmd4RmlsZURyb3BFbnRyeSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWxhdGl2ZVBhdGg6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGZpbGVFbnRyeTogRmlsZVN5c3RlbUVudHJ5XG4gICAgKSB7XG4gICAgfVxufVxuIl19 +\ No newline at end of file +diff --git a/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop.component.mjs b/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop.component.mjs +index 7ef2b4b..c180621 100644 +--- a/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop.component.mjs ++++ b/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop.component.mjs +@@ -1,6 +1,7 @@ + import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewChild } from '@angular/core'; + import { timer } from 'rxjs'; + import { NgxFileDropEntry } from './ngx-file-drop-entry'; ++import { isDataTransferItem } from './dom.types'; + import { NgxFileDropContentTemplateDirective } from './ngx-templates.directive'; + import * as i0 from "@angular/core"; + import * as i1 from "@angular/common"; +@@ -134,17 +135,8 @@ export class NgxFileDropComponent { + if (!item) { + return; + } +- // if ("getAsFile" in item) { +- // const file = item.getAsFile(); +- // if (file) { +- // this.addToQueue( +- // this.getFakeDropEntry(file) +- // ); +- // return; +- // } +- // } +- if ("webkitGetAsEntry" in item) { +- let entry = item.webkitGetAsEntry(); ++ if (isDataTransferItem(item)) { ++ const entry = item.webkitGetAsEntry(); + if (entry) { + if (entry.isFile) { + const toUpload = new NgxFileDropEntry(entry.name, entry); +@@ -155,6 +147,11 @@ export class NgxFileDropComponent { + } + return; + } ++ const file = item.getAsFile(); ++ if (file) { ++ this.addToQueue(this.getFakeDropEntry(file)); ++ } ++ return; + } + this.addToQueue(this.getFakeDropEntry(item)); + } +@@ -266,11 +263,11 @@ export class NgxFileDropComponent { + event.preventDefault(); + } + static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: NgxFileDropComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); } +- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: NgxFileDropComponent, selector: "ngx-file-drop", inputs: { accept: "accept", directory: "directory", multiple: "multiple", dropZoneLabel: "dropZoneLabel", dropZoneClassName: "dropZoneClassName", useDragEnter: "useDragEnter", contentClassName: "contentClassName", showBrowseBtn: "showBrowseBtn", browseBtnClassName: "browseBtnClassName", browseBtnLabel: "browseBtnLabel", disabled: "disabled" }, outputs: { onFileDrop: "onFileDrop", onFileOver: "onFileOver", onFileLeave: "onFileLeave" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: NgxFileDropContentTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "fileSelector", first: true, predicate: ["fileSelector"], descendants: true, static: true }], ngImport: i0, template: "
\r\n
\r\n \r\n\r\n \r\n
{{dropZoneLabel}}
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n", styles: [".ngx-file-drop__drop-zone{height:100px;margin:auto;border:2px dotted #0782d0;border-radius:30px}.ngx-file-drop__drop-zone--over{background-color:#93939380}.ngx-file-drop__content{display:flex;align-items:center;justify-content:center;height:100px;color:#0782d0}.ngx-file-drop__drop-zone-label{text-align:center}.ngx-file-drop__file-input{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); } ++ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: NgxFileDropComponent, selector: "ngx-file-drop", inputs: { accept: "accept", directory: "directory", multiple: "multiple", dropZoneLabel: "dropZoneLabel", dropZoneClassName: "dropZoneClassName", useDragEnter: "useDragEnter", contentClassName: "contentClassName", showBrowseBtn: "showBrowseBtn", browseBtnClassName: "browseBtnClassName", browseBtnLabel: "browseBtnLabel", disabled: "disabled" }, outputs: { onFileDrop: "onFileDrop", onFileOver: "onFileOver", onFileLeave: "onFileLeave" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: NgxFileDropContentTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "fileSelector", first: true, predicate: ["fileSelector"], descendants: true, static: true }], ngImport: i0, template: "
\n
\n \n\n \n
{{dropZoneLabel}}
\n
\n \n
\n
\n\n \n \n
\n
\n", styles: [".ngx-file-drop__drop-zone{height:100px;margin:auto;border:2px dotted #0782d0;border-radius:30px}.ngx-file-drop__drop-zone--over{background-color:#93939380}.ngx-file-drop__content{display:flex;align-items:center;justify-content:center;height:100px;color:#0782d0}.ngx-file-drop__drop-zone-label{text-align:center}.ngx-file-drop__file-input{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); } + } + i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: NgxFileDropComponent, decorators: [{ + type: Component, +- args: [{ selector: 'ngx-file-drop', template: "
\r\n
\r\n \r\n\r\n \r\n
{{dropZoneLabel}}
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n", styles: [".ngx-file-drop__drop-zone{height:100px;margin:auto;border:2px dotted #0782d0;border-radius:30px}.ngx-file-drop__drop-zone--over{background-color:#93939380}.ngx-file-drop__content{display:flex;align-items:center;justify-content:center;height:100px;color:#0782d0}.ngx-file-drop__drop-zone-label{text-align:center}.ngx-file-drop__file-input{display:none}\n"] }] ++ args: [{ selector: 'ngx-file-drop', template: "
\n
\n \n\n \n
{{dropZoneLabel}}
\n
\n \n
\n
\n\n \n \n
\n
\n", styles: [".ngx-file-drop__drop-zone{height:100px;margin:auto;border:2px dotted #0782d0;border-radius:30px}.ngx-file-drop__drop-zone--over{background-color:#93939380}.ngx-file-drop__content{display:flex;align-items:center;justify-content:center;height:100px;color:#0782d0}.ngx-file-drop__drop-zone-label{text-align:center}.ngx-file-drop__file-input{display:none}\n"] }] + }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { accept: [{ + type: Input + }], directory: [{ +@@ -306,4 +303,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor + }], disabled: [{ + type: Input + }] } }); +-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpbGUtZHJvcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlsZS1kcm9wL3NyYy9saWIvbmd4LWZpbGUtZHJvcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlsZS1kcm9wL3NyYy9saWIvbmd4LWZpbGUtZHJvcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFPaEYsTUFBTSxPQUFPLG9CQUFvQjtJQStEL0IsSUFBVyxRQUFRLEtBQWMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUV6RCxJQUNXLFFBQVEsQ0FBQyxLQUFjO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFlBQ1UsSUFBWSxFQUNaLFFBQW1CO1FBRG5CLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBckV0QixXQUFNLEdBQVcsR0FBRyxDQUFDO1FBR3JCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFHM0IsYUFBUSxHQUFZLElBQUksQ0FBQztRQUd6QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUczQixzQkFBaUIsR0FBVywwQkFBMEIsQ0FBQztRQUd2RCxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUc5QixxQkFBZ0IsR0FBVyx3QkFBd0IsQ0FBQztRQUdwRCxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUcvQix1QkFBa0IsR0FBVyxrREFBa0QsQ0FBQztRQUdoRixtQkFBYyxHQUFXLGNBQWMsQ0FBQztRQUd4QyxlQUFVLEdBQXFDLElBQUksWUFBWSxFQUFFLENBQUM7UUFHbEUsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBR25ELGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFRcEQsMkJBQXNCLEdBQVksS0FBSyxDQUFDO1FBRXZDLDZCQUF3QixHQUFZLEtBQUssQ0FBQztRQUkxQyxVQUFLLEdBQXVCLEVBQUUsQ0FBQztRQUMvQiwyQkFBc0IsR0FBVyxDQUFDLENBQUM7UUFFbkMsaUJBQVksR0FBMkIsSUFBSSxDQUFDO1FBQzVDLDJCQUFzQixHQUEwQixJQUFJLENBQUM7UUFFckQsK0JBQTBCLEdBQXdCLElBQUksQ0FBQztRQUV2RCxjQUFTLEdBQVksS0FBSyxDQUFDO1FBc0Y1QixxQkFBZ0IsR0FBRyxDQUFDLEtBQWtCLEVBQVEsRUFBRTtZQUNyRCxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3ZELElBQUksQ0FBQyxZQUFZLENBQUMsYUFBa0MsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUMvRDtRQUNILENBQUMsQ0FBQztRQTdFQSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDLEdBQVUsRUFBRSxFQUFFO1lBQzFGLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQVUsRUFBRSxFQUFFO1lBQ3RGLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRTtZQUNuQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztTQUN4QztRQUNELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7SUFDckMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFnQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUU7Z0JBQ3RCLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQzthQUN4QztTQUNGO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQ2pGLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzdCO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQVk7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0I7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFZO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtZQUM5QixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztnQkFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDOUI7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUFnQjtRQUMvQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO1lBQzdCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDcEMsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQ3RCLElBQUksS0FBc0MsQ0FBQztZQUMzQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO2dCQUM1QixLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7YUFDbEM7aUJBQU07Z0JBQ0wsS0FBSyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO2FBQ2xDO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQVFEOzs7T0FHRztJQUNJLFdBQVcsQ0FBQyxLQUFZO1FBQzdCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUU7WUFDN0IsT0FBTztTQUNSO1FBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE1BQU0sS0FBSyxHQUFJLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssSUFBSyxFQUFVLENBQUM7WUFDdEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBVTtRQUNqQyxNQUFNLGFBQWEsR0FBd0I7WUFDekMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsV0FBVyxFQUFFLEtBQUs7WUFDbEIsTUFBTSxFQUFFLElBQUk7WUFDWixJQUFJLEVBQUUsQ0FBSSxRQUE0QixFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQzFELENBQUM7UUFDRixPQUFPLElBQUksZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sU0FBUyxDQUFDLElBQTZCO1FBQzdDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFDRCw2QkFBNkI7UUFDN0IsbUNBQW1DO1FBQ25DLGdCQUFnQjtRQUNoQix1QkFBdUI7UUFDdkIsb0NBQW9DO1FBQ3BDLFNBQVM7UUFDVCxjQUFjO1FBQ2QsTUFBTTtRQUNOLElBQUk7UUFDSixJQUFJLGtCQUFrQixJQUFJLElBQUksRUFBRTtZQUM5QixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNwQyxJQUFJLEtBQUssRUFBRTtnQkFDVCxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7b0JBQ2hCLE1BQU0sUUFBUSxHQUFxQixJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzNFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBRTNCO3FCQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRTtvQkFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQzFDO2dCQUNELE9BQU87YUFDUjtTQUNGO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUUsSUFBYSxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQXNDO1FBQ3ZELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUI7UUFFRCxJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRTtZQUNuQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDL0M7UUFDRCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7YUFDOUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsS0FBSyxDQUFDLEVBQUU7Z0JBQzlELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM3QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGdCQUFnQixDQUFDLElBQXFCLEVBQUUsSUFBWTtRQUMxRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixNQUFNLFFBQVEsR0FBcUIsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FFM0I7YUFBTTtZQUNMLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDO1lBQ2xCLE1BQU0sU0FBUyxHQUFJLElBQWlDLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEUsSUFBSSxPQUFPLEdBQXNCLEVBQUUsQ0FBQztZQUVwQyxNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUM5QixTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO3dCQUNsQixvQkFBb0I7d0JBQ3BCLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7NEJBQ3hCLE1BQU0sUUFBUSxHQUFxQixJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzs0QkFDcEUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dDQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUM1QixDQUFDLENBQUMsQ0FBQzt5QkFFSjs2QkFBTTs0QkFDTCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQ0FDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29DQUNqQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0NBQzVELENBQUMsQ0FBQyxDQUFDOzZCQUNKO3lCQUNGO3FCQUVGO3lCQUFNO3dCQUNMLDRCQUE0Qjt3QkFDNUIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ2pDLFdBQVcsRUFBRSxDQUFDO3FCQUNmO29CQUVELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUNoQyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQztZQUVGLFdBQVcsRUFBRSxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjO1FBQ3BCLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRTtZQUN4RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWlDLENBQUM7WUFDeEUsTUFBTSxvQkFBb0IsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDO1lBQ3ZELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ2pELE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7WUFFckUsOEVBQThFO1lBQzlFLElBQUksb0JBQW9CLEtBQUssWUFBWSxFQUFFO2dCQUN6Qyw4RUFBOEU7Z0JBQzlFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUN0RixtR0FBbUc7Z0JBQ25HLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDckQsZ0VBQWdFO2dCQUNoRSxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3JCLHFGQUFxRjtnQkFDckYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixDQUFDLENBQUM7Z0JBQ3RGLDRDQUE0QztnQkFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsc0JBQXNCLENBQUMsQ0FBQzthQUN6RTtTQUNGO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFvQixDQUFDO1NBQzVFO1FBRUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNLLDhCQUE4QjtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQ2hDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQW1CLENBQUM7U0FDcEY7UUFFRCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTyxVQUFVLENBQUMsSUFBc0I7UUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFZO1FBQ2pDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDekIsQ0FBQzs4R0F2VVUsb0JBQW9CO2tHQUFwQixvQkFBb0IseWhCQTBDakIsbUNBQW1DLDJCQUFVLFdBQVcseUpDbEV4RSw2NENBa0NBOzsyRkRWYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsZUFBZTtxSEFPbEIsTUFBTTtzQkFEWixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixNQUFNO2dCQUlBLFVBQVU7c0JBRGhCLE1BQU07Z0JBSUEsV0FBVztzQkFEakIsTUFBTTtnQkFJbUUsZUFBZTtzQkFBeEYsWUFBWTt1QkFBQyxtQ0FBbUMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBR2pFLFlBQVk7c0JBRGxCLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFzQmhDLFFBQVE7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBOZ3hGaWxlRHJvcEVudHJ5IH0gZnJvbSAnLi9uZ3gtZmlsZS1kcm9wLWVudHJ5JztcclxuaW1wb3J0IHsgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LCBGaWxlU3lzdGVtRW50cnksIEZpbGVTeXN0ZW1GaWxlRW50cnkgfSBmcm9tICcuL2RvbS50eXBlcyc7XHJcbmltcG9ydCB7IE5neEZpbGVEcm9wQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9uZ3gtdGVtcGxhdGVzLmRpcmVjdGl2ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC1maWxlLWRyb3AnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtZmlsZS1kcm9wLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uZ3gtZmlsZS1kcm9wLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hGaWxlRHJvcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFjY2VwdDogc3RyaW5nID0gJyonO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkaXJlY3Rvcnk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkcm9wWm9uZUxhYmVsOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZHJvcFpvbmVDbGFzc05hbWU6IHN0cmluZyA9ICduZ3gtZmlsZS1kcm9wX19kcm9wLXpvbmUnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB1c2VEcmFnRW50ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY29udGVudENsYXNzTmFtZTogc3RyaW5nID0gJ25neC1maWxlLWRyb3BfX2NvbnRlbnQnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93QnJvd3NlQnRuOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGJyb3dzZUJ0bkNsYXNzTmFtZTogc3RyaW5nID0gJ2J0biBidG4tcHJpbWFyeSBidG4teHMgbmd4LWZpbGUtZHJvcF9fYnJvd3NlLWJ0bic7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGJyb3dzZUJ0bkxhYmVsOiBzdHJpbmcgPSAnQnJvd3NlIGZpbGVzJztcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uRmlsZURyb3A6IEV2ZW50RW1pdHRlcjxOZ3hGaWxlRHJvcEVudHJ5W10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb25GaWxlT3ZlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBvbkZpbGVMZWF2ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8vIGN1c3RvbSB0ZW1wbGF0ZXNcclxuICBAQ29udGVudENoaWxkKE5neEZpbGVEcm9wQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIGNvbnRlbnRUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVTZWxlY3RvcicsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHVibGljIGZpbGVTZWxlY3Rvcj86IEVsZW1lbnRSZWY7XHJcblxyXG4gIHB1YmxpYyBpc0RyYWdnaW5nT3ZlckRyb3Bab25lOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgZ2xvYmFsRHJhZ2dpbmdJblByb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBnbG9iYWxEcmFnU3RhcnRMaXN0ZW5lcjogKCkgPT4gdm9pZDtcclxuICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbERyYWdFbmRMaXN0ZW5lcjogKCkgPT4gdm9pZDtcclxuXHJcbiAgcHJpdmF0ZSBmaWxlczogTmd4RmlsZURyb3BFbnRyeVtdID0gW107XHJcbiAgcHJpdmF0ZSBudW1PZkFjdGl2ZVJlYWRFbnRyaWVzOiBudW1iZXIgPSAwO1xyXG5cclxuICBwcml2YXRlIGhlbHBlckZvcm1FbDogSFRNTEZvcm1FbGVtZW50IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBmaWxlSW5wdXRQbGFjZWhvbGRlckVsOiBIVE1MRGl2RWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGRyb3BFdmVudFRpbWVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOyB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZGlzYWJsZWQgPSAodmFsdWUgIT0gbnVsbCAmJiBgJHt2YWx1ZX1gICE9PSAnZmFsc2UnKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcclxuICApIHtcclxuICAgIHRoaXMuZ2xvYmFsRHJhZ1N0YXJ0TGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnZHJhZ3N0YXJ0JywgKGV2dDogRXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5nbG9iYWxEcmFnZ2luZ0luUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdsb2JhbERyYWdFbmRMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdkcmFnZW5kJywgKGV2dDogRXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5nbG9iYWxEcmFnZ2luZ0luUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZHJvcEV2ZW50VGltZXJTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5kcm9wRXZlbnRUaW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLmRyb3BFdmVudFRpbWVyU3Vic2NyaXB0aW9uID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZ2xvYmFsRHJhZ1N0YXJ0TGlzdGVuZXIoKTtcclxuICAgIHRoaXMuZ2xvYmFsRHJhZ0VuZExpc3RlbmVyKCk7XHJcbiAgICB0aGlzLmZpbGVzID0gW107XHJcbiAgICB0aGlzLmhlbHBlckZvcm1FbCA9IG51bGw7XHJcbiAgICB0aGlzLmZpbGVJbnB1dFBsYWNlaG9sZGVyRWwgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudXNlRHJhZ0VudGVyKSB7XHJcbiAgICAgIHRoaXMucHJldmVudEFuZFN0b3AoZXZlbnQpO1xyXG4gICAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyKSB7XHJcbiAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSc7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNEcm9wem9uZURpc2FibGVkKCkgJiYgIXRoaXMudXNlRHJhZ0VudGVyICYmIGV2ZW50LmRhdGFUcmFuc2Zlcikge1xyXG4gICAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZ092ZXJEcm9wWm9uZSkge1xyXG4gICAgICAgIHRoaXMuaXNEcmFnZ2luZ092ZXJEcm9wWm9uZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vbkZpbGVPdmVyLmVtaXQoZXZlbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucHJldmVudEFuZFN0b3AoZXZlbnQpO1xyXG4gICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkRyYWdFbnRlcihldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0Ryb3B6b25lRGlzYWJsZWQoKSAmJiB0aGlzLnVzZURyYWdFbnRlcikge1xyXG4gICAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZ092ZXJEcm9wWm9uZSkge1xyXG4gICAgICAgIHRoaXMuaXNEcmFnZ2luZ092ZXJEcm9wWm9uZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vbkZpbGVPdmVyLmVtaXQoZXZlbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucHJldmVudEFuZFN0b3AoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzRHJvcHpvbmVEaXNhYmxlZCgpKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzRHJhZ2dpbmdPdmVyRHJvcFpvbmUpIHtcclxuICAgICAgICB0aGlzLmlzRHJhZ2dpbmdPdmVyRHJvcFpvbmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm9uRmlsZUxlYXZlLmVtaXQoZXZlbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucHJldmVudEFuZFN0b3AoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRyb3BGaWxlcyhldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc0Ryb3B6b25lRGlzYWJsZWQoKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzRHJhZ2dpbmdPdmVyRHJvcFpvbmUgPSBmYWxzZTtcclxuICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIpIHtcclxuICAgICAgbGV0IGl0ZW1zOiBGaWxlTGlzdCB8IERhdGFUcmFuc2Zlckl0ZW1MaXN0O1xyXG4gICAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zKSB7XHJcbiAgICAgICAgaXRlbXMgPSBldmVudC5kYXRhVHJhbnNmZXIuaXRlbXM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaXRlbXMgPSBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXM7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wcmV2ZW50QW5kU3RvcChldmVudCk7XHJcbiAgICAgIHRoaXMuY2hlY2tGaWxlcyhpdGVtcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlbkZpbGVTZWxlY3RvciA9IChldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkID0+IHtcclxuICAgIGlmICh0aGlzLmZpbGVTZWxlY3RvciAmJiB0aGlzLmZpbGVTZWxlY3Rvci5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICh0aGlzLmZpbGVTZWxlY3Rvci5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNsaWNrKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogUHJvY2Vzc2VzIHRoZSBjaGFuZ2UgZXZlbnQgb2YgdGhlIGZpbGUgaW5wdXQgYW5kIGFkZHMgdGhlIGdpdmVuIGZpbGVzLlxyXG4gICAqIEBwYXJhbSBFdmVudCBldmVudFxyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGxvYWRGaWxlcyhldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzRHJvcHpvbmVEaXNhYmxlZCgpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChldmVudC50YXJnZXQpIHtcclxuICAgICAgY29uc3QgaXRlbXMgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzIHx8IChbXSBhcyBhbnkpO1xyXG4gICAgICB0aGlzLmNoZWNrRmlsZXMoaXRlbXMpO1xyXG4gICAgICB0aGlzLnJlc2V0RmlsZUlucHV0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZha2VEcm9wRW50cnkoZmlsZTogRmlsZSk6IE5neEZpbGVEcm9wRW50cnkge1xyXG4gICAgY29uc3QgZmFrZUZpbGVFbnRyeTogRmlsZVN5c3RlbUZpbGVFbnRyeSA9IHtcclxuICAgICAgbmFtZTogZmlsZS5uYW1lLFxyXG4gICAgICBpc0RpcmVjdG9yeTogZmFsc2UsXHJcbiAgICAgIGlzRmlsZTogdHJ1ZSxcclxuICAgICAgZmlsZTogPFQ+KGNhbGxiYWNrOiAoZmlsZWE6IEZpbGUpID0+IFQpID0+IGNhbGxiYWNrKGZpbGUpLFxyXG4gICAgfTtcclxuICAgIHJldHVybiBuZXcgTmd4RmlsZURyb3BFbnRyeShmYWtlRmlsZUVudHJ5Lm5hbWUsIGZha2VGaWxlRW50cnkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0ZpbGUoaXRlbTogRGF0YVRyYW5zZmVySXRlbSB8IEZpbGUpOiB2b2lkIHtcclxuICAgIGlmICghaXRlbSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBpZiAoXCJnZXRBc0ZpbGVcIiBpbiBpdGVtKSB7XHJcbiAgICAvLyAgIGNvbnN0IGZpbGUgPSBpdGVtLmdldEFzRmlsZSgpO1xyXG4gICAgLy8gICBpZiAoZmlsZSkge1xyXG4gICAgLy8gICAgIHRoaXMuYWRkVG9RdWV1ZShcclxuICAgIC8vICAgICAgIHRoaXMuZ2V0RmFrZURyb3BFbnRyeShmaWxlKVxyXG4gICAgLy8gICAgICk7XHJcbiAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgICBpZiAoXCJ3ZWJraXRHZXRBc0VudHJ5XCIgaW4gaXRlbSkge1xyXG4gICAgICBsZXQgZW50cnkgPSBpdGVtLndlYmtpdEdldEFzRW50cnkoKTtcclxuICAgICAgaWYgKGVudHJ5KSB7XHJcbiAgICAgICAgaWYgKGVudHJ5LmlzRmlsZSkge1xyXG4gICAgICAgICAgY29uc3QgdG9VcGxvYWQ6IE5neEZpbGVEcm9wRW50cnkgPSBuZXcgTmd4RmlsZURyb3BFbnRyeShlbnRyeS5uYW1lLCBlbnRyeSk7XHJcbiAgICAgICAgICB0aGlzLmFkZFRvUXVldWUodG9VcGxvYWQpO1xyXG5cclxuICAgICAgICB9IGVsc2UgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KSB7XHJcbiAgICAgICAgICB0aGlzLnRyYXZlcnNlRmlsZVRyZWUoZW50cnksIGVudHJ5Lm5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuYWRkVG9RdWV1ZSh0aGlzLmdldEZha2VEcm9wRW50cnkoKGl0ZW0gYXMgRmlsZSkpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tGaWxlcyhpdGVtczogRmlsZUxpc3QgfCBEYXRhVHJhbnNmZXJJdGVtTGlzdCk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLmNoZWNrRmlsZShpdGVtc1tpXSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZHJvcEV2ZW50VGltZXJTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5kcm9wRXZlbnRUaW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kcm9wRXZlbnRUaW1lclN1YnNjcmlwdGlvbiA9IHRpbWVyKDIwMCwgMjAwKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPiAwICYmIHRoaXMubnVtT2ZBY3RpdmVSZWFkRW50cmllcyA9PT0gMCkge1xyXG4gICAgICAgICAgY29uc3QgZmlsZXMgPSB0aGlzLmZpbGVzO1xyXG4gICAgICAgICAgdGhpcy5maWxlcyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5vbkZpbGVEcm9wLmVtaXQoZmlsZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYXZlcnNlRmlsZVRyZWUoaXRlbTogRmlsZVN5c3RlbUVudHJ5LCBwYXRoOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChpdGVtLmlzRmlsZSkge1xyXG4gICAgICBjb25zdCB0b1VwbG9hZDogTmd4RmlsZURyb3BFbnRyeSA9IG5ldyBOZ3hGaWxlRHJvcEVudHJ5KHBhdGgsIGl0ZW0pO1xyXG4gICAgICB0aGlzLmZpbGVzLnB1c2godG9VcGxvYWQpO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBhdGggPSBwYXRoICsgJy8nO1xyXG4gICAgICBjb25zdCBkaXJSZWFkZXIgPSAoaXRlbSBhcyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkpLmNyZWF0ZVJlYWRlcigpO1xyXG4gICAgICBsZXQgZW50cmllczogRmlsZVN5c3RlbUVudHJ5W10gPSBbXTtcclxuXHJcbiAgICAgIGNvbnN0IHJlYWRFbnRyaWVzID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubnVtT2ZBY3RpdmVSZWFkRW50cmllcysrO1xyXG4gICAgICAgIGRpclJlYWRlci5yZWFkRW50cmllcygocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXJlc3VsdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgLy8gYWRkIGVtcHR5IGZvbGRlcnNcclxuICAgICAgICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdG9VcGxvYWQ6IE5neEZpbGVEcm9wRW50cnkgPSBuZXcgTmd4RmlsZURyb3BFbnRyeShwYXRoLCBpdGVtKTtcclxuICAgICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkVG9RdWV1ZSh0b1VwbG9hZCk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudHJhdmVyc2VGaWxlVHJlZShlbnRyaWVzW2ldLCBwYXRoICsgZW50cmllc1tpXS5uYW1lKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnRpbnVlIHdpdGggdGhlIHJlYWRpbmdcclxuICAgICAgICAgICAgZW50cmllcyA9IGVudHJpZXMuY29uY2F0KHJlc3VsdCk7XHJcbiAgICAgICAgICAgIHJlYWRFbnRyaWVzKCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5udW1PZkFjdGl2ZVJlYWRFbnRyaWVzLS07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICByZWFkRW50cmllcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXJzIGFueSBhZGRlZCBmaWxlcyBmcm9tIHRoZSBmaWxlIGlucHV0IGVsZW1lbnQgc28gdGhlIHNhbWUgZmlsZSBjYW4gc3Vic2VxdWVudGx5IGJlIGFkZGVkIG11bHRpcGxlIHRpbWVzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzZXRGaWxlSW5wdXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5maWxlU2VsZWN0b3IgJiYgdGhpcy5maWxlU2VsZWN0b3IubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICBjb25zdCBmaWxlSW5wdXRFbCA9IHRoaXMuZmlsZVNlbGVjdG9yLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgICAgY29uc3QgZmlsZUlucHV0Q29udGFpbmVyRWwgPSBmaWxlSW5wdXRFbC5wYXJlbnRFbGVtZW50O1xyXG4gICAgICBjb25zdCBoZWxwZXJGb3JtRWwgPSB0aGlzLmdldEhlbHBlckZvcm1FbGVtZW50KCk7XHJcbiAgICAgIGNvbnN0IGZpbGVJbnB1dFBsYWNlaG9sZGVyRWwgPSB0aGlzLmdldEZpbGVJbnB1dFBsYWNlaG9sZGVyRWxlbWVudCgpO1xyXG5cclxuICAgICAgLy8gSnVzdCBhIHF1aWNrIGNoZWNrIHNvIHdlIGRvIG5vdCBtZXNzIHVwIHRoZSBET00gKHdpbGwgbmV2ZXIgaGFwcGVuIHRob3VnaCkuXHJcbiAgICAgIGlmIChmaWxlSW5wdXRDb250YWluZXJFbCAhPT0gaGVscGVyRm9ybUVsKSB7XHJcbiAgICAgICAgLy8gSW5zZXJ0IHRoZSBmb3JtIGlucHV0IHBsYWNlaG9sZGVyIGluIHRoZSBET00gYmVmb3JlIHRoZSBmb3JtIGlucHV0IGVsZW1lbnQuXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoZmlsZUlucHV0Q29udGFpbmVyRWwsIGZpbGVJbnB1dFBsYWNlaG9sZGVyRWwsIGZpbGVJbnB1dEVsKTtcclxuICAgICAgICAvLyBBZGQgdGhlIGZvcm0gaW5wdXQgYXMgY2hpbGQgb2YgdGhlIHRlbXBvcmFyeSBmb3JtIGVsZW1lbnQsIHJlbW92aW5nIHRoZSBmb3JtIGlucHV0IGZyb20gdGhlIERPTS5cclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGhlbHBlckZvcm1FbCwgZmlsZUlucHV0RWwpO1xyXG4gICAgICAgIC8vIFJlc2V0IHRoZSBmb3JtLCB0aHVzIGNsZWFyaW5nIHRoZSBpbnB1dCBlbGVtZW50IG9mIGFueSBmaWxlcy5cclxuICAgICAgICBoZWxwZXJGb3JtRWwucmVzZXQoKTtcclxuICAgICAgICAvLyBBZGQgdGhlIGZpbGUgaW5wdXQgYmFjayB0byB0aGUgRE9NIGluIHBsYWNlIG9mIHRoZSBmaWxlIGlucHV0IHBsYWNlaG9sZGVyIGVsZW1lbnQuXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoZmlsZUlucHV0Q29udGFpbmVyRWwsIGZpbGVJbnB1dEVsLCBmaWxlSW5wdXRQbGFjZWhvbGRlckVsKTtcclxuICAgICAgICAvLyBSZW1vdmUgdGhlIGlucHV0IHBsYWNlaG9sZGVyIGZyb20gdGhlIERPTVxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoZmlsZUlucHV0Q29udGFpbmVyRWwsIGZpbGVJbnB1dFBsYWNlaG9sZGVyRWwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYSBjYWNoZWQgSFRNTCBmb3JtIGVsZW1lbnQgYXMgYSBoZWxwZXIgZWxlbWVudCB0byBjbGVhciB0aGUgZmlsZSBpbnB1dCBlbGVtZW50LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0SGVscGVyRm9ybUVsZW1lbnQoKTogSFRNTEZvcm1FbGVtZW50IHtcclxuICAgIGlmICghdGhpcy5oZWxwZXJGb3JtRWwpIHtcclxuICAgICAgdGhpcy5oZWxwZXJGb3JtRWwgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2Zvcm0nKSBhcyBIVE1MRm9ybUVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaGVscGVyRm9ybUVsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGEgY2FjaGVkIEhUTUwgZGl2IGVsZW1lbnQgdG8gYmUgdXNlZCBhcyBwbGFjZWhvbGRlciBmb3IgdGhlIGZpbGUgaW5wdXQgZWxlbWVudCB3aGVuIGNsZWFyaW5nIHNhaWQgZWxlbWVudC5cclxuICAgKi9cclxuICBwcml2YXRlIGdldEZpbGVJbnB1dFBsYWNlaG9sZGVyRWxlbWVudCgpOiBIVE1MRGl2RWxlbWVudCB7XHJcbiAgICBpZiAoIXRoaXMuZmlsZUlucHV0UGxhY2Vob2xkZXJFbCkge1xyXG4gICAgICB0aGlzLmZpbGVJbnB1dFBsYWNlaG9sZGVyRWwgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmZpbGVJbnB1dFBsYWNlaG9sZGVyRWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRHJvcHpvbmVEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAodGhpcy5nbG9iYWxEcmFnZ2luZ0luUHJvZ3Jlc3MgfHwgdGhpcy5kaXNhYmxlZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZFRvUXVldWUoaXRlbTogTmd4RmlsZURyb3BFbnRyeSk6IHZvaWQge1xyXG4gICAgdGhpcy5maWxlcy5wdXNoKGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcmV2ZW50QW5kU3RvcChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBbY2xhc3NOYW1lXT1cImRyb3Bab25lQ2xhc3NOYW1lXCJcclxuICAgICBbY2xhc3Mubmd4LWZpbGUtZHJvcF9fZHJvcC16b25lLS1vdmVyXT1cImlzRHJhZ2dpbmdPdmVyRHJvcFpvbmVcIlxyXG4gICAgIChkcm9wKT1cImRyb3BGaWxlcygkZXZlbnQpXCJcclxuICAgICAoZHJhZ292ZXIpPVwib25EcmFnT3ZlcigkZXZlbnQpXCJcclxuICAgICAoZHJhZ2VudGVyKT1cIm9uRHJhZ0VudGVyKCRldmVudClcIlxyXG4gICAgIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiPlxyXG4gIDxkaXYgW2NsYXNzTmFtZV09XCJjb250ZW50Q2xhc3NOYW1lXCI+XHJcbiAgICA8aW5wdXQgXHJcbiAgICAgIHR5cGU9XCJmaWxlXCIgXHJcbiAgICAgICNmaWxlU2VsZWN0b3IgXHJcbiAgICAgIFthY2NlcHRdPVwiYWNjZXB0XCIgXHJcbiAgICAgIFthdHRyLmRpcmVjdG9yeV09XCJkaXJlY3RvcnkgfHwgdW5kZWZpbmVkXCIgXHJcbiAgICAgIFthdHRyLndlYmtpdGRpcmVjdG9yeV09XCJkaXJlY3RvcnkgfHwgdW5kZWZpbmVkXCJcclxuICAgICAgW2F0dHIubW96ZGlyZWN0b3J5XT1cImRpcmVjdG9yeSB8fCB1bmRlZmluZWRcIlxyXG4gICAgICBbYXR0ci5tc2RpcmVjdG9yeV09XCJkaXJlY3RvcnkgfHwgdW5kZWZpbmVkXCJcclxuICAgICAgW2F0dHIub2RpcmVjdG9yeV09XCJkaXJlY3RvcnkgfHwgdW5kZWZpbmVkXCJcclxuICAgICAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcclxuICAgICAgKGNoYW5nZSk9XCJ1cGxvYWRGaWxlcygkZXZlbnQpXCIgXHJcbiAgICAgIGNsYXNzPVwibmd4LWZpbGUtZHJvcF9fZmlsZS1pbnB1dFwiIFxyXG4gICAgLz5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDb250ZW50VGVtcGxhdGU+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJkcm9wWm9uZUxhYmVsXCIgY2xhc3M9XCJuZ3gtZmlsZS1kcm9wX19kcm9wLXpvbmUtbGFiZWxcIj57e2Ryb3Bab25lTGFiZWx9fTwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0Jyb3dzZUJ0blwiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgW2NsYXNzTmFtZV09XCJicm93c2VCdG5DbGFzc05hbWVcIiB2YWx1ZT1cInt7YnJvd3NlQnRuTGFiZWx9fVwiIChjbGljayk9XCJvcGVuRmlsZVNlbGVjdG9yKCRldmVudClcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRUZW1wbGF0ZSB8fCBkZWZhdWx0Q29udGVudFRlbXBsYXRlXCJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb3BlbkZpbGVTZWxlY3Rvcjogb3BlbkZpbGVTZWxlY3RvciB9XCI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19 +\ No newline at end of file ++//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpbGUtZHJvcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlsZS1kcm9wL3NyYy9saWIvbmd4LWZpbGUtZHJvcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlsZS1kcm9wL3NyYy9saWIvbmd4LWZpbGUtZHJvcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBa0Usa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakgsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQU9oRixNQUFNLE9BQU8sb0JBQW9CO0lBK0QvQixJQUFXLFFBQVEsS0FBYyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBRXpELElBQ1csUUFBUSxDQUFDLEtBQWM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxLQUFLLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsWUFDVSxJQUFZLEVBQ1osUUFBbUI7UUFEbkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGFBQVEsR0FBUixRQUFRLENBQVc7UUFyRXRCLFdBQU0sR0FBVyxHQUFHLENBQUM7UUFHckIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUczQixhQUFRLEdBQVksSUFBSSxDQUFDO1FBR3pCLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBRzNCLHNCQUFpQixHQUFXLDBCQUEwQixDQUFDO1FBR3ZELGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRzlCLHFCQUFnQixHQUFXLHdCQUF3QixDQUFDO1FBR3BELGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRy9CLHVCQUFrQixHQUFXLGtEQUFrRCxDQUFDO1FBR2hGLG1CQUFjLEdBQVcsY0FBYyxDQUFDO1FBR3hDLGVBQVUsR0FBcUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUdsRSxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHbkQsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVFwRCwyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFFdkMsNkJBQXdCLEdBQVksS0FBSyxDQUFDO1FBSTFDLFVBQUssR0FBdUIsRUFBRSxDQUFDO1FBQy9CLDJCQUFzQixHQUFXLENBQUMsQ0FBQztRQUVuQyxpQkFBWSxHQUEyQixJQUFJLENBQUM7UUFDNUMsMkJBQXNCLEdBQTBCLElBQUksQ0FBQztRQUVyRCwrQkFBMEIsR0FBd0IsSUFBSSxDQUFDO1FBRXZELGNBQVMsR0FBWSxLQUFLLENBQUM7UUFzRjVCLHFCQUFnQixHQUFHLENBQUMsS0FBa0IsRUFBUSxFQUFFO1lBQ3JELElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRTtnQkFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFrQyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQy9EO1FBQ0gsQ0FBQyxDQUFDO1FBN0VBLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsR0FBVSxFQUFFLEVBQUU7WUFDMUYsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBVSxFQUFFLEVBQUU7WUFDdEYsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQ25DLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQWdCO1FBQ2hDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRTtnQkFDdEIsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO2FBQ3hDO1NBQ0Y7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUU7WUFDakYsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0I7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztTQUN4QztJQUNILENBQUM7SUFFTSxXQUFXLENBQUMsS0FBWTtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFO2dCQUNoQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM3QjtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQVk7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO1lBQzlCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO2dCQUMvQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM5QjtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQWdCO1FBQy9CLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUU7WUFDN0IsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUNwQyxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUU7WUFDdEIsSUFBSSxLQUFzQyxDQUFDO1lBQzNDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7Z0JBQzVCLEtBQUssR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQzthQUNsQztpQkFBTTtnQkFDTCxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7YUFDbEM7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBUUQ7OztPQUdHO0lBQ0ksV0FBVyxDQUFDLEtBQVk7UUFDN0IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtZQUM3QixPQUFPO1NBQ1I7UUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDaEIsTUFBTSxLQUFLLEdBQUksS0FBSyxDQUFDLE1BQTJCLENBQUMsS0FBSyxJQUFLLEVBQVUsQ0FBQztZQUN0RSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFVO1FBQ2pDLE1BQU0sYUFBYSxHQUF3QjtZQUN6QyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixXQUFXLEVBQUUsS0FBSztZQUNsQixNQUFNLEVBQUUsSUFBSTtZQUNaLElBQUksRUFBRSxDQUFJLFFBQTRCLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7U0FDMUQsQ0FBQztRQUNGLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTyxTQUFTLENBQUMsSUFBNkI7UUFDN0MsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU87U0FDUjtRQUNELElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdEMsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO29CQUNoQixNQUFNLFFBQVEsR0FBcUIsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUMzRSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUUzQjtxQkFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUU7b0JBQzVCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMxQztnQkFDRCxPQUFPO2FBQ1I7WUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDOUIsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUM5QztZQUNELE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFzQztRQUN2RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFCO1FBRUQsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUU7WUFDbkMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQy9DO1FBQ0QsSUFBSSxDQUFDLDBCQUEwQixHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO2FBQzlDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEtBQUssQ0FBQyxFQUFFO2dCQUM5RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFxQixFQUFFLElBQVk7UUFDMUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsTUFBTSxRQUFRLEdBQXFCLElBQUksZ0JBQWdCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBRTNCO2FBQU07WUFDTCxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUNsQixNQUFNLFNBQVMsR0FBSSxJQUFpQyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BFLElBQUksT0FBTyxHQUFzQixFQUFFLENBQUM7WUFFcEMsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFO2dCQUN2QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDOUIsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTt3QkFDbEIsb0JBQW9CO3dCQUNwQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFOzRCQUN4QixNQUFNLFFBQVEsR0FBcUIsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7NEJBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQ0FDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDNUIsQ0FBQyxDQUFDLENBQUM7eUJBRUo7NkJBQU07NEJBQ0wsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0NBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQ0FDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dDQUM1RCxDQUFDLENBQUMsQ0FBQzs2QkFDSjt5QkFDRjtxQkFFRjt5QkFBTTt3QkFDTCw0QkFBNEI7d0JBQzVCLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNqQyxXQUFXLEVBQUUsQ0FBQztxQkFDZjtvQkFFRCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDaEMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUM7WUFFRixXQUFXLEVBQUUsQ0FBQztTQUNmO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssY0FBYztRQUNwQixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUU7WUFDeEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFpQyxDQUFDO1lBQ3hFLE1BQU0sb0JBQW9CLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQztZQUN2RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNqRCxNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1lBRXJFLDhFQUE4RTtZQUM5RSxJQUFJLG9CQUFvQixLQUFLLFlBQVksRUFBRTtnQkFDekMsOEVBQThFO2dCQUM5RSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDdEYsbUdBQW1HO2dCQUNuRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQ3JELGdFQUFnRTtnQkFDaEUsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNyQixxRkFBcUY7Z0JBQ3JGLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO2dCQUN0Riw0Q0FBNEM7Z0JBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLHNCQUFzQixDQUFDLENBQUM7YUFDekU7U0FDRjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBb0IsQ0FBQztTQUM1RTtRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDSyw4QkFBOEI7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUNoQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFtQixDQUFDO1NBQ3BGO1FBRUQsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU8sVUFBVSxDQUFDLElBQXNCO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxjQUFjLENBQUMsS0FBWTtRQUNqQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7OEdBcFVVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLHloQkEwQ2pCLG1DQUFtQywyQkFBVSxXQUFXLHlKQ2xFeEUseTBDQWtDQTs7MkZEVmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGVBQWU7cUhBT2xCLE1BQU07c0JBRFosS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsTUFBTTtnQkFJQSxVQUFVO3NCQURoQixNQUFNO2dCQUlBLFdBQVc7c0JBRGpCLE1BQU07Z0JBSW1FLGVBQWU7c0JBQXhGLFlBQVk7dUJBQUMsbUNBQW1DLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUdqRSxZQUFZO3NCQURsQixTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBc0JoQyxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTmd4RmlsZURyb3BFbnRyeSB9IGZyb20gJy4vbmd4LWZpbGUtZHJvcC1lbnRyeSc7XG5pbXBvcnQgeyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnksIEZpbGVTeXN0ZW1FbnRyeSwgRmlsZVN5c3RlbUZpbGVFbnRyeSwgaXNEYXRhVHJhbnNmZXJJdGVtIH0gZnJvbSAnLi9kb20udHlwZXMnO1xuaW1wb3J0IHsgTmd4RmlsZURyb3BDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL25neC10ZW1wbGF0ZXMuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWZpbGUtZHJvcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtZmlsZS1kcm9wLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LWZpbGUtZHJvcC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hGaWxlRHJvcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGFjY2VwdDogc3RyaW5nID0gJyonO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXJlY3Rvcnk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkcm9wWm9uZUxhYmVsOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZHJvcFpvbmVDbGFzc05hbWU6IHN0cmluZyA9ICduZ3gtZmlsZS1kcm9wX19kcm9wLXpvbmUnO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB1c2VEcmFnRW50ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY29udGVudENsYXNzTmFtZTogc3RyaW5nID0gJ25neC1maWxlLWRyb3BfX2NvbnRlbnQnO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93QnJvd3NlQnRuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGJyb3dzZUJ0bkNsYXNzTmFtZTogc3RyaW5nID0gJ2J0biBidG4tcHJpbWFyeSBidG4teHMgbmd4LWZpbGUtZHJvcF9fYnJvd3NlLWJ0bic7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGJyb3dzZUJ0bkxhYmVsOiBzdHJpbmcgPSAnQnJvd3NlIGZpbGVzJztcblxuICBAT3V0cHV0KClcbiAgcHVibGljIG9uRmlsZURyb3A6IEV2ZW50RW1pdHRlcjxOZ3hGaWxlRHJvcEVudHJ5W10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb25GaWxlT3ZlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkZpbGVMZWF2ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLy8gY3VzdG9tIHRlbXBsYXRlc1xuICBAQ29udGVudENoaWxkKE5neEZpbGVEcm9wQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIGNvbnRlbnRUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgnZmlsZVNlbGVjdG9yJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGZpbGVTZWxlY3Rvcj86IEVsZW1lbnRSZWY7XG5cbiAgcHVibGljIGlzRHJhZ2dpbmdPdmVyRHJvcFpvbmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIGdsb2JhbERyYWdnaW5nSW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbERyYWdTdGFydExpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbERyYWdFbmRMaXN0ZW5lcjogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIGZpbGVzOiBOZ3hGaWxlRHJvcEVudHJ5W10gPSBbXTtcbiAgcHJpdmF0ZSBudW1PZkFjdGl2ZVJlYWRFbnRyaWVzOiBudW1iZXIgPSAwO1xuXG4gIHByaXZhdGUgaGVscGVyRm9ybUVsOiBIVE1MRm9ybUVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBmaWxlSW5wdXRQbGFjZWhvbGRlckVsOiBIVE1MRGl2RWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgZHJvcEV2ZW50VGltZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOyB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gKHZhbHVlICE9IG51bGwgJiYgYCR7dmFsdWV9YCAhPT0gJ2ZhbHNlJyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7XG4gICAgdGhpcy5nbG9iYWxEcmFnU3RhcnRMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdkcmFnc3RhcnQnLCAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgdGhpcy5nbG9iYWxEcmFnZ2luZ0luUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIH0pO1xuICAgIHRoaXMuZ2xvYmFsRHJhZ0VuZExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2RyYWdlbmQnLCAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgdGhpcy5nbG9iYWxEcmFnZ2luZ0luUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kcm9wRXZlbnRUaW1lclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5kcm9wRXZlbnRUaW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5kcm9wRXZlbnRUaW1lclN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuZ2xvYmFsRHJhZ1N0YXJ0TGlzdGVuZXIoKTtcbiAgICB0aGlzLmdsb2JhbERyYWdFbmRMaXN0ZW5lcigpO1xuICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgICB0aGlzLmhlbHBlckZvcm1FbCA9IG51bGw7XG4gICAgdGhpcy5maWxlSW5wdXRQbGFjZWhvbGRlckVsID0gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy51c2VEcmFnRW50ZXIpIHtcbiAgICAgIHRoaXMucHJldmVudEFuZFN0b3AoZXZlbnQpO1xuICAgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlcikge1xuICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5JztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCF0aGlzLmlzRHJvcHpvbmVEaXNhYmxlZCgpICYmICF0aGlzLnVzZURyYWdFbnRlciAmJiBldmVudC5kYXRhVHJhbnNmZXIpIHtcbiAgICAgIGlmICghdGhpcy5pc0RyYWdnaW5nT3ZlckRyb3Bab25lKSB7XG4gICAgICAgIHRoaXMuaXNEcmFnZ2luZ092ZXJEcm9wWm9uZSA9IHRydWU7XG4gICAgICAgIHRoaXMub25GaWxlT3Zlci5lbWl0KGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIHRoaXMucHJldmVudEFuZFN0b3AoZXZlbnQpO1xuICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRHJhZ0VudGVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0Ryb3B6b25lRGlzYWJsZWQoKSAmJiB0aGlzLnVzZURyYWdFbnRlcikge1xuICAgICAgaWYgKCF0aGlzLmlzRHJhZ2dpbmdPdmVyRHJvcFpvbmUpIHtcbiAgICAgICAgdGhpcy5pc0RyYWdnaW5nT3ZlckRyb3Bab25lID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vbkZpbGVPdmVyLmVtaXQoZXZlbnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5wcmV2ZW50QW5kU3RvcChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0Ryb3B6b25lRGlzYWJsZWQoKSkge1xuICAgICAgaWYgKHRoaXMuaXNEcmFnZ2luZ092ZXJEcm9wWm9uZSkge1xuICAgICAgICB0aGlzLmlzRHJhZ2dpbmdPdmVyRHJvcFpvbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkZpbGVMZWF2ZS5lbWl0KGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIHRoaXMucHJldmVudEFuZFN0b3AoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkcm9wRmlsZXMoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRHJvcHpvbmVEaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNEcmFnZ2luZ092ZXJEcm9wWm9uZSA9IGZhbHNlO1xuICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIpIHtcbiAgICAgIGxldCBpdGVtczogRmlsZUxpc3QgfCBEYXRhVHJhbnNmZXJJdGVtTGlzdDtcbiAgICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMpIHtcbiAgICAgICAgaXRlbXMgPSBldmVudC5kYXRhVHJhbnNmZXIuaXRlbXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtcyA9IGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcztcbiAgICAgIH1cbiAgICAgIHRoaXMucHJldmVudEFuZFN0b3AoZXZlbnQpO1xuICAgICAgdGhpcy5jaGVja0ZpbGVzKGl0ZW1zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlbkZpbGVTZWxlY3RvciA9IChldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAodGhpcy5maWxlU2VsZWN0b3IgJiYgdGhpcy5maWxlU2VsZWN0b3IubmF0aXZlRWxlbWVudCkge1xuICAgICAgKHRoaXMuZmlsZVNlbGVjdG9yLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudCkuY2xpY2soKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyB0aGUgY2hhbmdlIGV2ZW50IG9mIHRoZSBmaWxlIGlucHV0IGFuZCBhZGRzIHRoZSBnaXZlbiBmaWxlcy5cbiAgICogQHBhcmFtIEV2ZW50IGV2ZW50XG4gICAqL1xuICBwdWJsaWMgdXBsb2FkRmlsZXMoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEcm9wem9uZURpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2ZW50LnRhcmdldCkge1xuICAgICAgY29uc3QgaXRlbXMgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzIHx8IChbXSBhcyBhbnkpO1xuICAgICAgdGhpcy5jaGVja0ZpbGVzKGl0ZW1zKTtcbiAgICAgIHRoaXMucmVzZXRGaWxlSW5wdXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEZha2VEcm9wRW50cnkoZmlsZTogRmlsZSk6IE5neEZpbGVEcm9wRW50cnkge1xuICAgIGNvbnN0IGZha2VGaWxlRW50cnk6IEZpbGVTeXN0ZW1GaWxlRW50cnkgPSB7XG4gICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICBpc0RpcmVjdG9yeTogZmFsc2UsXG4gICAgICBpc0ZpbGU6IHRydWUsXG4gICAgICBmaWxlOiA8VD4oY2FsbGJhY2s6IChmaWxlYTogRmlsZSkgPT4gVCkgPT4gY2FsbGJhY2soZmlsZSksXG4gICAgfTtcbiAgICByZXR1cm4gbmV3IE5neEZpbGVEcm9wRW50cnkoZmFrZUZpbGVFbnRyeS5uYW1lLCBmYWtlRmlsZUVudHJ5KTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGaWxlKGl0ZW06IERhdGFUcmFuc2Zlckl0ZW0gfCBGaWxlKTogdm9pZCB7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc0RhdGFUcmFuc2Zlckl0ZW0oaXRlbSkpIHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gaXRlbS53ZWJraXRHZXRBc0VudHJ5KCk7XG4gICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgaWYgKGVudHJ5LmlzRmlsZSkge1xuICAgICAgICAgIGNvbnN0IHRvVXBsb2FkOiBOZ3hGaWxlRHJvcEVudHJ5ID0gbmV3IE5neEZpbGVEcm9wRW50cnkoZW50cnkubmFtZSwgZW50cnkpO1xuICAgICAgICAgIHRoaXMuYWRkVG9RdWV1ZSh0b1VwbG9hZCk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChlbnRyeS5pc0RpcmVjdG9yeSkge1xuICAgICAgICAgIHRoaXMudHJhdmVyc2VGaWxlVHJlZShlbnRyeSwgZW50cnkubmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWxlID0gaXRlbS5nZXRBc0ZpbGUoKTtcbiAgICAgIGlmIChmaWxlKSB7XG4gICAgICAgIHRoaXMuYWRkVG9RdWV1ZSh0aGlzLmdldEZha2VEcm9wRW50cnkoZmlsZSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFkZFRvUXVldWUodGhpcy5nZXRGYWtlRHJvcEVudHJ5KGl0ZW0pKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGaWxlcyhpdGVtczogRmlsZUxpc3QgfCBEYXRhVHJhbnNmZXJJdGVtTGlzdCk6IHZvaWQge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuY2hlY2tGaWxlKGl0ZW1zW2ldKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kcm9wRXZlbnRUaW1lclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5kcm9wRXZlbnRUaW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLmRyb3BFdmVudFRpbWVyU3Vic2NyaXB0aW9uID0gdGltZXIoMjAwLCAyMDApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZmlsZXMubGVuZ3RoID4gMCAmJiB0aGlzLm51bU9mQWN0aXZlUmVhZEVudHJpZXMgPT09IDApIHtcbiAgICAgICAgICBjb25zdCBmaWxlcyA9IHRoaXMuZmlsZXM7XG4gICAgICAgICAgdGhpcy5maWxlcyA9IFtdO1xuICAgICAgICAgIHRoaXMub25GaWxlRHJvcC5lbWl0KGZpbGVzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHRyYXZlcnNlRmlsZVRyZWUoaXRlbTogRmlsZVN5c3RlbUVudHJ5LCBwYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXRlbS5pc0ZpbGUpIHtcbiAgICAgIGNvbnN0IHRvVXBsb2FkOiBOZ3hGaWxlRHJvcEVudHJ5ID0gbmV3IE5neEZpbGVEcm9wRW50cnkocGF0aCwgaXRlbSk7XG4gICAgICB0aGlzLmZpbGVzLnB1c2godG9VcGxvYWQpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdGggPSBwYXRoICsgJy8nO1xuICAgICAgY29uc3QgZGlyUmVhZGVyID0gKGl0ZW0gYXMgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5KS5jcmVhdGVSZWFkZXIoKTtcbiAgICAgIGxldCBlbnRyaWVzOiBGaWxlU3lzdGVtRW50cnlbXSA9IFtdO1xuXG4gICAgICBjb25zdCByZWFkRW50cmllcyA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5udW1PZkFjdGl2ZVJlYWRFbnRyaWVzKys7XG4gICAgICAgIGRpclJlYWRlci5yZWFkRW50cmllcygocmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKCFyZXN1bHQubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBhZGQgZW1wdHkgZm9sZGVyc1xuICAgICAgICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHRvVXBsb2FkOiBOZ3hGaWxlRHJvcEVudHJ5ID0gbmV3IE5neEZpbGVEcm9wRW50cnkocGF0aCwgaXRlbSk7XG4gICAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkVG9RdWV1ZSh0b1VwbG9hZCk7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudHJhdmVyc2VGaWxlVHJlZShlbnRyaWVzW2ldLCBwYXRoICsgZW50cmllc1tpXS5uYW1lKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNvbnRpbnVlIHdpdGggdGhlIHJlYWRpbmdcbiAgICAgICAgICAgIGVudHJpZXMgPSBlbnRyaWVzLmNvbmNhdChyZXN1bHQpO1xuICAgICAgICAgICAgcmVhZEVudHJpZXMoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLm51bU9mQWN0aXZlUmVhZEVudHJpZXMtLTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICByZWFkRW50cmllcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYW55IGFkZGVkIGZpbGVzIGZyb20gdGhlIGZpbGUgaW5wdXQgZWxlbWVudCBzbyB0aGUgc2FtZSBmaWxlIGNhbiBzdWJzZXF1ZW50bHkgYmUgYWRkZWQgbXVsdGlwbGUgdGltZXMuXG4gICAqL1xuICBwcml2YXRlIHJlc2V0RmlsZUlucHV0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpbGVTZWxlY3RvciAmJiB0aGlzLmZpbGVTZWxlY3Rvci5uYXRpdmVFbGVtZW50KSB7XG4gICAgICBjb25zdCBmaWxlSW5wdXRFbCA9IHRoaXMuZmlsZVNlbGVjdG9yLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgIGNvbnN0IGZpbGVJbnB1dENvbnRhaW5lckVsID0gZmlsZUlucHV0RWwucGFyZW50RWxlbWVudDtcbiAgICAgIGNvbnN0IGhlbHBlckZvcm1FbCA9IHRoaXMuZ2V0SGVscGVyRm9ybUVsZW1lbnQoKTtcbiAgICAgIGNvbnN0IGZpbGVJbnB1dFBsYWNlaG9sZGVyRWwgPSB0aGlzLmdldEZpbGVJbnB1dFBsYWNlaG9sZGVyRWxlbWVudCgpO1xuXG4gICAgICAvLyBKdXN0IGEgcXVpY2sgY2hlY2sgc28gd2UgZG8gbm90IG1lc3MgdXAgdGhlIERPTSAod2lsbCBuZXZlciBoYXBwZW4gdGhvdWdoKS5cbiAgICAgIGlmIChmaWxlSW5wdXRDb250YWluZXJFbCAhPT0gaGVscGVyRm9ybUVsKSB7XG4gICAgICAgIC8vIEluc2VydCB0aGUgZm9ybSBpbnB1dCBwbGFjZWhvbGRlciBpbiB0aGUgRE9NIGJlZm9yZSB0aGUgZm9ybSBpbnB1dCBlbGVtZW50LlxuICAgICAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZShmaWxlSW5wdXRDb250YWluZXJFbCwgZmlsZUlucHV0UGxhY2Vob2xkZXJFbCwgZmlsZUlucHV0RWwpO1xuICAgICAgICAvLyBBZGQgdGhlIGZvcm0gaW5wdXQgYXMgY2hpbGQgb2YgdGhlIHRlbXBvcmFyeSBmb3JtIGVsZW1lbnQsIHJlbW92aW5nIHRoZSBmb3JtIGlucHV0IGZyb20gdGhlIERPTS5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChoZWxwZXJGb3JtRWwsIGZpbGVJbnB1dEVsKTtcbiAgICAgICAgLy8gUmVzZXQgdGhlIGZvcm0sIHRodXMgY2xlYXJpbmcgdGhlIGlucHV0IGVsZW1lbnQgb2YgYW55IGZpbGVzLlxuICAgICAgICBoZWxwZXJGb3JtRWwucmVzZXQoKTtcbiAgICAgICAgLy8gQWRkIHRoZSBmaWxlIGlucHV0IGJhY2sgdG8gdGhlIERPTSBpbiBwbGFjZSBvZiB0aGUgZmlsZSBpbnB1dCBwbGFjZWhvbGRlciBlbGVtZW50LlxuICAgICAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZShmaWxlSW5wdXRDb250YWluZXJFbCwgZmlsZUlucHV0RWwsIGZpbGVJbnB1dFBsYWNlaG9sZGVyRWwpO1xuICAgICAgICAvLyBSZW1vdmUgdGhlIGlucHV0IHBsYWNlaG9sZGVyIGZyb20gdGhlIERPTVxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKGZpbGVJbnB1dENvbnRhaW5lckVsLCBmaWxlSW5wdXRQbGFjZWhvbGRlckVsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgY2FjaGVkIEhUTUwgZm9ybSBlbGVtZW50IGFzIGEgaGVscGVyIGVsZW1lbnQgdG8gY2xlYXIgdGhlIGZpbGUgaW5wdXQgZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgZ2V0SGVscGVyRm9ybUVsZW1lbnQoKTogSFRNTEZvcm1FbGVtZW50IHtcbiAgICBpZiAoIXRoaXMuaGVscGVyRm9ybUVsKSB7XG4gICAgICB0aGlzLmhlbHBlckZvcm1FbCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZm9ybScpIGFzIEhUTUxGb3JtRWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5oZWxwZXJGb3JtRWw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgY2FjaGVkIEhUTUwgZGl2IGVsZW1lbnQgdG8gYmUgdXNlZCBhcyBwbGFjZWhvbGRlciBmb3IgdGhlIGZpbGUgaW5wdXQgZWxlbWVudCB3aGVuIGNsZWFyaW5nIHNhaWQgZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgZ2V0RmlsZUlucHV0UGxhY2Vob2xkZXJFbGVtZW50KCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICBpZiAoIXRoaXMuZmlsZUlucHV0UGxhY2Vob2xkZXJFbCkge1xuICAgICAgdGhpcy5maWxlSW5wdXRQbGFjZWhvbGRlckVsID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5maWxlSW5wdXRQbGFjZWhvbGRlckVsO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0Ryb3B6b25lRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmdsb2JhbERyYWdnaW5nSW5Qcm9ncmVzcyB8fCB0aGlzLmRpc2FibGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkVG9RdWV1ZShpdGVtOiBOZ3hGaWxlRHJvcEVudHJ5KTogdm9pZCB7XG4gICAgdGhpcy5maWxlcy5wdXNoKGl0ZW0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmV2ZW50QW5kU3RvcChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG59XG4iLCI8ZGl2IFtjbGFzc05hbWVdPVwiZHJvcFpvbmVDbGFzc05hbWVcIlxuICAgICBbY2xhc3Mubmd4LWZpbGUtZHJvcF9fZHJvcC16b25lLS1vdmVyXT1cImlzRHJhZ2dpbmdPdmVyRHJvcFpvbmVcIlxuICAgICAoZHJvcCk9XCJkcm9wRmlsZXMoJGV2ZW50KVwiXG4gICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxuICAgICAoZHJhZ2VudGVyKT1cIm9uRHJhZ0VudGVyKCRldmVudClcIlxuICAgICAoZHJhZ2xlYXZlKT1cIm9uRHJhZ0xlYXZlKCRldmVudClcIj5cbiAgPGRpdiBbY2xhc3NOYW1lXT1cImNvbnRlbnRDbGFzc05hbWVcIj5cbiAgICA8aW5wdXQgXG4gICAgICB0eXBlPVwiZmlsZVwiIFxuICAgICAgI2ZpbGVTZWxlY3RvciBcbiAgICAgIFthY2NlcHRdPVwiYWNjZXB0XCIgXG4gICAgICBbYXR0ci5kaXJlY3RvcnldPVwiZGlyZWN0b3J5IHx8IHVuZGVmaW5lZFwiIFxuICAgICAgW2F0dHIud2Via2l0ZGlyZWN0b3J5XT1cImRpcmVjdG9yeSB8fCB1bmRlZmluZWRcIlxuICAgICAgW2F0dHIubW96ZGlyZWN0b3J5XT1cImRpcmVjdG9yeSB8fCB1bmRlZmluZWRcIlxuICAgICAgW2F0dHIubXNkaXJlY3RvcnldPVwiZGlyZWN0b3J5IHx8IHVuZGVmaW5lZFwiXG4gICAgICBbYXR0ci5vZGlyZWN0b3J5XT1cImRpcmVjdG9yeSB8fCB1bmRlZmluZWRcIlxuICAgICAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgIChjaGFuZ2UpPVwidXBsb2FkRmlsZXMoJGV2ZW50KVwiIFxuICAgICAgY2xhc3M9XCJuZ3gtZmlsZS1kcm9wX19maWxlLWlucHV0XCIgXG4gICAgLz5cblxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbnRlbnRUZW1wbGF0ZT5cbiAgICAgIDxkaXYgKm5nSWY9XCJkcm9wWm9uZUxhYmVsXCIgY2xhc3M9XCJuZ3gtZmlsZS1kcm9wX19kcm9wLXpvbmUtbGFiZWxcIj57e2Ryb3Bab25lTGFiZWx9fTwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dCcm93c2VCdG5cIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJidXR0b25cIiBbY2xhc3NOYW1lXT1cImJyb3dzZUJ0bkNsYXNzTmFtZVwiIHZhbHVlPVwie3ticm93c2VCdG5MYWJlbH19XCIgKGNsaWNrKT1cIm9wZW5GaWxlU2VsZWN0b3IoJGV2ZW50KVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50VGVtcGxhdGUgfHwgZGVmYXVsdENvbnRlbnRUZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcGVuRmlsZVNlbGVjdG9yOiBvcGVuRmlsZVNlbGVjdG9yIH1cIj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19 +\ No newline at end of file +diff --git a/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop.module.mjs b/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop.module.mjs +index 20a8d2d..7023af4 100644 +--- a/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop.module.mjs ++++ b/node_modules/ngx-file-drop/esm2022/lib/ngx-file-drop.module.mjs +@@ -30,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor + ], + }] + }] }); +-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpbGUtZHJvcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlsZS1kcm9wL3NyYy9saWIvbmd4LWZpbGUtZHJvcC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBbUJoRixNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixjQUgxQixvQkFBb0Isa0JBWnBCLG9CQUFvQjtZQUNwQixtQ0FBbUMsYUFHbkMsWUFBWSxhQUdaLG9CQUFvQjtZQUNwQixtQ0FBbUM7K0dBTzFCLGlCQUFpQixZQVgxQixZQUFZOzsyRkFXSCxpQkFBaUI7a0JBakI3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7d0JBQ3BCLG1DQUFtQztxQkFDcEM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjt3QkFDcEIsbUNBQW1DO3FCQUNwQztvQkFDRCxTQUFTLEVBQUUsRUFBRTtvQkFDYixTQUFTLEVBQUU7d0JBQ1Qsb0JBQW9CO3FCQUNyQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5neEZpbGVEcm9wQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtZmlsZS1kcm9wLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5neEZpbGVEcm9wQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9uZ3gtdGVtcGxhdGVzLmRpcmVjdGl2ZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgTmd4RmlsZURyb3BDb21wb25lbnQsXHJcbiAgICBOZ3hGaWxlRHJvcENvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgTmd4RmlsZURyb3BDb21wb25lbnQsXHJcbiAgICBOZ3hGaWxlRHJvcENvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW10sXHJcbiAgYm9vdHN0cmFwOiBbXHJcbiAgICBOZ3hGaWxlRHJvcENvbXBvbmVudFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hGaWxlRHJvcE1vZHVsZSB7fVxyXG4iXX0= +\ No newline at end of file ++//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpbGUtZHJvcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlsZS1kcm9wL3NyYy9saWIvbmd4LWZpbGUtZHJvcC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBbUJoRixNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixjQUgxQixvQkFBb0Isa0JBWnBCLG9CQUFvQjtZQUNwQixtQ0FBbUMsYUFHbkMsWUFBWSxhQUdaLG9CQUFvQjtZQUNwQixtQ0FBbUM7K0dBTzFCLGlCQUFpQixZQVgxQixZQUFZOzsyRkFXSCxpQkFBaUI7a0JBakI3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7d0JBQ3BCLG1DQUFtQztxQkFDcEM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjt3QkFDcEIsbUNBQW1DO3FCQUNwQztvQkFDRCxTQUFTLEVBQUUsRUFBRTtvQkFDYixTQUFTLEVBQUU7d0JBQ1Qsb0JBQW9CO3FCQUNyQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmd4RmlsZURyb3BDb21wb25lbnQgfSBmcm9tICcuL25neC1maWxlLWRyb3AuY29tcG9uZW50JztcbmltcG9ydCB7IE5neEZpbGVEcm9wQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9uZ3gtdGVtcGxhdGVzLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIE5neEZpbGVEcm9wQ29tcG9uZW50LFxuICAgIE5neEZpbGVEcm9wQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlLFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBOZ3hGaWxlRHJvcENvbXBvbmVudCxcbiAgICBOZ3hGaWxlRHJvcENvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXSxcbiAgYm9vdHN0cmFwOiBbXG4gICAgTmd4RmlsZURyb3BDb21wb25lbnRcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd4RmlsZURyb3BNb2R1bGUge31cbiJdfQ== +\ No newline at end of file +diff --git a/node_modules/ngx-file-drop/esm2022/lib/ngx-templates.directive.mjs b/node_modules/ngx-file-drop/esm2022/lib/ngx-templates.directive.mjs +index 6690f3c..efc36be 100644 +--- a/node_modules/ngx-file-drop/esm2022/lib/ngx-templates.directive.mjs ++++ b/node_modules/ngx-file-drop/esm2022/lib/ngx-templates.directive.mjs +@@ -11,4 +11,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor + type: Directive, + args: [{ selector: '[ngx-file-drop-content-tmp]' }] + }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } }); +-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRlbXBsYXRlcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlsZS1kcm9wL3NyYy9saWIvbmd4LXRlbXBsYXRlcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFHdkQsTUFBTSxPQUFPLG1DQUFtQztJQUM5QyxZQUFtQixRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUFJLENBQUM7OEdBRHZDLG1DQUFtQztrR0FBbkMsbUNBQW1DOzsyRkFBbkMsbUNBQW1DO2tCQUQvQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDZCQUE2QixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW25neC1maWxlLWRyb3AtY29udGVudC10bXBdJyB9KVxyXG5leHBvcnQgY2xhc3MgTmd4RmlsZURyb3BDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PikgeyB9XHJcbn1cclxuIl19 +\ No newline at end of file ++//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRlbXBsYXRlcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlsZS1kcm9wL3NyYy9saWIvbmd4LXRlbXBsYXRlcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFHdkQsTUFBTSxPQUFPLG1DQUFtQztJQUM5QyxZQUFtQixRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUFJLENBQUM7OEdBRHZDLG1DQUFtQztrR0FBbkMsbUNBQW1DOzsyRkFBbkMsbUNBQW1DO2tCQUQvQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDZCQUE2QixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbmd4LWZpbGUtZHJvcC1jb250ZW50LXRtcF0nIH0pXG5leHBvcnQgY2xhc3MgTmd4RmlsZURyb3BDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHsgfVxufVxuIl19 +\ No newline at end of file +diff --git a/node_modules/ngx-file-drop/esm2022/public-api.mjs b/node_modules/ngx-file-drop/esm2022/public-api.mjs +index dff97b4..0c806ee 100644 +--- a/node_modules/ngx-file-drop/esm2022/public-api.mjs ++++ b/node_modules/ngx-file-drop/esm2022/public-api.mjs +@@ -2,4 +2,4 @@ export { NgxFileDropComponent } from './lib/ngx-file-drop.component'; + export { NgxFileDropModule } from './lib/ngx-file-drop.module'; + export { NgxFileDropEntry } from './lib/ngx-file-drop-entry'; + export { NgxFileDropContentTemplateDirective } from './lib/ngx-templates.directive'; +-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1maWxlLWRyb3Avc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBOZ3hGaWxlRHJvcENvbXBvbmVudCB9IGZyb20gJy4vbGliL25neC1maWxlLWRyb3AuY29tcG9uZW50JztcclxuZXhwb3J0IHsgTmd4RmlsZURyb3BNb2R1bGUgfSBmcm9tICcuL2xpYi9uZ3gtZmlsZS1kcm9wLm1vZHVsZSc7XHJcbmV4cG9ydCB7IE5neEZpbGVEcm9wRW50cnkgfSBmcm9tICcuL2xpYi9uZ3gtZmlsZS1kcm9wLWVudHJ5JztcclxuZXhwb3J0IHsgRmlsZVN5c3RlbUVudHJ5LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnksIEZpbGVTeXN0ZW1GaWxlRW50cnkgfSBmcm9tICcuL2xpYi9kb20udHlwZXMnO1xyXG5leHBvcnQgeyBOZ3hGaWxlRHJvcENvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vbGliL25neC10ZW1wbGF0ZXMuZGlyZWN0aXZlJztcclxuIl19 +\ No newline at end of file ++//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1maWxlLWRyb3Avc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBOZ3hGaWxlRHJvcENvbXBvbmVudCB9IGZyb20gJy4vbGliL25neC1maWxlLWRyb3AuY29tcG9uZW50JztcbmV4cG9ydCB7IE5neEZpbGVEcm9wTW9kdWxlIH0gZnJvbSAnLi9saWIvbmd4LWZpbGUtZHJvcC5tb2R1bGUnO1xuZXhwb3J0IHsgTmd4RmlsZURyb3BFbnRyeSB9IGZyb20gJy4vbGliL25neC1maWxlLWRyb3AtZW50cnknO1xuZXhwb3J0IHsgRmlsZVN5c3RlbUVudHJ5LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnksIEZpbGVTeXN0ZW1GaWxlRW50cnkgfSBmcm9tICcuL2xpYi9kb20udHlwZXMnO1xuZXhwb3J0IHsgTmd4RmlsZURyb3BDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9uZ3gtdGVtcGxhdGVzLmRpcmVjdGl2ZSc7XG4iXX0= +\ No newline at end of file +diff --git a/node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs b/node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs +index 0cdc4a2..54fd9d8 100644 +--- a/node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs ++++ b/node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs +@@ -16,6 +16,10 @@ class NgxFileDropEntry { + } + } + ++function isDataTransferItem(item) { ++ return "webkitGetAsEntry" in item && "getAsFile" in item; ++} ++ + class NgxFileDropContentTemplateDirective { + constructor(template) { + this.template = template; +@@ -158,17 +162,8 @@ class NgxFileDropComponent { + if (!item) { + return; + } +- // if ("getAsFile" in item) { +- // const file = item.getAsFile(); +- // if (file) { +- // this.addToQueue( +- // this.getFakeDropEntry(file) +- // ); +- // return; +- // } +- // } +- if ("webkitGetAsEntry" in item) { +- let entry = item.webkitGetAsEntry(); ++ if (isDataTransferItem(item)) { ++ const entry = item.webkitGetAsEntry(); + if (entry) { + if (entry.isFile) { + const toUpload = new NgxFileDropEntry(entry.name, entry); +@@ -179,6 +174,11 @@ class NgxFileDropComponent { + } + return; + } ++ const file = item.getAsFile(); ++ if (file) { ++ this.addToQueue(this.getFakeDropEntry(file)); ++ } ++ return; + } + this.addToQueue(this.getFakeDropEntry(item)); + } +@@ -290,11 +290,11 @@ class NgxFileDropComponent { + event.preventDefault(); + } + static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: NgxFileDropComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); } +- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: NgxFileDropComponent, selector: "ngx-file-drop", inputs: { accept: "accept", directory: "directory", multiple: "multiple", dropZoneLabel: "dropZoneLabel", dropZoneClassName: "dropZoneClassName", useDragEnter: "useDragEnter", contentClassName: "contentClassName", showBrowseBtn: "showBrowseBtn", browseBtnClassName: "browseBtnClassName", browseBtnLabel: "browseBtnLabel", disabled: "disabled" }, outputs: { onFileDrop: "onFileDrop", onFileOver: "onFileOver", onFileLeave: "onFileLeave" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: NgxFileDropContentTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "fileSelector", first: true, predicate: ["fileSelector"], descendants: true, static: true }], ngImport: i0, template: "
\r\n
\r\n \r\n\r\n \r\n
{{dropZoneLabel}}
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n", styles: [".ngx-file-drop__drop-zone{height:100px;margin:auto;border:2px dotted #0782d0;border-radius:30px}.ngx-file-drop__drop-zone--over{background-color:#93939380}.ngx-file-drop__content{display:flex;align-items:center;justify-content:center;height:100px;color:#0782d0}.ngx-file-drop__drop-zone-label{text-align:center}.ngx-file-drop__file-input{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); } ++ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: NgxFileDropComponent, selector: "ngx-file-drop", inputs: { accept: "accept", directory: "directory", multiple: "multiple", dropZoneLabel: "dropZoneLabel", dropZoneClassName: "dropZoneClassName", useDragEnter: "useDragEnter", contentClassName: "contentClassName", showBrowseBtn: "showBrowseBtn", browseBtnClassName: "browseBtnClassName", browseBtnLabel: "browseBtnLabel", disabled: "disabled" }, outputs: { onFileDrop: "onFileDrop", onFileOver: "onFileOver", onFileLeave: "onFileLeave" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: NgxFileDropContentTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "fileSelector", first: true, predicate: ["fileSelector"], descendants: true, static: true }], ngImport: i0, template: "
\n
\n \n\n \n
{{dropZoneLabel}}
\n
\n \n
\n
\n\n \n \n
\n
\n", styles: [".ngx-file-drop__drop-zone{height:100px;margin:auto;border:2px dotted #0782d0;border-radius:30px}.ngx-file-drop__drop-zone--over{background-color:#93939380}.ngx-file-drop__content{display:flex;align-items:center;justify-content:center;height:100px;color:#0782d0}.ngx-file-drop__drop-zone-label{text-align:center}.ngx-file-drop__file-input{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); } + } + i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: NgxFileDropComponent, decorators: [{ + type: Component, +- args: [{ selector: 'ngx-file-drop', template: "
\r\n
\r\n \r\n\r\n \r\n
{{dropZoneLabel}}
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n", styles: [".ngx-file-drop__drop-zone{height:100px;margin:auto;border:2px dotted #0782d0;border-radius:30px}.ngx-file-drop__drop-zone--over{background-color:#93939380}.ngx-file-drop__content{display:flex;align-items:center;justify-content:center;height:100px;color:#0782d0}.ngx-file-drop__drop-zone-label{text-align:center}.ngx-file-drop__file-input{display:none}\n"] }] ++ args: [{ selector: 'ngx-file-drop', template: "
\n
\n \n\n \n
{{dropZoneLabel}}
\n
\n \n
\n
\n\n \n \n
\n
\n", styles: [".ngx-file-drop__drop-zone{height:100px;margin:auto;border:2px dotted #0782d0;border-radius:30px}.ngx-file-drop__drop-zone--over{background-color:#93939380}.ngx-file-drop__content{display:flex;align-items:center;justify-content:center;height:100px;color:#0782d0}.ngx-file-drop__drop-zone-label{text-align:center}.ngx-file-drop__file-input{display:none}\n"] }] + }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { accept: [{ + type: Input + }], directory: [{ +diff --git a/node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs.map b/node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs.map +index ab987c7..e9e2202 100644 +--- a/node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs.map ++++ b/node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs.map +@@ -1 +1 @@ +-{"version":3,"file":"ngx-file-drop.mjs","sources":["../../../projects/ngx-file-drop/src/lib/ngx-file-drop-entry.ts","../../../projects/ngx-file-drop/src/lib/ngx-templates.directive.ts","../../../projects/ngx-file-drop/src/lib/ngx-file-drop.component.ts","../../../projects/ngx-file-drop/src/lib/ngx-file-drop.component.html","../../../projects/ngx-file-drop/src/lib/ngx-file-drop.module.ts","../../../projects/ngx-file-drop/src/ngx-file-drop.ts"],"sourcesContent":["import { FileSystemEntry, FileSystemFileEntry, FileSystemDirectoryEntry } from './dom.types';\r\n\r\n/**\r\n * fileEntry is an instance of {@link FileSystemFileEntry} or {@link FileSystemDirectoryEntry}.\r\n * Which one is it can be checked using {@link FileSystemEntry.isFile} or {@link FileSystemEntry.isDirectory}\r\n * properties of the given {@link FileSystemEntry}.\r\n */\r\nexport class NgxFileDropEntry {\r\n constructor(\r\n public relativePath: string,\r\n public fileEntry: FileSystemEntry\r\n ) {\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({ selector: '[ngx-file-drop-content-tmp]' })\r\nexport class NgxFileDropContentTemplateDirective {\r\n constructor(public template: TemplateRef) { }\r\n}\r\n","import {\r\n Component,\r\n ContentChild,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n Output,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { Subscription, timer } from 'rxjs';\r\n\r\nimport { NgxFileDropEntry } from './ngx-file-drop-entry';\r\nimport { FileSystemDirectoryEntry, FileSystemEntry, FileSystemFileEntry } from './dom.types';\r\nimport { NgxFileDropContentTemplateDirective } from './ngx-templates.directive';\r\n\r\n@Component({\r\n selector: 'ngx-file-drop',\r\n templateUrl: './ngx-file-drop.component.html',\r\n styleUrls: ['./ngx-file-drop.component.scss'],\r\n})\r\nexport class NgxFileDropComponent implements OnDestroy {\r\n\r\n @Input()\r\n public accept: string = '*';\r\n\r\n @Input()\r\n public directory: boolean = false;\r\n\r\n @Input()\r\n public multiple: boolean = true;\r\n\r\n @Input()\r\n public dropZoneLabel: string = '';\r\n\r\n @Input()\r\n public dropZoneClassName: string = 'ngx-file-drop__drop-zone';\r\n\r\n @Input()\r\n public useDragEnter: boolean = false;\r\n\r\n @Input()\r\n public contentClassName: string = 'ngx-file-drop__content';\r\n\r\n @Input()\r\n public showBrowseBtn: boolean = false;\r\n\r\n @Input()\r\n public browseBtnClassName: string = 'btn btn-primary btn-xs ngx-file-drop__browse-btn';\r\n\r\n @Input()\r\n public browseBtnLabel: string = 'Browse files';\r\n\r\n @Output()\r\n public onFileDrop: EventEmitter = new EventEmitter();\r\n\r\n @Output()\r\n public onFileOver: EventEmitter = new EventEmitter();\r\n\r\n @Output()\r\n public onFileLeave: EventEmitter = new EventEmitter();\r\n\r\n // custom templates\r\n @ContentChild(NgxFileDropContentTemplateDirective, { read: TemplateRef }) contentTemplate?: TemplateRef;\r\n\r\n @ViewChild('fileSelector', { static: true })\r\n public fileSelector?: ElementRef;\r\n\r\n public isDraggingOverDropZone: boolean = false;\r\n\r\n private globalDraggingInProgress: boolean = false;\r\n private readonly globalDragStartListener: () => void;\r\n private readonly globalDragEndListener: () => void;\r\n\r\n private files: NgxFileDropEntry[] = [];\r\n private numOfActiveReadEntries: number = 0;\r\n\r\n private helperFormEl: HTMLFormElement | null = null;\r\n private fileInputPlaceholderEl: HTMLDivElement | null = null;\r\n\r\n private dropEventTimerSubscription: Subscription | null = null;\r\n\r\n private _disabled: boolean = false;\r\n\r\n public get disabled(): boolean { return this._disabled; }\r\n\r\n @Input()\r\n public set disabled(value: boolean) {\r\n this._disabled = (value != null && `${value}` !== 'false');\r\n }\r\n\r\n constructor(\r\n private zone: NgZone,\r\n private renderer: Renderer2\r\n ) {\r\n this.globalDragStartListener = this.renderer.listen('document', 'dragstart', (evt: Event) => {\r\n this.globalDraggingInProgress = true;\r\n });\r\n this.globalDragEndListener = this.renderer.listen('document', 'dragend', (evt: Event) => {\r\n this.globalDraggingInProgress = false;\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (this.dropEventTimerSubscription) {\r\n this.dropEventTimerSubscription.unsubscribe();\r\n this.dropEventTimerSubscription = null;\r\n }\r\n this.globalDragStartListener();\r\n this.globalDragEndListener();\r\n this.files = [];\r\n this.helperFormEl = null;\r\n this.fileInputPlaceholderEl = null;\r\n }\r\n\r\n public onDragOver(event: DragEvent): void {\r\n if (this.useDragEnter) {\r\n this.preventAndStop(event);\r\n if (event.dataTransfer) {\r\n event.dataTransfer.dropEffect = 'copy';\r\n }\r\n } else if (!this.isDropzoneDisabled() && !this.useDragEnter && event.dataTransfer) {\r\n if (!this.isDraggingOverDropZone) {\r\n this.isDraggingOverDropZone = true;\r\n this.onFileOver.emit(event);\r\n }\r\n this.preventAndStop(event);\r\n event.dataTransfer.dropEffect = 'copy';\r\n }\r\n }\r\n\r\n public onDragEnter(event: Event): void {\r\n if (!this.isDropzoneDisabled() && this.useDragEnter) {\r\n if (!this.isDraggingOverDropZone) {\r\n this.isDraggingOverDropZone = true;\r\n this.onFileOver.emit(event);\r\n }\r\n this.preventAndStop(event);\r\n }\r\n }\r\n\r\n public onDragLeave(event: Event): void {\r\n if (!this.isDropzoneDisabled()) {\r\n if (this.isDraggingOverDropZone) {\r\n this.isDraggingOverDropZone = false;\r\n this.onFileLeave.emit(event);\r\n }\r\n this.preventAndStop(event);\r\n }\r\n }\r\n\r\n public dropFiles(event: DragEvent): void {\r\n if (this.isDropzoneDisabled()) {\r\n return;\r\n }\r\n this.isDraggingOverDropZone = false;\r\n if (event.dataTransfer) {\r\n let items: FileList | DataTransferItemList;\r\n if (event.dataTransfer.items) {\r\n items = event.dataTransfer.items;\r\n } else {\r\n items = event.dataTransfer.files;\r\n }\r\n this.preventAndStop(event);\r\n this.checkFiles(items);\r\n }\r\n }\r\n\r\n public openFileSelector = (event?: MouseEvent): void => {\r\n if (this.fileSelector && this.fileSelector.nativeElement) {\r\n (this.fileSelector.nativeElement as HTMLInputElement).click();\r\n }\r\n };\r\n\r\n /**\r\n * Processes the change event of the file input and adds the given files.\r\n * @param Event event\r\n */\r\n public uploadFiles(event: Event): void {\r\n if (this.isDropzoneDisabled()) {\r\n return;\r\n }\r\n if (event.target) {\r\n const items = (event.target as HTMLInputElement).files || ([] as any);\r\n this.checkFiles(items);\r\n this.resetFileInput();\r\n }\r\n }\r\n\r\n private getFakeDropEntry(file: File): NgxFileDropEntry {\r\n const fakeFileEntry: FileSystemFileEntry = {\r\n name: file.name,\r\n isDirectory: false,\r\n isFile: true,\r\n file: (callback: (filea: File) => T) => callback(file),\r\n };\r\n return new NgxFileDropEntry(fakeFileEntry.name, fakeFileEntry);\r\n }\r\n\r\n private checkFile(item: DataTransferItem | File): void {\r\n if (!item) {\r\n return;\r\n }\r\n // if (\"getAsFile\" in item) {\r\n // const file = item.getAsFile();\r\n // if (file) {\r\n // this.addToQueue(\r\n // this.getFakeDropEntry(file)\r\n // );\r\n // return;\r\n // }\r\n // }\r\n if (\"webkitGetAsEntry\" in item) {\r\n let entry = item.webkitGetAsEntry();\r\n if (entry) {\r\n if (entry.isFile) {\r\n const toUpload: NgxFileDropEntry = new NgxFileDropEntry(entry.name, entry);\r\n this.addToQueue(toUpload);\r\n\r\n } else if (entry.isDirectory) {\r\n this.traverseFileTree(entry, entry.name);\r\n }\r\n return;\r\n }\r\n }\r\n this.addToQueue(this.getFakeDropEntry((item as File)));\r\n }\r\n\r\n private checkFiles(items: FileList | DataTransferItemList): void {\r\n for (let i = 0; i < items.length; i++) {\r\n this.checkFile(items[i]);\r\n }\r\n\r\n if (this.dropEventTimerSubscription) {\r\n this.dropEventTimerSubscription.unsubscribe();\r\n }\r\n this.dropEventTimerSubscription = timer(200, 200)\r\n .subscribe(() => {\r\n if (this.files.length > 0 && this.numOfActiveReadEntries === 0) {\r\n const files = this.files;\r\n this.files = [];\r\n this.onFileDrop.emit(files);\r\n }\r\n });\r\n }\r\n\r\n private traverseFileTree(item: FileSystemEntry, path: string): void {\r\n if (item.isFile) {\r\n const toUpload: NgxFileDropEntry = new NgxFileDropEntry(path, item);\r\n this.files.push(toUpload);\r\n\r\n } else {\r\n path = path + '/';\r\n const dirReader = (item as FileSystemDirectoryEntry).createReader();\r\n let entries: FileSystemEntry[] = [];\r\n\r\n const readEntries = () => {\r\n this.numOfActiveReadEntries++;\r\n dirReader.readEntries((result) => {\r\n if (!result.length) {\r\n // add empty folders\r\n if (entries.length === 0) {\r\n const toUpload: NgxFileDropEntry = new NgxFileDropEntry(path, item);\r\n this.zone.run(() => {\r\n this.addToQueue(toUpload);\r\n });\r\n\r\n } else {\r\n for (let i = 0; i < entries.length; i++) {\r\n this.zone.run(() => {\r\n this.traverseFileTree(entries[i], path + entries[i].name);\r\n });\r\n }\r\n }\r\n\r\n } else {\r\n // continue with the reading\r\n entries = entries.concat(result);\r\n readEntries();\r\n }\r\n\r\n this.numOfActiveReadEntries--;\r\n });\r\n };\r\n\r\n readEntries();\r\n }\r\n }\r\n\r\n /**\r\n * Clears any added files from the file input element so the same file can subsequently be added multiple times.\r\n */\r\n private resetFileInput(): void {\r\n if (this.fileSelector && this.fileSelector.nativeElement) {\r\n const fileInputEl = this.fileSelector.nativeElement as HTMLInputElement;\r\n const fileInputContainerEl = fileInputEl.parentElement;\r\n const helperFormEl = this.getHelperFormElement();\r\n const fileInputPlaceholderEl = this.getFileInputPlaceholderElement();\r\n\r\n // Just a quick check so we do not mess up the DOM (will never happen though).\r\n if (fileInputContainerEl !== helperFormEl) {\r\n // Insert the form input placeholder in the DOM before the form input element.\r\n this.renderer.insertBefore(fileInputContainerEl, fileInputPlaceholderEl, fileInputEl);\r\n // Add the form input as child of the temporary form element, removing the form input from the DOM.\r\n this.renderer.appendChild(helperFormEl, fileInputEl);\r\n // Reset the form, thus clearing the input element of any files.\r\n helperFormEl.reset();\r\n // Add the file input back to the DOM in place of the file input placeholder element.\r\n this.renderer.insertBefore(fileInputContainerEl, fileInputEl, fileInputPlaceholderEl);\r\n // Remove the input placeholder from the DOM\r\n this.renderer.removeChild(fileInputContainerEl, fileInputPlaceholderEl);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get a cached HTML form element as a helper element to clear the file input element.\r\n */\r\n private getHelperFormElement(): HTMLFormElement {\r\n if (!this.helperFormEl) {\r\n this.helperFormEl = this.renderer.createElement('form') as HTMLFormElement;\r\n }\r\n\r\n return this.helperFormEl;\r\n }\r\n\r\n /**\r\n * Get a cached HTML div element to be used as placeholder for the file input element when clearing said element.\r\n */\r\n private getFileInputPlaceholderElement(): HTMLDivElement {\r\n if (!this.fileInputPlaceholderEl) {\r\n this.fileInputPlaceholderEl = this.renderer.createElement('div') as HTMLDivElement;\r\n }\r\n\r\n return this.fileInputPlaceholderEl;\r\n }\r\n\r\n private isDropzoneDisabled(): boolean {\r\n return (this.globalDraggingInProgress || this.disabled);\r\n }\r\n\r\n private addToQueue(item: NgxFileDropEntry): void {\r\n this.files.push(item);\r\n }\r\n\r\n private preventAndStop(event: Event): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n}\r\n","
\r\n
\r\n \r\n\r\n \r\n
{{dropZoneLabel}}
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgxFileDropComponent } from './ngx-file-drop.component';\r\nimport { NgxFileDropContentTemplateDirective } from './ngx-templates.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxFileDropComponent,\r\n NgxFileDropContentTemplateDirective,\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n NgxFileDropComponent,\r\n NgxFileDropContentTemplateDirective,\r\n ],\r\n providers: [],\r\n bootstrap: [\r\n NgxFileDropComponent\r\n ],\r\n})\r\nexport class NgxFileDropModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAEA;;;;AAIG;MACU,gBAAgB,CAAA;IACzB,WACW,CAAA,YAAoB,EACpB,SAA0B,EAAA;QAD1B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAQ;QACpB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;KAEpC;AACJ;;MCVY,mCAAmC,CAAA;AAC9C,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;KAAK;8GADvC,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnC,mCAAmC,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAD/C,SAAS;mBAAC,EAAE,QAAQ,EAAE,6BAA6B,EAAE,CAAA;;;MCsBzC,oBAAoB,CAAA;IA+D/B,IAAW,QAAQ,KAAc,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;IAEzD,IACW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,IAAI,KAAK,IAAI,IAAI,IAAI,CAAA,EAAG,KAAK,CAAA,CAAE,KAAK,OAAO,CAAC,CAAC;KAC5D;IAED,WACU,CAAA,IAAY,EACZ,QAAmB,EAAA;QADnB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACZ,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QArEtB,IAAM,CAAA,MAAA,GAAW,GAAG,CAAC;QAGrB,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAG3B,IAAQ,CAAA,QAAA,GAAY,IAAI,CAAC;QAGzB,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;QAG3B,IAAiB,CAAA,iBAAA,GAAW,0BAA0B,CAAC;QAGvD,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;QAG9B,IAAgB,CAAA,gBAAA,GAAW,wBAAwB,CAAC;QAGpD,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;QAG/B,IAAkB,CAAA,kBAAA,GAAW,kDAAkD,CAAC;QAGhF,IAAc,CAAA,cAAA,GAAW,cAAc,CAAC;AAGxC,QAAA,IAAA,CAAA,UAAU,GAAqC,IAAI,YAAY,EAAE,CAAC;AAGlE,QAAA,IAAA,CAAA,UAAU,GAAsB,IAAI,YAAY,EAAE,CAAC;AAGnD,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAE,CAAC;QAQpD,IAAsB,CAAA,sBAAA,GAAY,KAAK,CAAC;QAEvC,IAAwB,CAAA,wBAAA,GAAY,KAAK,CAAC;QAI1C,IAAK,CAAA,KAAA,GAAuB,EAAE,CAAC;QAC/B,IAAsB,CAAA,sBAAA,GAAW,CAAC,CAAC;QAEnC,IAAY,CAAA,YAAA,GAA2B,IAAI,CAAC;QAC5C,IAAsB,CAAA,sBAAA,GAA0B,IAAI,CAAC;QAErD,IAA0B,CAAA,0BAAA,GAAwB,IAAI,CAAC;QAEvD,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAsF5B,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,KAAkB,KAAU;YACrD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;AACvD,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAkC,CAAC,KAAK,EAAE,CAAC;AAC/D,aAAA;AACH,SAAC,CAAC;AA7EA,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,GAAU,KAAI;AAC1F,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;AACvC,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,GAAU,KAAI;AACtF,YAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;AACxC,SAAC,CAAC,CAAC;KACJ;IAEM,WAAW,GAAA;QAChB,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,YAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC;AAC9C,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;AACxC,SAAA;QACD,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAChB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;KACpC;AAEM,IAAA,UAAU,CAAC,KAAgB,EAAA;QAChC,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,gBAAA,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC;AACxC,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,EAAE;AACjF,YAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAChC,gBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACnC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3B,YAAA,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC;AACxC,SAAA;KACF;AAEM,IAAA,WAAW,CAAC,KAAY,EAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;AACnD,YAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAChC,gBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACnC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;KACF;AAEM,IAAA,WAAW,CAAC,KAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC9B,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,gBAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACpC,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;KACF;AAEM,IAAA,SAAS,CAAC,KAAgB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC7B,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,KAAsC,CAAC;AAC3C,YAAA,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;AAC5B,gBAAA,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;AAClC,aAAA;AAAM,iBAAA;AACL,gBAAA,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;AAClC,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxB,SAAA;KACF;AAQD;;;AAGG;AACI,IAAA,WAAW,CAAC,KAAY,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC7B,OAAO;AACR,SAAA;QACD,IAAI,KAAK,CAAC,MAAM,EAAE;YAChB,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,IAAK,EAAU,CAAC;AACtE,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvB,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAA;KACF;AAEO,IAAA,gBAAgB,CAAC,IAAU,EAAA;AACjC,QAAA,MAAM,aAAa,GAAwB;YACzC,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,CAAI,QAA4B,KAAK,QAAQ,CAAC,IAAI,CAAC;SAC1D,CAAC;QACF,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;KAChE;AAEO,IAAA,SAAS,CAAC,IAA6B,EAAA;QAC7C,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;AACR,SAAA;;;;;;;;;;QAUD,IAAI,kBAAkB,IAAI,IAAI,EAAE;AAC9B,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACpC,YAAA,IAAI,KAAK,EAAE;gBACT,IAAI,KAAK,CAAC,MAAM,EAAE;oBAChB,MAAM,QAAQ,GAAqB,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3E,oBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAE3B,iBAAA;qBAAM,IAAI,KAAK,CAAC,WAAW,EAAE;oBAC5B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1C,iBAAA;gBACD,OAAO;AACR,aAAA;AACF,SAAA;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAE,IAAa,CAAC,CAAC,CAAC;KACxD;AAEO,IAAA,UAAU,CAAC,KAAsC,EAAA;AACvD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,SAAA;QAED,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,YAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC;AAC/C,SAAA;QACD,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;aAC9C,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,sBAAsB,KAAK,CAAC,EAAE;AAC9D,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAChB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,aAAA;AACH,SAAC,CAAC,CAAC;KACN;IAEO,gBAAgB,CAAC,IAAqB,EAAE,IAAY,EAAA;QAC1D,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,QAAQ,GAAqB,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpE,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAE3B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AAClB,YAAA,MAAM,SAAS,GAAI,IAAiC,CAAC,YAAY,EAAE,CAAC;YACpE,IAAI,OAAO,GAAsB,EAAE,CAAC;YAEpC,MAAM,WAAW,GAAG,MAAK;gBACvB,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,gBAAA,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,KAAI;AAC/B,oBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;;AAElB,wBAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;4BACxB,MAAM,QAAQ,GAAqB,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpE,4BAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AACjB,gCAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC5B,6BAAC,CAAC,CAAC;AAEJ,yBAAA;AAAM,6BAAA;AACL,4BAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,gCAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AACjB,oCAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5D,iCAAC,CAAC,CAAC;AACJ,6BAAA;AACF,yBAAA;AAEF,qBAAA;AAAM,yBAAA;;AAEL,wBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,wBAAA,WAAW,EAAE,CAAC;AACf,qBAAA;oBAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAChC,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC;AAEF,YAAA,WAAW,EAAE,CAAC;AACf,SAAA;KACF;AAED;;AAEG;IACK,cAAc,GAAA;QACpB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;AACxD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,aAAiC,CAAC;AACxE,YAAA,MAAM,oBAAoB,GAAG,WAAW,CAAC,aAAa,CAAC;AACvD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACjD,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,8BAA8B,EAAE,CAAC;;YAGrE,IAAI,oBAAoB,KAAK,YAAY,EAAE;;gBAEzC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,WAAW,CAAC,CAAC;;gBAEtF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;;gBAErD,YAAY,CAAC,KAAK,EAAE,CAAC;;gBAErB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC;;gBAEtF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;AACzE,aAAA;AACF,SAAA;KACF;AAED;;AAEG;IACK,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAoB,CAAC;AAC5E,SAAA;QAED,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED;;AAEG;IACK,8BAA8B,GAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAChC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAmB,CAAC;AACpF,SAAA;QAED,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACpC;IAEO,kBAAkB,GAAA;QACxB,QAAQ,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,QAAQ,EAAE;KACzD;AAEO,IAAA,UAAU,CAAC,IAAsB,EAAA;AACvC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvB;AAEO,IAAA,cAAc,CAAC,KAAY,EAAA;QACjC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;8GAvUU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EA0CjB,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,mCAAmC,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,yJClExE,64CAkCA,EAAA,MAAA,EAAA,CAAA,mWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDVa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,64CAAA,EAAA,MAAA,EAAA,CAAA,mWAAA,CAAA,EAAA,CAAA;qHAOlB,MAAM,EAAA,CAAA;sBADZ,KAAK;gBAIC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAIC,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAIC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBAIC,iBAAiB,EAAA,CAAA;sBADvB,KAAK;gBAIC,YAAY,EAAA,CAAA;sBADlB,KAAK;gBAIC,gBAAgB,EAAA,CAAA;sBADtB,KAAK;gBAIC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBAIC,kBAAkB,EAAA,CAAA;sBADxB,KAAK;gBAIC,cAAc,EAAA,CAAA;sBADpB,KAAK;gBAIC,UAAU,EAAA,CAAA;sBADhB,MAAM;gBAIA,UAAU,EAAA,CAAA;sBADhB,MAAM;gBAIA,WAAW,EAAA,CAAA;sBADjB,MAAM;gBAImE,eAAe,EAAA,CAAA;sBAAxF,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,mCAAmC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBAGjE,YAAY,EAAA,CAAA;sBADlB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAsBhC,QAAQ,EAAA,CAAA;sBADlB,KAAK;;;MEnEK,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAjB,iBAAiB,EAAA,SAAA,EAAA,CAH1B,oBAAoB,CAAA,EAAA,YAAA,EAAA,CAZpB,oBAAoB;YACpB,mCAAmC,CAAA,EAAA,OAAA,EAAA,CAGnC,YAAY,CAAA,EAAA,OAAA,EAAA,CAGZ,oBAAoB;YACpB,mCAAmC,CAAA,EAAA,CAAA,CAAA,EAAA;AAO1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAX1B,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAWH,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAjB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,oBAAoB;wBACpB,mCAAmC;AACpC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,mCAAmC;AACpC,qBAAA;AACD,oBAAA,SAAS,EAAE,EAAE;AACb,oBAAA,SAAS,EAAE;wBACT,oBAAoB;AACrB,qBAAA;AACF,iBAAA,CAAA;;;ACrBD;;AAEG;;;;"} +\ No newline at end of file ++{"version":3,"file":"ngx-file-drop.mjs","sources":["../../../projects/ngx-file-drop/src/lib/ngx-file-drop-entry.ts","../../../projects/ngx-file-drop/src/lib/dom.types.ts","../../../projects/ngx-file-drop/src/lib/ngx-templates.directive.ts","../../../projects/ngx-file-drop/src/lib/ngx-file-drop.component.ts","../../../projects/ngx-file-drop/src/lib/ngx-file-drop.component.html","../../../projects/ngx-file-drop/src/lib/ngx-file-drop.module.ts","../../../projects/ngx-file-drop/src/ngx-file-drop.ts"],"sourcesContent":["import { FileSystemEntry, FileSystemFileEntry, FileSystemDirectoryEntry } from './dom.types';\n\n/**\n * fileEntry is an instance of {@link FileSystemFileEntry} or {@link FileSystemDirectoryEntry}.\n * Which one is it can be checked using {@link FileSystemEntry.isFile} or {@link FileSystemEntry.isDirectory}\n * properties of the given {@link FileSystemEntry}.\n */\nexport class NgxFileDropEntry {\n constructor(\n public relativePath: string,\n public fileEntry: FileSystemEntry\n ) {\n }\n}\n","\nexport interface FileSystemEntry {\n name: string,\n isDirectory: boolean\n isFile: boolean\n}\n\nexport interface FileSystemEntryMetadata {\n modificationTime?: Date,\n size?: number\n}\n\nexport interface FileSystemDirectoryReader {\n readEntries(\n successCallback: (result: FileSystemEntry[]) => void,\n ): void\n}\n\nexport interface FileSystemFlags {\n create?: boolean\n exclusive?: boolean\n}\n\nexport interface FileSystemDirectoryEntry extends FileSystemEntry {\n isDirectory: true\n isFile: false\n createReader(): FileSystemDirectoryReader\n}\n\nexport interface FileSystemFileEntry extends FileSystemEntry {\n isDirectory: false\n isFile: true\n file(callback: (file: File) => T): T\n}\n\nexport function isDataTransferItem(item: DataTransferItem | File): item is DataTransferItem {\n return \"webkitGetAsEntry\" in item && \"getAsFile\" in item;\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[ngx-file-drop-content-tmp]' })\nexport class NgxFileDropContentTemplateDirective {\n constructor(public template: TemplateRef) { }\n}\n","import {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { Subscription, timer } from 'rxjs';\n\nimport { NgxFileDropEntry } from './ngx-file-drop-entry';\nimport { FileSystemDirectoryEntry, FileSystemEntry, FileSystemFileEntry, isDataTransferItem } from './dom.types';\nimport { NgxFileDropContentTemplateDirective } from './ngx-templates.directive';\n\n@Component({\n selector: 'ngx-file-drop',\n templateUrl: './ngx-file-drop.component.html',\n styleUrls: ['./ngx-file-drop.component.scss'],\n})\nexport class NgxFileDropComponent implements OnDestroy {\n\n @Input()\n public accept: string = '*';\n\n @Input()\n public directory: boolean = false;\n\n @Input()\n public multiple: boolean = true;\n\n @Input()\n public dropZoneLabel: string = '';\n\n @Input()\n public dropZoneClassName: string = 'ngx-file-drop__drop-zone';\n\n @Input()\n public useDragEnter: boolean = false;\n\n @Input()\n public contentClassName: string = 'ngx-file-drop__content';\n\n @Input()\n public showBrowseBtn: boolean = false;\n\n @Input()\n public browseBtnClassName: string = 'btn btn-primary btn-xs ngx-file-drop__browse-btn';\n\n @Input()\n public browseBtnLabel: string = 'Browse files';\n\n @Output()\n public onFileDrop: EventEmitter = new EventEmitter();\n\n @Output()\n public onFileOver: EventEmitter = new EventEmitter();\n\n @Output()\n public onFileLeave: EventEmitter = new EventEmitter();\n\n // custom templates\n @ContentChild(NgxFileDropContentTemplateDirective, { read: TemplateRef }) contentTemplate?: TemplateRef;\n\n @ViewChild('fileSelector', { static: true })\n public fileSelector?: ElementRef;\n\n public isDraggingOverDropZone: boolean = false;\n\n private globalDraggingInProgress: boolean = false;\n private readonly globalDragStartListener: () => void;\n private readonly globalDragEndListener: () => void;\n\n private files: NgxFileDropEntry[] = [];\n private numOfActiveReadEntries: number = 0;\n\n private helperFormEl: HTMLFormElement | null = null;\n private fileInputPlaceholderEl: HTMLDivElement | null = null;\n\n private dropEventTimerSubscription: Subscription | null = null;\n\n private _disabled: boolean = false;\n\n public get disabled(): boolean { return this._disabled; }\n\n @Input()\n public set disabled(value: boolean) {\n this._disabled = (value != null && `${value}` !== 'false');\n }\n\n constructor(\n private zone: NgZone,\n private renderer: Renderer2\n ) {\n this.globalDragStartListener = this.renderer.listen('document', 'dragstart', (evt: Event) => {\n this.globalDraggingInProgress = true;\n });\n this.globalDragEndListener = this.renderer.listen('document', 'dragend', (evt: Event) => {\n this.globalDraggingInProgress = false;\n });\n }\n\n public ngOnDestroy(): void {\n if (this.dropEventTimerSubscription) {\n this.dropEventTimerSubscription.unsubscribe();\n this.dropEventTimerSubscription = null;\n }\n this.globalDragStartListener();\n this.globalDragEndListener();\n this.files = [];\n this.helperFormEl = null;\n this.fileInputPlaceholderEl = null;\n }\n\n public onDragOver(event: DragEvent): void {\n if (this.useDragEnter) {\n this.preventAndStop(event);\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'copy';\n }\n } else if (!this.isDropzoneDisabled() && !this.useDragEnter && event.dataTransfer) {\n if (!this.isDraggingOverDropZone) {\n this.isDraggingOverDropZone = true;\n this.onFileOver.emit(event);\n }\n this.preventAndStop(event);\n event.dataTransfer.dropEffect = 'copy';\n }\n }\n\n public onDragEnter(event: Event): void {\n if (!this.isDropzoneDisabled() && this.useDragEnter) {\n if (!this.isDraggingOverDropZone) {\n this.isDraggingOverDropZone = true;\n this.onFileOver.emit(event);\n }\n this.preventAndStop(event);\n }\n }\n\n public onDragLeave(event: Event): void {\n if (!this.isDropzoneDisabled()) {\n if (this.isDraggingOverDropZone) {\n this.isDraggingOverDropZone = false;\n this.onFileLeave.emit(event);\n }\n this.preventAndStop(event);\n }\n }\n\n public dropFiles(event: DragEvent): void {\n if (this.isDropzoneDisabled()) {\n return;\n }\n this.isDraggingOverDropZone = false;\n if (event.dataTransfer) {\n let items: FileList | DataTransferItemList;\n if (event.dataTransfer.items) {\n items = event.dataTransfer.items;\n } else {\n items = event.dataTransfer.files;\n }\n this.preventAndStop(event);\n this.checkFiles(items);\n }\n }\n\n public openFileSelector = (event?: MouseEvent): void => {\n if (this.fileSelector && this.fileSelector.nativeElement) {\n (this.fileSelector.nativeElement as HTMLInputElement).click();\n }\n };\n\n /**\n * Processes the change event of the file input and adds the given files.\n * @param Event event\n */\n public uploadFiles(event: Event): void {\n if (this.isDropzoneDisabled()) {\n return;\n }\n if (event.target) {\n const items = (event.target as HTMLInputElement).files || ([] as any);\n this.checkFiles(items);\n this.resetFileInput();\n }\n }\n\n private getFakeDropEntry(file: File): NgxFileDropEntry {\n const fakeFileEntry: FileSystemFileEntry = {\n name: file.name,\n isDirectory: false,\n isFile: true,\n file: (callback: (filea: File) => T) => callback(file),\n };\n return new NgxFileDropEntry(fakeFileEntry.name, fakeFileEntry);\n }\n\n private checkFile(item: DataTransferItem | File): void {\n if (!item) {\n return;\n }\n if (isDataTransferItem(item)) {\n const entry = item.webkitGetAsEntry();\n if (entry) {\n if (entry.isFile) {\n const toUpload: NgxFileDropEntry = new NgxFileDropEntry(entry.name, entry);\n this.addToQueue(toUpload);\n\n } else if (entry.isDirectory) {\n this.traverseFileTree(entry, entry.name);\n }\n return;\n }\n\n const file = item.getAsFile();\n if (file) {\n this.addToQueue(this.getFakeDropEntry(file));\n }\n return;\n }\n this.addToQueue(this.getFakeDropEntry(item));\n }\n\n private checkFiles(items: FileList | DataTransferItemList): void {\n for (let i = 0; i < items.length; i++) {\n this.checkFile(items[i]);\n }\n\n if (this.dropEventTimerSubscription) {\n this.dropEventTimerSubscription.unsubscribe();\n }\n this.dropEventTimerSubscription = timer(200, 200)\n .subscribe(() => {\n if (this.files.length > 0 && this.numOfActiveReadEntries === 0) {\n const files = this.files;\n this.files = [];\n this.onFileDrop.emit(files);\n }\n });\n }\n\n private traverseFileTree(item: FileSystemEntry, path: string): void {\n if (item.isFile) {\n const toUpload: NgxFileDropEntry = new NgxFileDropEntry(path, item);\n this.files.push(toUpload);\n\n } else {\n path = path + '/';\n const dirReader = (item as FileSystemDirectoryEntry).createReader();\n let entries: FileSystemEntry[] = [];\n\n const readEntries = () => {\n this.numOfActiveReadEntries++;\n dirReader.readEntries((result) => {\n if (!result.length) {\n // add empty folders\n if (entries.length === 0) {\n const toUpload: NgxFileDropEntry = new NgxFileDropEntry(path, item);\n this.zone.run(() => {\n this.addToQueue(toUpload);\n });\n\n } else {\n for (let i = 0; i < entries.length; i++) {\n this.zone.run(() => {\n this.traverseFileTree(entries[i], path + entries[i].name);\n });\n }\n }\n\n } else {\n // continue with the reading\n entries = entries.concat(result);\n readEntries();\n }\n\n this.numOfActiveReadEntries--;\n });\n };\n\n readEntries();\n }\n }\n\n /**\n * Clears any added files from the file input element so the same file can subsequently be added multiple times.\n */\n private resetFileInput(): void {\n if (this.fileSelector && this.fileSelector.nativeElement) {\n const fileInputEl = this.fileSelector.nativeElement as HTMLInputElement;\n const fileInputContainerEl = fileInputEl.parentElement;\n const helperFormEl = this.getHelperFormElement();\n const fileInputPlaceholderEl = this.getFileInputPlaceholderElement();\n\n // Just a quick check so we do not mess up the DOM (will never happen though).\n if (fileInputContainerEl !== helperFormEl) {\n // Insert the form input placeholder in the DOM before the form input element.\n this.renderer.insertBefore(fileInputContainerEl, fileInputPlaceholderEl, fileInputEl);\n // Add the form input as child of the temporary form element, removing the form input from the DOM.\n this.renderer.appendChild(helperFormEl, fileInputEl);\n // Reset the form, thus clearing the input element of any files.\n helperFormEl.reset();\n // Add the file input back to the DOM in place of the file input placeholder element.\n this.renderer.insertBefore(fileInputContainerEl, fileInputEl, fileInputPlaceholderEl);\n // Remove the input placeholder from the DOM\n this.renderer.removeChild(fileInputContainerEl, fileInputPlaceholderEl);\n }\n }\n }\n\n /**\n * Get a cached HTML form element as a helper element to clear the file input element.\n */\n private getHelperFormElement(): HTMLFormElement {\n if (!this.helperFormEl) {\n this.helperFormEl = this.renderer.createElement('form') as HTMLFormElement;\n }\n\n return this.helperFormEl;\n }\n\n /**\n * Get a cached HTML div element to be used as placeholder for the file input element when clearing said element.\n */\n private getFileInputPlaceholderElement(): HTMLDivElement {\n if (!this.fileInputPlaceholderEl) {\n this.fileInputPlaceholderEl = this.renderer.createElement('div') as HTMLDivElement;\n }\n\n return this.fileInputPlaceholderEl;\n }\n\n private isDropzoneDisabled(): boolean {\n return (this.globalDraggingInProgress || this.disabled);\n }\n\n private addToQueue(item: NgxFileDropEntry): void {\n this.files.push(item);\n }\n\n private preventAndStop(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n }\n}\n","
\n
\n \n\n \n
{{dropZoneLabel}}
\n
\n \n
\n
\n\n \n \n
\n
\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxFileDropComponent } from './ngx-file-drop.component';\nimport { NgxFileDropContentTemplateDirective } from './ngx-templates.directive';\n\n@NgModule({\n declarations: [\n NgxFileDropComponent,\n NgxFileDropContentTemplateDirective,\n ],\n imports: [\n CommonModule\n ],\n exports: [\n NgxFileDropComponent,\n NgxFileDropContentTemplateDirective,\n ],\n providers: [],\n bootstrap: [\n NgxFileDropComponent\n ],\n})\nexport class NgxFileDropModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAEA;;;;AAIG;MACU,gBAAgB,CAAA;IACzB,WACW,CAAA,YAAoB,EACpB,SAA0B,EAAA;QAD1B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAQ;QACpB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;KAEpC;AACJ;;ACsBK,SAAU,kBAAkB,CAAC,IAA6B,EAAA;AAC9D,IAAA,OAAO,kBAAkB,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,CAAC;AAC3D;;MClCa,mCAAmC,CAAA;AAC9C,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;KAAK;8GADvC,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnC,mCAAmC,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAD/C,SAAS;mBAAC,EAAE,QAAQ,EAAE,6BAA6B,EAAE,CAAA;;;MCsBzC,oBAAoB,CAAA;IA+D/B,IAAW,QAAQ,KAAc,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;IAEzD,IACW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,IAAI,KAAK,IAAI,IAAI,IAAI,CAAA,EAAG,KAAK,CAAA,CAAE,KAAK,OAAO,CAAC,CAAC;KAC5D;IAED,WACU,CAAA,IAAY,EACZ,QAAmB,EAAA;QADnB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACZ,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QArEtB,IAAM,CAAA,MAAA,GAAW,GAAG,CAAC;QAGrB,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAG3B,IAAQ,CAAA,QAAA,GAAY,IAAI,CAAC;QAGzB,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;QAG3B,IAAiB,CAAA,iBAAA,GAAW,0BAA0B,CAAC;QAGvD,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;QAG9B,IAAgB,CAAA,gBAAA,GAAW,wBAAwB,CAAC;QAGpD,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;QAG/B,IAAkB,CAAA,kBAAA,GAAW,kDAAkD,CAAC;QAGhF,IAAc,CAAA,cAAA,GAAW,cAAc,CAAC;AAGxC,QAAA,IAAA,CAAA,UAAU,GAAqC,IAAI,YAAY,EAAE,CAAC;AAGlE,QAAA,IAAA,CAAA,UAAU,GAAsB,IAAI,YAAY,EAAE,CAAC;AAGnD,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAE,CAAC;QAQpD,IAAsB,CAAA,sBAAA,GAAY,KAAK,CAAC;QAEvC,IAAwB,CAAA,wBAAA,GAAY,KAAK,CAAC;QAI1C,IAAK,CAAA,KAAA,GAAuB,EAAE,CAAC;QAC/B,IAAsB,CAAA,sBAAA,GAAW,CAAC,CAAC;QAEnC,IAAY,CAAA,YAAA,GAA2B,IAAI,CAAC;QAC5C,IAAsB,CAAA,sBAAA,GAA0B,IAAI,CAAC;QAErD,IAA0B,CAAA,0BAAA,GAAwB,IAAI,CAAC;QAEvD,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAsF5B,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,KAAkB,KAAU;YACrD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;AACvD,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAkC,CAAC,KAAK,EAAE,CAAC;AAC/D,aAAA;AACH,SAAC,CAAC;AA7EA,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,GAAU,KAAI;AAC1F,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;AACvC,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,GAAU,KAAI;AACtF,YAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;AACxC,SAAC,CAAC,CAAC;KACJ;IAEM,WAAW,GAAA;QAChB,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,YAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC;AAC9C,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;AACxC,SAAA;QACD,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAChB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;KACpC;AAEM,IAAA,UAAU,CAAC,KAAgB,EAAA;QAChC,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,gBAAA,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC;AACxC,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,EAAE;AACjF,YAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAChC,gBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACnC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3B,YAAA,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC;AACxC,SAAA;KACF;AAEM,IAAA,WAAW,CAAC,KAAY,EAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;AACnD,YAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAChC,gBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACnC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;KACF;AAEM,IAAA,WAAW,CAAC,KAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC9B,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,gBAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACpC,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;KACF;AAEM,IAAA,SAAS,CAAC,KAAgB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC7B,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,KAAsC,CAAC;AAC3C,YAAA,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;AAC5B,gBAAA,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;AAClC,aAAA;AAAM,iBAAA;AACL,gBAAA,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;AAClC,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxB,SAAA;KACF;AAQD;;;AAGG;AACI,IAAA,WAAW,CAAC,KAAY,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC7B,OAAO;AACR,SAAA;QACD,IAAI,KAAK,CAAC,MAAM,EAAE;YAChB,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,IAAK,EAAU,CAAC;AACtE,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvB,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAA;KACF;AAEO,IAAA,gBAAgB,CAAC,IAAU,EAAA;AACjC,QAAA,MAAM,aAAa,GAAwB;YACzC,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,CAAI,QAA4B,KAAK,QAAQ,CAAC,IAAI,CAAC;SAC1D,CAAC;QACF,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;KAChE;AAEO,IAAA,SAAS,CAAC,IAA6B,EAAA;QAC7C,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;AACR,SAAA;AACD,QAAA,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACtC,YAAA,IAAI,KAAK,EAAE;gBACT,IAAI,KAAK,CAAC,MAAM,EAAE;oBAChB,MAAM,QAAQ,GAAqB,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3E,oBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAE3B,iBAAA;qBAAM,IAAI,KAAK,CAAC,WAAW,EAAE;oBAC5B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1C,iBAAA;gBACD,OAAO;AACR,aAAA;AAED,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC9B,YAAA,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,aAAA;YACD,OAAO;AACR,SAAA;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;KAC9C;AAEO,IAAA,UAAU,CAAC,KAAsC,EAAA;AACvD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,SAAA;QAED,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,YAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC;AAC/C,SAAA;QACD,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;aAC9C,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,sBAAsB,KAAK,CAAC,EAAE;AAC9D,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAChB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,aAAA;AACH,SAAC,CAAC,CAAC;KACN;IAEO,gBAAgB,CAAC,IAAqB,EAAE,IAAY,EAAA;QAC1D,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,QAAQ,GAAqB,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpE,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAE3B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AAClB,YAAA,MAAM,SAAS,GAAI,IAAiC,CAAC,YAAY,EAAE,CAAC;YACpE,IAAI,OAAO,GAAsB,EAAE,CAAC;YAEpC,MAAM,WAAW,GAAG,MAAK;gBACvB,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,gBAAA,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,KAAI;AAC/B,oBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;;AAElB,wBAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;4BACxB,MAAM,QAAQ,GAAqB,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpE,4BAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AACjB,gCAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC5B,6BAAC,CAAC,CAAC;AAEJ,yBAAA;AAAM,6BAAA;AACL,4BAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,gCAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AACjB,oCAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5D,iCAAC,CAAC,CAAC;AACJ,6BAAA;AACF,yBAAA;AAEF,qBAAA;AAAM,yBAAA;;AAEL,wBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,wBAAA,WAAW,EAAE,CAAC;AACf,qBAAA;oBAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAChC,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC;AAEF,YAAA,WAAW,EAAE,CAAC;AACf,SAAA;KACF;AAED;;AAEG;IACK,cAAc,GAAA;QACpB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;AACxD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,aAAiC,CAAC;AACxE,YAAA,MAAM,oBAAoB,GAAG,WAAW,CAAC,aAAa,CAAC;AACvD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACjD,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,8BAA8B,EAAE,CAAC;;YAGrE,IAAI,oBAAoB,KAAK,YAAY,EAAE;;gBAEzC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,WAAW,CAAC,CAAC;;gBAEtF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;;gBAErD,YAAY,CAAC,KAAK,EAAE,CAAC;;gBAErB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC;;gBAEtF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;AACzE,aAAA;AACF,SAAA;KACF;AAED;;AAEG;IACK,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAoB,CAAC;AAC5E,SAAA;QAED,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED;;AAEG;IACK,8BAA8B,GAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAChC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAmB,CAAC;AACpF,SAAA;QAED,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACpC;IAEO,kBAAkB,GAAA;QACxB,QAAQ,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,QAAQ,EAAE;KACzD;AAEO,IAAA,UAAU,CAAC,IAAsB,EAAA;AACvC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvB;AAEO,IAAA,cAAc,CAAC,KAAY,EAAA;QACjC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;8GApUU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EA0CjB,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,mCAAmC,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,yJClExE,y0CAkCA,EAAA,MAAA,EAAA,CAAA,mWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDVa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,y0CAAA,EAAA,MAAA,EAAA,CAAA,mWAAA,CAAA,EAAA,CAAA;qHAOlB,MAAM,EAAA,CAAA;sBADZ,KAAK;gBAIC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAIC,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAIC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBAIC,iBAAiB,EAAA,CAAA;sBADvB,KAAK;gBAIC,YAAY,EAAA,CAAA;sBADlB,KAAK;gBAIC,gBAAgB,EAAA,CAAA;sBADtB,KAAK;gBAIC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBAIC,kBAAkB,EAAA,CAAA;sBADxB,KAAK;gBAIC,cAAc,EAAA,CAAA;sBADpB,KAAK;gBAIC,UAAU,EAAA,CAAA;sBADhB,MAAM;gBAIA,UAAU,EAAA,CAAA;sBADhB,MAAM;gBAIA,WAAW,EAAA,CAAA;sBADjB,MAAM;gBAImE,eAAe,EAAA,CAAA;sBAAxF,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,mCAAmC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBAGjE,YAAY,EAAA,CAAA;sBADlB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAsBhC,QAAQ,EAAA,CAAA;sBADlB,KAAK;;;MEnEK,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAjB,iBAAiB,EAAA,SAAA,EAAA,CAH1B,oBAAoB,CAAA,EAAA,YAAA,EAAA,CAZpB,oBAAoB;YACpB,mCAAmC,CAAA,EAAA,OAAA,EAAA,CAGnC,YAAY,CAAA,EAAA,OAAA,EAAA,CAGZ,oBAAoB;YACpB,mCAAmC,CAAA,EAAA,CAAA,CAAA,EAAA;AAO1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAX1B,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAWH,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAjB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,oBAAoB;wBACpB,mCAAmC;AACpC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,mCAAmC;AACpC,qBAAA;AACD,oBAAA,SAAS,EAAE,EAAE;AACb,oBAAA,SAAS,EAAE;wBACT,oBAAoB;AACrB,qBAAA;AACF,iBAAA,CAAA;;;ACrBD;;AAEG;;;;"} +\ No newline at end of file +diff --git a/node_modules/ngx-file-drop/lib/dom.types.d.ts b/node_modules/ngx-file-drop/lib/dom.types.d.ts +index 2539d26..0a2315c 100644 +--- a/node_modules/ngx-file-drop/lib/dom.types.d.ts ++++ b/node_modules/ngx-file-drop/lib/dom.types.d.ts +@@ -24,3 +24,4 @@ export interface FileSystemFileEntry extends FileSystemEntry { + isFile: true; + file(callback: (file: File) => T): T; + } ++export declare function isDataTransferItem(item: DataTransferItem | File): item is DataTransferItem; diff --git a/src-ui/setup-jest.ts b/src-ui/setup-jest.ts index 64f4e3531..494d90d39 100644 --- a/src-ui/setup-jest.ts +++ b/src-ui/setup-jest.ts @@ -8,19 +8,24 @@ global.TextEncoder = TextEncoder global.TextDecoder = TextDecoder import { registerLocaleData } from '@angular/common' +import localeAf from '@angular/common/locales/af' import localeAr from '@angular/common/locales/ar' import localeBe from '@angular/common/locales/be' +import localeBg from '@angular/common/locales/bg' import localeCa from '@angular/common/locales/ca' import localeCs from '@angular/common/locales/cs' import localeDa from '@angular/common/locales/da' import localeDe from '@angular/common/locales/de' +import localeEl from '@angular/common/locales/el' import localeEnGb from '@angular/common/locales/en-GB' import localeEs from '@angular/common/locales/es' import localeFi from '@angular/common/locales/fi' import localeFr from '@angular/common/locales/fr' +import localeHu from '@angular/common/locales/hu' import localeIt from '@angular/common/locales/it' import localeLb from '@angular/common/locales/lb' import localeNl from '@angular/common/locales/nl' +import localeNo from '@angular/common/locales/no' import localePl from '@angular/common/locales/pl' import localePt from '@angular/common/locales/pt' import localeRo from '@angular/common/locales/ro' @@ -33,19 +38,24 @@ import localeTr from '@angular/common/locales/tr' import localeUk from '@angular/common/locales/uk' import localeZh from '@angular/common/locales/zh' +registerLocaleData(localeAf) registerLocaleData(localeAr) registerLocaleData(localeBe) +registerLocaleData(localeBg) registerLocaleData(localeCa) registerLocaleData(localeCs) registerLocaleData(localeDa) registerLocaleData(localeDe) +registerLocaleData(localeEl) registerLocaleData(localeEnGb) registerLocaleData(localeEs) registerLocaleData(localeFi) registerLocaleData(localeFr) +registerLocaleData(localeHu) registerLocaleData(localeIt) registerLocaleData(localeLb) registerLocaleData(localeNl) +registerLocaleData(localeNo) registerLocaleData(localePl) registerLocaleData(localePt, 'pt-BR') registerLocaleData(localePt, 'pt-PT') @@ -75,7 +85,12 @@ Object.defineProperty(window, 'sessionStorage', { value: mock() }) Object.defineProperty(window, 'getComputedStyle', { value: () => ['-webkit-appearance'], }) - +Object.defineProperty(navigator, 'clipboard', { + value: { + writeText: async () => {}, + }, +}) +Object.defineProperty(navigator, 'canShare', { value: () => true }) Object.defineProperty(window, 'ResizeObserver', { value: mock() }) HTMLCanvasElement.prototype.getContext = < diff --git a/src-ui/src/app/app-routing.module.ts b/src-ui/src/app/app-routing.module.ts index d839274f8..b3952634c 100644 --- a/src-ui/src/app/app-routing.module.ts +++ b/src-ui/src/app/app-routing.module.ts @@ -6,14 +6,14 @@ import { DocumentDetailComponent } from './components/document-detail/document-d import { DocumentListComponent } from './components/document-list/document-list.component' import { CorrespondentListComponent } from './components/manage/correspondent-list/correspondent-list.component' import { DocumentTypeListComponent } from './components/manage/document-type-list/document-type-list.component' -import { LogsComponent } from './components/manage/logs/logs.component' -import { SettingsComponent } from './components/manage/settings/settings.component' +import { LogsComponent } from './components/admin/logs/logs.component' +import { SettingsComponent } from './components/admin/settings/settings.component' import { TagListComponent } from './components/manage/tag-list/tag-list.component' import { NotFoundComponent } from './components/not-found/not-found.component' import { DocumentAsnComponent } from './components/document-asn/document-asn.component' import { DirtyFormGuard } from './guards/dirty-form.guard' import { StoragePathListComponent } from './components/manage/storage-path-list/storage-path-list.component' -import { TasksComponent } from './components/manage/tasks/tasks.component' +import { TasksComponent } from './components/admin/tasks/tasks.component' import { PermissionsGuard } from './guards/permissions.guard' import { DirtyDocGuard } from './guards/dirty-doc.guard' import { DirtySavedViewGuard } from './guards/dirty-saved-view.guard' @@ -21,6 +21,10 @@ import { PermissionAction, PermissionType, } from './services/permissions.service' +import { ConsumptionTemplatesComponent } from './components/manage/consumption-templates/consumption-templates.component' +import { MailComponent } from './components/manage/mail/mail.component' +import { UsersAndGroupsComponent } from './components/admin/users-groups/users-groups.component' +import { CustomFieldsComponent } from './components/manage/custom-fields/custom-fields.component' export const routes: Routes = [ { path: '', redirectTo: 'dashboard', pathMatch: 'full' }, @@ -142,6 +146,15 @@ export const routes: Routes = [ }, }, }, + // redirect old paths + { + path: 'settings/mail', + redirectTo: '/mail', + }, + { + path: 'settings/usersgroups', + redirectTo: '/usersgroups', + }, { path: 'settings', component: SettingsComponent, @@ -166,11 +179,6 @@ export const routes: Routes = [ }, }, }, - { - path: 'settings/:section', - component: SettingsComponent, - canDeactivate: [DirtyFormGuard], - }, { path: 'tasks', component: TasksComponent, @@ -182,7 +190,50 @@ export const routes: Routes = [ }, }, }, - { path: 'tasks', component: TasksComponent }, + { + path: 'customfields', + component: CustomFieldsComponent, + canActivate: [PermissionsGuard], + data: { + requiredPermission: { + action: PermissionAction.View, + type: PermissionType.CustomField, + }, + }, + }, + { + path: 'templates', + component: ConsumptionTemplatesComponent, + canActivate: [PermissionsGuard], + data: { + requiredPermission: { + action: PermissionAction.View, + type: PermissionType.ConsumptionTemplate, + }, + }, + }, + { + path: 'mail', + component: MailComponent, + canActivate: [PermissionsGuard], + data: { + requiredPermission: { + action: PermissionAction.View, + type: PermissionType.MailAccount, + }, + }, + }, + { + path: 'usersgroups', + component: UsersAndGroupsComponent, + canActivate: [PermissionsGuard], + data: { + requiredPermission: { + action: PermissionAction.View, + type: PermissionType.User, + }, + }, + }, ], }, diff --git a/src-ui/src/app/app.component.html b/src-ui/src/app/app.component.html index 84a4f595c..ef2addf2c 100644 --- a/src-ui/src/app/app.component.html +++ b/src-ui/src/app/app.component.html @@ -1,16 +1,10 @@ - + - - -
-

Drop files to begin upload

-
-
- -
-
-
+ + + + + diff --git a/src-ui/src/app/app.component.spec.ts b/src-ui/src/app/app.component.spec.ts index 57c0e1afb..80fbdfa5f 100644 --- a/src-ui/src/app/app.component.spec.ts +++ b/src-ui/src/app/app.component.spec.ts @@ -2,14 +2,11 @@ import { HttpClientTestingModule } from '@angular/common/http/testing' import { ComponentFixture, TestBed, - discardPeriodicTasks, fakeAsync, tick, } from '@angular/core/testing' -import { By } from '@angular/platform-browser' import { Router } from '@angular/router' import { RouterTestingModule } from '@angular/router/testing' -import { NgxFileDropModule } from 'ngx-file-drop' import { TourService, TourNgBootstrapModule } from 'ngx-ui-tour-ng-bootstrap' import { Subject } from 'rxjs' import { routes } from './app-routing.module' @@ -21,8 +18,9 @@ import { } from './services/consumer-status.service' import { PermissionsService } from './services/permissions.service' import { ToastService, Toast } from './services/toast.service' -import { UploadDocumentsService } from './services/upload-documents.service' import { SettingsService } from './services/settings.service' +import { FileDropComponent } from './components/file-drop/file-drop.component' +import { NgxFileDropModule } from 'ngx-file-drop' describe('AppComponent', () => { let component: AppComponent @@ -33,11 +31,10 @@ describe('AppComponent', () => { let toastService: ToastService let router: Router let settingsService: SettingsService - let uploadDocumentsService: UploadDocumentsService beforeEach(async () => { TestBed.configureTestingModule({ - declarations: [AppComponent, ToastsComponent], + declarations: [AppComponent, ToastsComponent, FileDropComponent], providers: [], imports: [ HttpClientTestingModule, @@ -53,7 +50,6 @@ describe('AppComponent', () => { settingsService = TestBed.inject(SettingsService) toastService = TestBed.inject(ToastService) router = TestBed.inject(Router) - uploadDocumentsService = TestBed.inject(UploadDocumentsService) fixture = TestBed.createComponent(AppComponent) component = fixture.componentInstance }) @@ -72,6 +68,7 @@ describe('AppComponent', () => { })) it('should display toast on document consumed with link if user has access', () => { + const navigateSpy = jest.spyOn(router, 'navigate') jest.spyOn(permissionsService, 'currentUserCan').mockReturnValue(true) let toast: Toast toastService.getToasts().subscribe((toasts) => (toast = toasts[0])) @@ -81,9 +78,13 @@ describe('AppComponent', () => { .spyOn(consumerStatusService, 'onDocumentConsumptionFinished') .mockReturnValue(fileStatusSubject) component.ngOnInit() - fileStatusSubject.next(new FileStatus()) + const status = new FileStatus() + status.documentId = 1 + fileStatusSubject.next(status) expect(toastSpy).toHaveBeenCalled() expect(toast.action).not.toBeUndefined() + toast.action() + expect(navigateSpy).toHaveBeenCalledWith(['documents', status.documentId]) }) it('should display toast on document consumed without link if user does not have access', () => { @@ -138,45 +139,4 @@ describe('AppComponent', () => { fileStatusSubject.next(new FileStatus()) expect(toastSpy).toHaveBeenCalled() }) - - it('should disable drag-drop if on dashboard', () => { - jest.spyOn(permissionsService, 'currentUserCan').mockReturnValue(true) - jest.spyOn(router, 'url', 'get').mockReturnValueOnce('/dashboard') - expect(component.dragDropEnabled).toBeFalsy() - jest.spyOn(router, 'url', 'get').mockReturnValueOnce('/documents') - expect(component.dragDropEnabled).toBeTruthy() - }) - - it('should enable drag-drop if user has permissions', () => { - jest.spyOn(permissionsService, 'currentUserCan').mockReturnValue(true) - expect(component.dragDropEnabled).toBeTruthy() - }) - - it('should disable drag-drop if user does not have permissions', () => { - jest.spyOn(permissionsService, 'currentUserCan').mockReturnValue(false) - expect(component.dragDropEnabled).toBeFalsy() - }) - - it('should support drag drop', fakeAsync(() => { - expect(component.fileIsOver).toBeFalsy() - component.fileOver() - tick(1) - fixture.detectChanges() - expect(component.fileIsOver).toBeTruthy() - const dropzone = fixture.debugElement.query( - By.css('.global-dropzone-overlay') - ) - expect(dropzone).not.toBeNull() - component.fileLeave() - tick(700) - fixture.detectChanges() - expect(dropzone.classes['hide']).toBeTruthy() - // drop - const toastSpy = jest.spyOn(toastService, 'show') - const uploadSpy = jest.spyOn(uploadDocumentsService, 'uploadFiles') - component.dropped([]) - tick(3000) - expect(toastSpy).toHaveBeenCalled() - expect(uploadSpy).toHaveBeenCalled() - })) }) diff --git a/src-ui/src/app/app.component.ts b/src-ui/src/app/app.component.ts index e6718bbed..28ce87929 100644 --- a/src-ui/src/app/app.component.ts +++ b/src-ui/src/app/app.component.ts @@ -5,8 +5,6 @@ import { Router } from '@angular/router' import { Subscription, first } from 'rxjs' import { ConsumerStatusService } from './services/consumer-status.service' import { ToastService } from './services/toast.service' -import { NgxFileDropEntry } from 'ngx-file-drop' -import { UploadDocumentsService } from './services/upload-documents.service' import { TasksService } from './services/tasks.service' import { TourService } from 'ngx-ui-tour-ng-bootstrap' import { @@ -16,7 +14,7 @@ import { } from './services/permissions.service' @Component({ - selector: 'app-root', + selector: 'pngx-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss'], }) @@ -25,16 +23,11 @@ export class AppComponent implements OnInit, OnDestroy { successSubscription: Subscription failedSubscription: Subscription - private fileLeaveTimeoutID: any - fileIsOver: boolean = false - hidden: boolean = true - constructor( private settings: SettingsService, private consumerStatusService: ConsumerStatusService, private toastService: ToastService, private router: Router, - private uploadDocumentsService: UploadDocumentsService, private tasksService: TasksService, public tourService: TourService, private renderer: Renderer2, @@ -87,9 +80,8 @@ export class AppComponent implements OnInit, OnDestroy { ) ) { this.toastService.show({ - title: $localize`Document added`, + content: $localize`Document ${status.filename} was added to Paperless-ngx.`, delay: 10000, - content: $localize`Document ${status.filename} was added to paperless.`, actionName: $localize`Open document`, action: () => { this.router.navigate(['documents', status.documentId]) @@ -97,9 +89,8 @@ export class AppComponent implements OnInit, OnDestroy { }) } else { this.toastService.show({ - title: $localize`Document added`, + content: $localize`Document ${status.filename} was added to Paperless-ngx.`, delay: 10000, - content: $localize`Document ${status.filename} was added to paperless.`, }) } } @@ -128,9 +119,8 @@ export class AppComponent implements OnInit, OnDestroy { ) ) { this.toastService.show({ - title: $localize`New document detected`, + content: $localize`Document ${status.filename} is being processed by Paperless-ngx.`, delay: 5000, - content: $localize`Document ${status.filename} is being processed by paperless.`, }) } }) @@ -179,6 +169,22 @@ export class AppComponent implements OnInit, OnDestroy { offset: 0, }, }, + { + anchorId: 'tour.mail', + content: $localize`Manage e-mail accounts and rules for automatically importing documents.`, + route: '/mail', + backdropConfig: { + offset: 0, + }, + }, + { + anchorId: 'tour.consumption-templates', + content: $localize`Consumption templates give you finer control over the document ingestion process.`, + route: '/templates', + backdropConfig: { + offset: 0, + }, + }, { anchorId: 'tour.file-tasks', content: $localize`File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process.`, @@ -189,7 +195,7 @@ export class AppComponent implements OnInit, OnDestroy { }, { anchorId: 'tour.settings', - content: $localize`Check out the settings for various tweaks to the web app, toggle settings for saved views or setup e-mail checking.`, + content: $localize`Check out the settings for various tweaks to the web app and toggle settings for saved views.`, route: '/settings', backdropConfig: { offset: 0, @@ -234,42 +240,4 @@ export class AppComponent implements OnInit, OnDestroy { }) }) } - - public get dragDropEnabled(): boolean { - return ( - !this.router.url.includes('dashboard') && - this.permissionsService.currentUserCan( - PermissionAction.Add, - PermissionType.Document - ) - ) - } - - public fileOver() { - // allows transition - setTimeout(() => { - this.fileIsOver = true - }, 1) - this.hidden = false - // stop fileLeave timeout - clearTimeout(this.fileLeaveTimeoutID) - } - - public fileLeave(immediate: boolean = false) { - const ms = immediate ? 0 : 500 - - this.fileLeaveTimeoutID = setTimeout(() => { - this.fileIsOver = false - // await transition completed - setTimeout(() => { - this.hidden = true - }, 150) - }, ms) - } - - public dropped(files: NgxFileDropEntry[]) { - this.fileLeave(true) - this.uploadDocumentsService.uploadFiles(files) - this.toastService.showInfo($localize`Initiating upload...`, 3000) - } } diff --git a/src-ui/src/app/app.module.ts b/src-ui/src/app/app.module.ts index f5b30467c..e3cef8c95 100644 --- a/src-ui/src/app/app.module.ts +++ b/src-ui/src/app/app.module.ts @@ -14,8 +14,8 @@ import { DashboardComponent } from './components/dashboard/dashboard.component' import { TagListComponent } from './components/manage/tag-list/tag-list.component' import { DocumentTypeListComponent } from './components/manage/document-type-list/document-type-list.component' import { CorrespondentListComponent } from './components/manage/correspondent-list/correspondent-list.component' -import { LogsComponent } from './components/manage/logs/logs.component' -import { SettingsComponent } from './components/manage/settings/settings.component' +import { LogsComponent } from './components/admin/logs/logs.component' +import { SettingsComponent } from './components/admin/settings/settings.component' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { DatePipe, registerLocaleData } from '@angular/common' import { NotFoundComponent } from './components/not-found/not-found.component' @@ -39,6 +39,7 @@ import { NgxFileDropModule } from 'ngx-file-drop' import { TextComponent } from './components/common/input/text/text.component' import { SelectComponent } from './components/common/input/select/select.component' import { CheckComponent } from './components/common/input/check/check.component' +import { UrlComponent } from './components/common/input/url/url.component' import { PasswordComponent } from './components/common/input/password/password.component' import { SaveViewConfigDialogComponent } from './components/document-list/save-view-config-dialog/save-view-config-dialog.component' import { TagsComponent } from './components/common/input/tags/tags.component' @@ -77,7 +78,7 @@ import { DirtySavedViewGuard } from './guards/dirty-saved-view.guard' import { StoragePathListComponent } from './components/manage/storage-path-list/storage-path-list.component' import { StoragePathEditDialogComponent } from './components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component' import { SettingsService } from './services/settings.service' -import { TasksComponent } from './components/manage/tasks/tasks.component' +import { TasksComponent } from './components/admin/tasks/tasks.component' import { TourNgBootstrapModule } from 'ngx-ui-tour-ng-bootstrap' import { UserEditDialogComponent } from './components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component' import { GroupEditDialogComponent } from './components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component' @@ -94,20 +95,35 @@ import { PermissionsFilterDropdownComponent } from './components/common/permissi import { UsernamePipe } from './pipes/username.pipe' import { LogoComponent } from './components/common/logo/logo.component' import { IsNumberPipe } from './pipes/is-number.pipe' +import { ShareLinksDropdownComponent } from './components/common/share-links-dropdown/share-links-dropdown.component' +import { ConsumptionTemplatesComponent } from './components/manage/consumption-templates/consumption-templates.component' +import { ConsumptionTemplateEditDialogComponent } from './components/common/edit-dialog/consumption-template-edit-dialog/consumption-template-edit-dialog.component' +import { MailComponent } from './components/manage/mail/mail.component' +import { UsersAndGroupsComponent } from './components/admin/users-groups/users-groups.component' +import { DragDropModule } from '@angular/cdk/drag-drop' +import { FileDropComponent } from './components/file-drop/file-drop.component' +import { CustomFieldsComponent } from './components/manage/custom-fields/custom-fields.component' +import { CustomFieldEditDialogComponent } from './components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component' +import { CustomFieldsDropdownComponent } from './components/common/custom-fields-dropdown/custom-fields-dropdown.component' +import localeAf from '@angular/common/locales/af' import localeAr from '@angular/common/locales/ar' import localeBe from '@angular/common/locales/be' +import localeBg from '@angular/common/locales/bg' import localeCa from '@angular/common/locales/ca' import localeCs from '@angular/common/locales/cs' import localeDa from '@angular/common/locales/da' import localeDe from '@angular/common/locales/de' +import localeEl from '@angular/common/locales/el' import localeEnGb from '@angular/common/locales/en-GB' import localeEs from '@angular/common/locales/es' import localeFi from '@angular/common/locales/fi' import localeFr from '@angular/common/locales/fr' +import localeHu from '@angular/common/locales/hu' import localeIt from '@angular/common/locales/it' import localeLb from '@angular/common/locales/lb' import localeNl from '@angular/common/locales/nl' +import localeNo from '@angular/common/locales/no' import localePl from '@angular/common/locales/pl' import localePt from '@angular/common/locales/pt' import localeRo from '@angular/common/locales/ro' @@ -120,19 +136,24 @@ import localeTr from '@angular/common/locales/tr' import localeUk from '@angular/common/locales/uk' import localeZh from '@angular/common/locales/zh' +registerLocaleData(localeAf) registerLocaleData(localeAr) registerLocaleData(localeBe) +registerLocaleData(localeBg) registerLocaleData(localeCa) registerLocaleData(localeCs) registerLocaleData(localeDa) registerLocaleData(localeDe) +registerLocaleData(localeEl) registerLocaleData(localeEnGb) registerLocaleData(localeEs) registerLocaleData(localeFi) registerLocaleData(localeFr) +registerLocaleData(localeHu) registerLocaleData(localeIt) registerLocaleData(localeLb) registerLocaleData(localeNl) +registerLocaleData(localeNo) registerLocaleData(localePl) registerLocaleData(localePt, 'pt-BR') registerLocaleData(localePt, 'pt-PT') @@ -185,6 +206,7 @@ function initializeApp(settings: SettingsService) { TextComponent, SelectComponent, CheckComponent, + UrlComponent, PasswordComponent, SaveViewConfigDialogComponent, TagsComponent, @@ -225,6 +247,15 @@ function initializeApp(settings: SettingsService) { UsernamePipe, LogoComponent, IsNumberPipe, + ShareLinksDropdownComponent, + ConsumptionTemplatesComponent, + ConsumptionTemplateEditDialogComponent, + MailComponent, + UsersAndGroupsComponent, + FileDropComponent, + CustomFieldsComponent, + CustomFieldEditDialogComponent, + CustomFieldsDropdownComponent, ], imports: [ BrowserModule, @@ -238,6 +269,7 @@ function initializeApp(settings: SettingsService) { NgSelectModule, ColorSliderModule, TourNgBootstrapModule, + DragDropModule, ], providers: [ { diff --git a/src-ui/src/app/components/manage/logs/logs.component.html b/src-ui/src/app/components/admin/logs/logs.component.html similarity index 50% rename from src-ui/src/app/components/manage/logs/logs.component.html rename to src-ui/src/app/components/admin/logs/logs.component.html index 2129a8fa1..91f7f3bd6 100644 --- a/src-ui/src/app/components/manage/logs/logs.component.html +++ b/src-ui/src/app/components/admin/logs/logs.component.html @@ -1,17 +1,24 @@ - - - + +
+
+
+ Loading... +

{{log}}

diff --git a/src-ui/src/app/components/manage/logs/logs.component.scss b/src-ui/src/app/components/admin/logs/logs.component.scss similarity index 100% rename from src-ui/src/app/components/manage/logs/logs.component.scss rename to src-ui/src/app/components/admin/logs/logs.component.scss diff --git a/src-ui/src/app/components/manage/logs/logs.component.spec.ts b/src-ui/src/app/components/admin/logs/logs.component.spec.ts similarity index 100% rename from src-ui/src/app/components/manage/logs/logs.component.spec.ts rename to src-ui/src/app/components/admin/logs/logs.component.spec.ts diff --git a/src-ui/src/app/components/admin/logs/logs.component.ts b/src-ui/src/app/components/admin/logs/logs.component.ts new file mode 100644 index 000000000..cf88077e7 --- /dev/null +++ b/src-ui/src/app/components/admin/logs/logs.component.ts @@ -0,0 +1,94 @@ +import { + Component, + ElementRef, + OnInit, + AfterViewChecked, + ViewChild, + OnDestroy, +} from '@angular/core' +import { Subject, takeUntil } from 'rxjs' +import { LogService } from 'src/app/services/rest/log.service' + +@Component({ + selector: 'pngx-logs', + templateUrl: './logs.component.html', + styleUrls: ['./logs.component.scss'], +}) +export class LogsComponent implements OnInit, AfterViewChecked, OnDestroy { + constructor(private logService: LogService) {} + + public logs: string[] = [] + + public logFiles: string[] = [] + + public activeLog: string + + private unsubscribeNotifier: Subject = new Subject() + + public isLoading: boolean = false + + @ViewChild('logContainer') logContainer: ElementRef + + ngOnInit(): void { + this.isLoading = true + this.logService + .list() + .pipe(takeUntil(this.unsubscribeNotifier)) + .subscribe((result) => { + this.logFiles = result + this.isLoading = false + if (this.logFiles.length > 0) { + this.activeLog = this.logFiles[0] + this.reloadLogs() + } + }) + } + + ngAfterViewChecked() { + this.scrollToBottom() + } + + ngOnDestroy(): void { + this.unsubscribeNotifier.next(true) + this.unsubscribeNotifier.complete() + } + + reloadLogs() { + this.isLoading = true + this.logService + .get(this.activeLog) + .pipe(takeUntil(this.unsubscribeNotifier)) + .subscribe({ + next: (result) => { + this.logs = result + this.isLoading = false + }, + error: () => { + this.logs = [] + this.isLoading = false + }, + }) + } + + getLogLevel(log: string) { + if (log.indexOf('[DEBUG]') != -1) { + return 10 + } else if (log.indexOf('[WARNING]') != -1) { + return 30 + } else if (log.indexOf('[ERROR]') != -1) { + return 40 + } else if (log.indexOf('[CRITICAL]') != -1) { + return 50 + } else { + return 20 + } + } + + scrollToBottom(): void { + this.logContainer?.nativeElement.scroll({ + top: this.logContainer.nativeElement.scrollHeight, + left: 0, + behavior: 'auto', + }) + } +} diff --git a/src-ui/src/app/components/admin/settings/settings.component.html b/src-ui/src/app/components/admin/settings/settings.component.html new file mode 100644 index 000000000..7d09a8b61 --- /dev/null +++ b/src-ui/src/app/components/admin/settings/settings.component.html @@ -0,0 +1,324 @@ + + + + Open Django Admin + + + + + + +
+ + + +
+ + +
diff --git a/src-ui/src/app/components/manage/settings/settings.component.scss b/src-ui/src/app/components/admin/settings/settings.component.scss similarity index 100% rename from src-ui/src/app/components/manage/settings/settings.component.scss rename to src-ui/src/app/components/admin/settings/settings.component.scss diff --git a/src-ui/src/app/components/admin/settings/settings.component.spec.ts b/src-ui/src/app/components/admin/settings/settings.component.spec.ts new file mode 100644 index 000000000..73ac3c98a --- /dev/null +++ b/src-ui/src/app/components/admin/settings/settings.component.spec.ts @@ -0,0 +1,368 @@ +import { ViewportScroller, DatePipe } from '@angular/common' +import { HttpClientTestingModule } from '@angular/common/http/testing' +import { ComponentFixture, TestBed } from '@angular/core/testing' +import { FormsModule, ReactiveFormsModule } from '@angular/forms' +import { By } from '@angular/platform-browser' +import { Router, ActivatedRoute, convertToParamMap } from '@angular/router' +import { RouterTestingModule } from '@angular/router/testing' +import { + NgbModule, + NgbAlertModule, + NgbNavLink, +} from '@ng-bootstrap/ng-bootstrap' +import { NgSelectModule } from '@ng-select/ng-select' +import { of, throwError } from 'rxjs' +import { routes } from 'src/app/app-routing.module' +import { PaperlessSavedView } from 'src/app/data/paperless-saved-view' +import { SETTINGS_KEYS } from 'src/app/data/paperless-uisettings' +import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' +import { PermissionsGuard } from 'src/app/guards/permissions.guard' +import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe' +import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' +import { PermissionsService } from 'src/app/services/permissions.service' +import { GroupService } from 'src/app/services/rest/group.service' +import { SavedViewService } from 'src/app/services/rest/saved-view.service' +import { UserService } from 'src/app/services/rest/user.service' +import { SettingsService } from 'src/app/services/settings.service' +import { ToastService, Toast } from 'src/app/services/toast.service' +import { ConfirmDialogComponent } from '../../common/confirm-dialog/confirm-dialog.component' +import { CheckComponent } from '../../common/input/check/check.component' +import { ColorComponent } from '../../common/input/color/color.component' +import { NumberComponent } from '../../common/input/number/number.component' +import { PermissionsGroupComponent } from '../../common/input/permissions/permissions-group/permissions-group.component' +import { PermissionsUserComponent } from '../../common/input/permissions/permissions-user/permissions-user.component' +import { SelectComponent } from '../../common/input/select/select.component' +import { TagsComponent } from '../../common/input/tags/tags.component' +import { TextComponent } from '../../common/input/text/text.component' +import { PageHeaderComponent } from '../../common/page-header/page-header.component' +import { SettingsComponent } from './settings.component' +import { IfOwnerDirective } from 'src/app/directives/if-owner.directive' + +const savedViews = [ + { id: 1, name: 'view1', show_in_sidebar: true, show_on_dashboard: true }, + { id: 2, name: 'view2', show_in_sidebar: false, show_on_dashboard: false }, +] +const users = [ + { id: 1, username: 'user1', is_superuser: false }, + { id: 2, username: 'user2', is_superuser: false }, +] +const groups = [ + { id: 1, name: 'group1' }, + { id: 2, name: 'group2' }, +] + +describe('SettingsComponent', () => { + let component: SettingsComponent + let fixture: ComponentFixture + let router: Router + let settingsService: SettingsService + let savedViewService: SavedViewService + let activatedRoute: ActivatedRoute + let viewportScroller: ViewportScroller + let toastService: ToastService + let userService: UserService + let permissionsService: PermissionsService + let groupService: GroupService + + beforeEach(async () => { + TestBed.configureTestingModule({ + declarations: [ + SettingsComponent, + PageHeaderComponent, + IfPermissionsDirective, + CustomDatePipe, + ConfirmDialogComponent, + CheckComponent, + ColorComponent, + SafeHtmlPipe, + SelectComponent, + TextComponent, + NumberComponent, + TagsComponent, + PermissionsUserComponent, + PermissionsGroupComponent, + IfOwnerDirective, + ], + providers: [CustomDatePipe, DatePipe, PermissionsGuard], + imports: [ + NgbModule, + HttpClientTestingModule, + RouterTestingModule.withRoutes(routes), + FormsModule, + ReactiveFormsModule, + NgbAlertModule, + NgSelectModule, + ], + }).compileComponents() + + router = TestBed.inject(Router) + activatedRoute = TestBed.inject(ActivatedRoute) + viewportScroller = TestBed.inject(ViewportScroller) + toastService = TestBed.inject(ToastService) + settingsService = TestBed.inject(SettingsService) + settingsService.currentUser = users[0] + userService = TestBed.inject(UserService) + permissionsService = TestBed.inject(PermissionsService) + jest.spyOn(permissionsService, 'currentUserCan').mockReturnValue(true) + jest + .spyOn(permissionsService, 'currentUserHasObjectPermissions') + .mockReturnValue(true) + jest + .spyOn(permissionsService, 'currentUserOwnsObject') + .mockReturnValue(true) + groupService = TestBed.inject(GroupService) + savedViewService = TestBed.inject(SavedViewService) + }) + + function completeSetup(excludeService = null) { + if (excludeService !== userService) { + jest.spyOn(userService, 'listAll').mockReturnValue( + of({ + all: users.map((u) => u.id), + count: users.length, + results: users.concat([]), + }) + ) + } + if (excludeService !== groupService) { + jest.spyOn(groupService, 'listAll').mockReturnValue( + of({ + all: groups.map((g) => g.id), + count: groups.length, + results: groups.concat([]), + }) + ) + } + if (excludeService !== savedViewService) { + jest.spyOn(savedViewService, 'listAll').mockReturnValue( + of({ + all: savedViews.map((v) => v.id), + count: savedViews.length, + results: (savedViews as PaperlessSavedView[]).concat([]), + }) + ) + } + + fixture = TestBed.createComponent(SettingsComponent) + component = fixture.componentInstance + fixture.detectChanges() + } + + it('should support tabbed settings & change URL, prevent navigation if dirty confirmation rejected', () => { + completeSetup() + const navigateSpy = jest.spyOn(router, 'navigate') + const tabButtons = fixture.debugElement.queryAll(By.directive(NgbNavLink)) + tabButtons[1].nativeElement.dispatchEvent(new MouseEvent('click')) + expect(navigateSpy).toHaveBeenCalledWith(['settings', 'permissions']) + tabButtons[2].nativeElement.dispatchEvent(new MouseEvent('click')) + expect(navigateSpy).toHaveBeenCalledWith(['settings', 'notifications']) + tabButtons[3].nativeElement.dispatchEvent(new MouseEvent('click')) + expect(navigateSpy).toHaveBeenCalledWith(['settings', 'savedviews']) + + const initSpy = jest.spyOn(component, 'initialize') + component.isDirty = true // mock dirty + navigateSpy.mockResolvedValueOnce(false) // nav rejected cause dirty + tabButtons[0].nativeElement.dispatchEvent(new MouseEvent('click')) + expect(navigateSpy).toHaveBeenCalledWith(['settings', 'general']) + expect(initSpy).not.toHaveBeenCalled() + + navigateSpy.mockResolvedValueOnce(true) // nav accepted even though dirty + tabButtons[1].nativeElement.dispatchEvent(new MouseEvent('click')) + expect(navigateSpy).toHaveBeenCalledWith(['settings', 'notifications']) + expect(initSpy).toHaveBeenCalled() + }) + + it('should support direct link to tab by URL, scroll if needed', () => { + completeSetup() + jest + .spyOn(activatedRoute, 'paramMap', 'get') + .mockReturnValue(of(convertToParamMap({ section: 'notifications' }))) + activatedRoute.snapshot.fragment = '#notifications' + const scrollSpy = jest.spyOn(viewportScroller, 'scrollToAnchor') + component.ngOnInit() + expect(component.activeNavID).toEqual(3) // Notifications + component.ngAfterViewInit() + expect(scrollSpy).toHaveBeenCalledWith('#notifications') + }) + + it('should enable organizing of sidebar saved views even on direct navigation', () => { + completeSetup() + jest + .spyOn(activatedRoute, 'paramMap', 'get') + .mockReturnValue(of(convertToParamMap({ section: 'savedviews' }))) + activatedRoute.snapshot.fragment = '#savedviews' + component.ngOnInit() + expect(component.activeNavID).toEqual(4) // Saved Views + component.ngAfterViewInit() + expect(settingsService.organizingSidebarSavedViews).toBeTruthy() + }) + + it('should support save saved views, show error', () => { + completeSetup() + + const tabButtons = fixture.debugElement.queryAll(By.directive(NgbNavLink)) + tabButtons[3].nativeElement.dispatchEvent(new MouseEvent('click')) + fixture.detectChanges() + + const toastErrorSpy = jest.spyOn(toastService, 'showError') + const toastSpy = jest.spyOn(toastService, 'show') + const savedViewPatchSpy = jest.spyOn(savedViewService, 'patchMany') + + const toggle = fixture.debugElement.query( + By.css('.form-check.form-switch input') + ) + toggle.nativeElement.checked = true + toggle.nativeElement.dispatchEvent(new Event('change')) + + // saved views error first + savedViewPatchSpy.mockReturnValueOnce( + throwError(() => new Error('unable to save saved views')) + ) + component.saveSettings() + expect(toastErrorSpy).toHaveBeenCalled() + expect(savedViewPatchSpy).toHaveBeenCalled() + toastSpy.mockClear() + toastErrorSpy.mockClear() + savedViewPatchSpy.mockClear() + + // succeed saved views + savedViewPatchSpy.mockReturnValueOnce( + of(savedViews as PaperlessSavedView[]) + ) + component.saveSettings() + expect(toastErrorSpy).not.toHaveBeenCalled() + expect(savedViewPatchSpy).toHaveBeenCalled() + }) + + it('should update only patch saved views that have changed', () => { + completeSetup() + + const tabButtons = fixture.debugElement.queryAll(By.directive(NgbNavLink)) + tabButtons[3].nativeElement.dispatchEvent(new MouseEvent('click')) + fixture.detectChanges() + + const patchSpy = jest.spyOn(savedViewService, 'patchMany') + component.saveSettings() + expect(patchSpy).not.toHaveBeenCalled() + + const view = savedViews[0] + const toggle = fixture.debugElement.query( + By.css('.form-check.form-switch input') + ) + toggle.nativeElement.checked = true + toggle.nativeElement.dispatchEvent(new Event('change')) + // register change + component.savedViewGroup.get(view.id.toString()).value[ + 'show_on_dashboard' + ] = !view.show_on_dashboard + fixture.detectChanges() + + component.saveSettings() + expect(patchSpy).toHaveBeenCalledWith([ + { + id: view.id, + name: view.name, + show_in_sidebar: view.show_in_sidebar, + show_on_dashboard: !view.show_on_dashboard, + }, + ]) + }) + + it('should support save local settings updating appearance settings and calling API, show error', () => { + completeSetup() + jest.spyOn(savedViewService, 'patchMany').mockReturnValue(of([])) + const toastErrorSpy = jest.spyOn(toastService, 'showError') + const toastSpy = jest.spyOn(toastService, 'show') + const storeSpy = jest.spyOn(settingsService, 'storeSettings') + const appearanceSettingsSpy = jest.spyOn( + settingsService, + 'updateAppearanceSettings' + ) + const setSpy = jest.spyOn(settingsService, 'set') + + // error first + storeSpy.mockReturnValueOnce( + throwError(() => new Error('unable to save settings')) + ) + component.saveSettings() + + expect(toastErrorSpy).toHaveBeenCalled() + expect(storeSpy).toHaveBeenCalled() + expect(appearanceSettingsSpy).not.toHaveBeenCalled() + expect(setSpy).toHaveBeenCalledTimes(24) + + // succeed + storeSpy.mockReturnValueOnce(of(true)) + component.saveSettings() + expect(toastSpy).toHaveBeenCalled() + expect(appearanceSettingsSpy).toHaveBeenCalled() + }) + + it('should offer reload if settings changes require', () => { + completeSetup() + jest.spyOn(savedViewService, 'patchMany').mockReturnValue(of([])) + let toast: Toast + toastService.getToasts().subscribe((t) => (toast = t[0])) + component.initialize(true) // reset + component.store.getValue()['displayLanguage'] = 'en-US' + component.store.getValue()['updateCheckingEnabled'] = false + component.settingsForm.value.displayLanguage = 'en-GB' + component.settingsForm.value.updateCheckingEnabled = true + jest.spyOn(settingsService, 'storeSettings').mockReturnValueOnce(of(true)) + component.saveSettings() + expect(toast.actionName).toEqual('Reload now') + }) + + it('should allow setting theme color, visually apply change immediately but not save', () => { + completeSetup() + const appearanceSpy = jest.spyOn( + settingsService, + 'updateAppearanceSettings' + ) + const colorInput = fixture.debugElement.query(By.directive(ColorComponent)) + colorInput.query(By.css('input')).nativeElement.value = '#ff0000' + colorInput + .query(By.css('input')) + .nativeElement.dispatchEvent(new Event('change')) + fixture.detectChanges() + expect(appearanceSpy).toHaveBeenCalled() + expect(settingsService.get(SETTINGS_KEYS.THEME_COLOR)).toEqual('') + component.clearThemeColor() + }) + + it('should support delete saved view', () => { + completeSetup() + const toastSpy = jest.spyOn(toastService, 'showInfo') + const deleteSpy = jest.spyOn(savedViewService, 'delete') + deleteSpy.mockReturnValue(of(true)) + component.deleteSavedView(savedViews[0] as PaperlessSavedView) + expect(deleteSpy).toHaveBeenCalled() + expect(toastSpy).toHaveBeenCalledWith( + `Saved view "${savedViews[0].name}" deleted.` + ) + }) + + it('should show errors on load if load users failure', () => { + const toastErrorSpy = jest.spyOn(toastService, 'showError') + jest + .spyOn(userService, 'listAll') + .mockImplementation(() => + throwError(() => new Error('failed to load users')) + ) + completeSetup(userService) + fixture.detectChanges() + expect(toastErrorSpy).toBeCalled() + }) + + it('should show errors on load if load groups failure', () => { + const toastErrorSpy = jest.spyOn(toastService, 'showError') + jest + .spyOn(groupService, 'listAll') + .mockImplementation(() => + throwError(() => new Error('failed to load groups')) + ) + completeSetup(groupService) + fixture.detectChanges() + expect(toastErrorSpy).toBeCalled() + }) +}) diff --git a/src-ui/src/app/components/admin/settings/settings.component.ts b/src-ui/src/app/components/admin/settings/settings.component.ts new file mode 100644 index 000000000..2d3960dc5 --- /dev/null +++ b/src-ui/src/app/components/admin/settings/settings.component.ts @@ -0,0 +1,558 @@ +import { ViewportScroller } from '@angular/common' +import { + Component, + OnInit, + AfterViewInit, + OnDestroy, + Inject, + LOCALE_ID, +} from '@angular/core' +import { FormGroup, FormControl } from '@angular/forms' +import { ActivatedRoute, Router } from '@angular/router' +import { NgbNavChangeEvent } from '@ng-bootstrap/ng-bootstrap' +import { DirtyComponent, dirtyCheck } from '@ngneat/dirty-check-forms' +import { TourService } from 'ngx-ui-tour-ng-bootstrap' +import { + BehaviorSubject, + Subscription, + Observable, + Subject, + first, + takeUntil, + tap, +} from 'rxjs' +import { PaperlessGroup } from 'src/app/data/paperless-group' +import { PaperlessSavedView } from 'src/app/data/paperless-saved-view' +import { SETTINGS_KEYS } from 'src/app/data/paperless-uisettings' +import { PaperlessUser } from 'src/app/data/paperless-user' +import { DocumentListViewService } from 'src/app/services/document-list-view.service' +import { + PermissionsService, + PermissionAction, + PermissionType, +} from 'src/app/services/permissions.service' +import { GroupService } from 'src/app/services/rest/group.service' +import { SavedViewService } from 'src/app/services/rest/saved-view.service' +import { UserService } from 'src/app/services/rest/user.service' +import { + SettingsService, + LanguageOption, +} from 'src/app/services/settings.service' +import { ToastService, Toast } from 'src/app/services/toast.service' +import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component' + +enum SettingsNavIDs { + General = 1, + Permissions = 2, + Notifications = 3, + SavedViews = 4, +} + +@Component({ + selector: 'pngx-settings', + templateUrl: './settings.component.html', + styleUrls: ['./settings.component.scss'], +}) +export class SettingsComponent + extends ComponentWithPermissions + implements OnInit, AfterViewInit, OnDestroy, DirtyComponent +{ + SettingsNavIDs = SettingsNavIDs + activeNavID: number + + savedViewGroup = new FormGroup({}) + + settingsForm = new FormGroup({ + bulkEditConfirmationDialogs: new FormControl(null), + bulkEditApplyOnClose: new FormControl(null), + documentListItemPerPage: new FormControl(null), + slimSidebarEnabled: new FormControl(null), + darkModeUseSystem: new FormControl(null), + darkModeEnabled: new FormControl(null), + darkModeInvertThumbs: new FormControl(null), + themeColor: new FormControl(null), + useNativePdfViewer: new FormControl(null), + displayLanguage: new FormControl(null), + dateLocale: new FormControl(null), + dateFormat: new FormControl(null), + notesEnabled: new FormControl(null), + updateCheckingEnabled: new FormControl(null), + defaultPermsOwner: new FormControl(null), + defaultPermsViewUsers: new FormControl(null), + defaultPermsViewGroups: new FormControl(null), + defaultPermsEditUsers: new FormControl(null), + defaultPermsEditGroups: new FormControl(null), + + notificationsConsumerNewDocument: new FormControl(null), + notificationsConsumerSuccess: new FormControl(null), + notificationsConsumerFailed: new FormControl(null), + notificationsConsumerSuppressOnDashboard: new FormControl(null), + + savedViewsWarnOnUnsavedChange: new FormControl(null), + savedViews: this.savedViewGroup, + }) + + savedViews: PaperlessSavedView[] + + store: BehaviorSubject + storeSub: Subscription + isDirty$: Observable + isDirty: boolean = false + unsubscribeNotifier: Subject = new Subject() + savePending: boolean = false + + users: PaperlessUser[] + groups: PaperlessGroup[] + + get computedDateLocale(): string { + return ( + this.settingsForm.value.dateLocale || + this.settingsForm.value.displayLanguage || + this.currentLocale + ) + } + + constructor( + public savedViewService: SavedViewService, + private documentListViewService: DocumentListViewService, + private toastService: ToastService, + private settings: SettingsService, + @Inject(LOCALE_ID) public currentLocale: string, + private viewportScroller: ViewportScroller, + private activatedRoute: ActivatedRoute, + public readonly tourService: TourService, + private usersService: UserService, + private groupsService: GroupService, + private router: Router, + public permissionsService: PermissionsService + ) { + super() + this.settings.settingsSaved.subscribe(() => { + if (!this.savePending) this.initialize() + }) + } + + ngOnInit() { + this.initialize() + + if ( + this.permissionsService.currentUserCan( + PermissionAction.View, + PermissionType.User + ) + ) { + this.usersService + .listAll() + .pipe(first()) + .subscribe({ + next: (r) => { + this.users = r.results + }, + error: (e) => { + this.toastService.showError($localize`Error retrieving users`, e) + }, + }) + } + + if ( + this.permissionsService.currentUserCan( + PermissionAction.View, + PermissionType.Group + ) + ) { + this.groupsService + .listAll() + .pipe(first()) + .subscribe({ + next: (r) => { + this.groups = r.results + }, + error: (e) => { + this.toastService.showError($localize`Error retrieving groups`, e) + }, + }) + } + + if ( + this.permissionsService.currentUserCan( + PermissionAction.View, + PermissionType.SavedView + ) + ) { + this.savedViewService.listAll().subscribe((r) => { + this.savedViews = r.results + this.initialize(false) + }) + } + + this.activatedRoute.paramMap.subscribe((paramMap) => { + const section = paramMap.get('section') + if (section) { + const navIDKey: string = Object.keys(SettingsNavIDs).find( + (navID) => navID.toLowerCase() == section + ) + if (navIDKey) { + this.activeNavID = SettingsNavIDs[navIDKey] + } + if (this.activeNavID === SettingsNavIDs.SavedViews) { + this.settings.organizingSidebarSavedViews = true + } + } + }) + } + + ngAfterViewInit(): void { + if (this.activatedRoute.snapshot.fragment) { + this.viewportScroller.scrollToAnchor( + this.activatedRoute.snapshot.fragment + ) + } + } + + private getCurrentSettings() { + return { + bulkEditConfirmationDialogs: this.settings.get( + SETTINGS_KEYS.BULK_EDIT_CONFIRMATION_DIALOGS + ), + bulkEditApplyOnClose: this.settings.get( + SETTINGS_KEYS.BULK_EDIT_APPLY_ON_CLOSE + ), + documentListItemPerPage: this.settings.get( + SETTINGS_KEYS.DOCUMENT_LIST_SIZE + ), + slimSidebarEnabled: this.settings.get(SETTINGS_KEYS.SLIM_SIDEBAR), + darkModeUseSystem: this.settings.get(SETTINGS_KEYS.DARK_MODE_USE_SYSTEM), + darkModeEnabled: this.settings.get(SETTINGS_KEYS.DARK_MODE_ENABLED), + darkModeInvertThumbs: this.settings.get( + SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED + ), + themeColor: this.settings.get(SETTINGS_KEYS.THEME_COLOR), + useNativePdfViewer: this.settings.get( + SETTINGS_KEYS.USE_NATIVE_PDF_VIEWER + ), + displayLanguage: this.settings.getLanguage(), + dateLocale: this.settings.get(SETTINGS_KEYS.DATE_LOCALE), + dateFormat: this.settings.get(SETTINGS_KEYS.DATE_FORMAT), + notesEnabled: this.settings.get(SETTINGS_KEYS.NOTES_ENABLED), + updateCheckingEnabled: this.settings.get( + SETTINGS_KEYS.UPDATE_CHECKING_ENABLED + ), + notificationsConsumerNewDocument: this.settings.get( + SETTINGS_KEYS.NOTIFICATIONS_CONSUMER_NEW_DOCUMENT + ), + notificationsConsumerSuccess: this.settings.get( + SETTINGS_KEYS.NOTIFICATIONS_CONSUMER_SUCCESS + ), + notificationsConsumerFailed: this.settings.get( + SETTINGS_KEYS.NOTIFICATIONS_CONSUMER_FAILED + ), + notificationsConsumerSuppressOnDashboard: this.settings.get( + SETTINGS_KEYS.NOTIFICATIONS_CONSUMER_SUPPRESS_ON_DASHBOARD + ), + savedViewsWarnOnUnsavedChange: this.settings.get( + SETTINGS_KEYS.SAVED_VIEWS_WARN_ON_UNSAVED_CHANGE + ), + defaultPermsOwner: this.settings.get(SETTINGS_KEYS.DEFAULT_PERMS_OWNER), + defaultPermsViewUsers: this.settings.get( + SETTINGS_KEYS.DEFAULT_PERMS_VIEW_USERS + ), + defaultPermsViewGroups: this.settings.get( + SETTINGS_KEYS.DEFAULT_PERMS_VIEW_GROUPS + ), + defaultPermsEditUsers: this.settings.get( + SETTINGS_KEYS.DEFAULT_PERMS_EDIT_USERS + ), + defaultPermsEditGroups: this.settings.get( + SETTINGS_KEYS.DEFAULT_PERMS_EDIT_GROUPS + ), + savedViews: {}, + } + } + + onNavChange(navChangeEvent: NgbNavChangeEvent) { + const [foundNavIDkey] = Object.entries(SettingsNavIDs).find( + ([, navIDValue]) => navIDValue == navChangeEvent.nextId + ) + if (foundNavIDkey) + // if its dirty we need to wait for confirmation + this.router + .navigate(['settings', foundNavIDkey.toLowerCase()]) + .then((navigated) => { + this.settings.organizingSidebarSavedViews = false + if (!navigated && this.isDirty) { + this.activeNavID = navChangeEvent.activeId + } else if (navigated && this.isDirty) { + this.initialize() + } + if (this.activeNavID === SettingsNavIDs.SavedViews) { + this.settings.organizingSidebarSavedViews = true + } + }) + } + + initialize(resetSettings: boolean = true) { + this.unsubscribeNotifier.next(true) + + const currentFormValue = this.settingsForm.value + + let storeData = this.getCurrentSettings() + + if (this.savedViews) { + this.emptyGroup(this.savedViewGroup) + + for (let view of this.savedViews) { + storeData.savedViews[view.id.toString()] = { + id: view.id, + name: view.name, + show_on_dashboard: view.show_on_dashboard, + show_in_sidebar: view.show_in_sidebar, + } + this.savedViewGroup.addControl( + view.id.toString(), + new FormGroup({ + id: new FormControl(null), + name: new FormControl(null), + show_on_dashboard: new FormControl(null), + show_in_sidebar: new FormControl(null), + }) + ) + } + } + + this.store = new BehaviorSubject(storeData) + + this.storeSub = this.store.asObservable().subscribe((state) => { + this.settingsForm.patchValue(state, { emitEvent: false }) + }) + + // Initialize dirtyCheck + this.isDirty$ = dirtyCheck(this.settingsForm, this.store.asObservable()) + + // Record dirty in case we need to 'undo' appearance settings if not saved on close + this.isDirty$ + .pipe(takeUntil(this.unsubscribeNotifier)) + .subscribe((dirty) => { + this.isDirty = dirty + }) + + // "Live" visual changes prior to save + this.settingsForm.valueChanges + .pipe(takeUntil(this.unsubscribeNotifier)) + .subscribe(() => { + this.settings.updateAppearanceSettings( + this.settingsForm.get('darkModeUseSystem').value, + this.settingsForm.get('darkModeEnabled').value, + this.settingsForm.get('themeColor').value + ) + }) + + if (!resetSettings && currentFormValue) { + // prevents loss of unsaved changes + this.settingsForm.patchValue(currentFormValue) + } + } + + private emptyGroup(group: FormGroup) { + Object.keys(group.controls).forEach((key) => group.removeControl(key)) + } + + ngOnDestroy() { + if (this.isDirty) this.settings.updateAppearanceSettings() // in case user changed appearance but didnt save + this.storeSub && this.storeSub.unsubscribe() + this.settings.organizingSidebarSavedViews = false + } + + deleteSavedView(savedView: PaperlessSavedView) { + this.savedViewService.delete(savedView).subscribe(() => { + this.savedViewGroup.removeControl(savedView.id.toString()) + this.savedViews.splice(this.savedViews.indexOf(savedView), 1) + this.toastService.showInfo( + $localize`Saved view "${savedView.name}" deleted.` + ) + this.savedViewService.clearCache() + this.savedViewService.listAll().subscribe((r) => { + this.savedViews = r.results + this.initialize(true) + }) + }) + } + + private saveLocalSettings() { + this.savePending = true + const reloadRequired = + this.settingsForm.value.displayLanguage != + this.store?.getValue()['displayLanguage'] || // displayLanguage is dirty + (this.settingsForm.value.updateCheckingEnabled != + this.store?.getValue()['updateCheckingEnabled'] && + this.settingsForm.value.updateCheckingEnabled) // update checking was turned on + + this.settings.set( + SETTINGS_KEYS.BULK_EDIT_APPLY_ON_CLOSE, + this.settingsForm.value.bulkEditApplyOnClose + ) + this.settings.set( + SETTINGS_KEYS.BULK_EDIT_CONFIRMATION_DIALOGS, + this.settingsForm.value.bulkEditConfirmationDialogs + ) + this.settings.set( + SETTINGS_KEYS.DOCUMENT_LIST_SIZE, + this.settingsForm.value.documentListItemPerPage + ) + this.settings.set( + SETTINGS_KEYS.SLIM_SIDEBAR, + this.settingsForm.value.slimSidebarEnabled + ) + this.settings.set( + SETTINGS_KEYS.DARK_MODE_USE_SYSTEM, + this.settingsForm.value.darkModeUseSystem + ) + this.settings.set( + SETTINGS_KEYS.DARK_MODE_ENABLED, + (this.settingsForm.value.darkModeEnabled == true).toString() + ) + this.settings.set( + SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED, + (this.settingsForm.value.darkModeInvertThumbs == true).toString() + ) + this.settings.set( + SETTINGS_KEYS.THEME_COLOR, + this.settingsForm.value.themeColor.toString() + ) + this.settings.set( + SETTINGS_KEYS.USE_NATIVE_PDF_VIEWER, + this.settingsForm.value.useNativePdfViewer + ) + this.settings.set( + SETTINGS_KEYS.DATE_LOCALE, + this.settingsForm.value.dateLocale + ) + this.settings.set( + SETTINGS_KEYS.DATE_FORMAT, + this.settingsForm.value.dateFormat + ) + this.settings.set( + SETTINGS_KEYS.NOTIFICATIONS_CONSUMER_NEW_DOCUMENT, + this.settingsForm.value.notificationsConsumerNewDocument + ) + this.settings.set( + SETTINGS_KEYS.NOTIFICATIONS_CONSUMER_SUCCESS, + this.settingsForm.value.notificationsConsumerSuccess + ) + this.settings.set( + SETTINGS_KEYS.NOTIFICATIONS_CONSUMER_FAILED, + this.settingsForm.value.notificationsConsumerFailed + ) + this.settings.set( + SETTINGS_KEYS.NOTIFICATIONS_CONSUMER_SUPPRESS_ON_DASHBOARD, + this.settingsForm.value.notificationsConsumerSuppressOnDashboard + ) + this.settings.set( + SETTINGS_KEYS.NOTES_ENABLED, + this.settingsForm.value.notesEnabled + ) + this.settings.set( + SETTINGS_KEYS.UPDATE_CHECKING_ENABLED, + this.settingsForm.value.updateCheckingEnabled + ) + this.settings.set( + SETTINGS_KEYS.SAVED_VIEWS_WARN_ON_UNSAVED_CHANGE, + this.settingsForm.value.savedViewsWarnOnUnsavedChange + ) + this.settings.set( + SETTINGS_KEYS.DEFAULT_PERMS_OWNER, + this.settingsForm.value.defaultPermsOwner + ) + this.settings.set( + SETTINGS_KEYS.DEFAULT_PERMS_VIEW_USERS, + this.settingsForm.value.defaultPermsViewUsers + ) + this.settings.set( + SETTINGS_KEYS.DEFAULT_PERMS_VIEW_GROUPS, + this.settingsForm.value.defaultPermsViewGroups + ) + this.settings.set( + SETTINGS_KEYS.DEFAULT_PERMS_EDIT_USERS, + this.settingsForm.value.defaultPermsEditUsers + ) + this.settings.set( + SETTINGS_KEYS.DEFAULT_PERMS_EDIT_GROUPS, + this.settingsForm.value.defaultPermsEditGroups + ) + this.settings.setLanguage(this.settingsForm.value.displayLanguage) + this.settings + .storeSettings() + .pipe(first()) + .pipe(tap(() => (this.savePending = false))) + .subscribe({ + next: () => { + this.store.next(this.settingsForm.value) + this.documentListViewService.updatePageSize() + this.settings.updateAppearanceSettings() + let savedToast: Toast = { + content: $localize`Settings were saved successfully.`, + delay: 5000, + } + if (reloadRequired) { + savedToast.content = $localize`Settings were saved successfully. Reload is required to apply some changes.` + savedToast.actionName = $localize`Reload now` + savedToast.action = () => { + location.reload() + } + } + + this.toastService.show(savedToast) + }, + error: (error) => { + this.toastService.showError( + $localize`An error occurred while saving settings.`, + error + ) + }, + }) + } + + get displayLanguageOptions(): LanguageOption[] { + return [{ code: '', name: $localize`Use system language` }].concat( + this.settings.getLanguageOptions() + ) + } + + get dateLocaleOptions(): LanguageOption[] { + return [ + { code: '', name: $localize`Use date format of display language` }, + ].concat(this.settings.getDateLocaleOptions()) + } + + get today() { + return new Date() + } + + saveSettings() { + // only patch views that have actually changed + const changed: PaperlessSavedView[] = [] + Object.values(this.savedViewGroup.controls) + .filter((g: FormGroup) => !g.pristine) + .forEach((group: FormGroup) => { + changed.push(group.value) + }) + if (changed.length > 0) { + this.savedViewService.patchMany(changed).subscribe({ + next: () => { + this.saveLocalSettings() + }, + error: (error) => { + this.toastService.showError( + $localize`Error while storing settings on server.`, + error + ) + }, + }) + } else { + this.saveLocalSettings() + } + } + + clearThemeColor() { + this.settingsForm.get('themeColor').patchValue('') + } +} diff --git a/src-ui/src/app/components/manage/tasks/tasks.component.html b/src-ui/src/app/components/admin/tasks/tasks.component.html similarity index 93% rename from src-ui/src/app/components/manage/tasks/tasks.component.html rename to src-ui/src/app/components/admin/tasks/tasks.component.html index 5a29db110..62799c9f6 100644 --- a/src-ui/src/app/components/manage/tasks/tasks.component.html +++ b/src-ui/src/app/components/admin/tasks/tasks.component.html @@ -1,11 +1,11 @@ - +
-
-
+
@@ -47,12 +47,12 @@ - +
- + {{ task.task_file_name }} {{ task.date_created | customDate:'short' }} @@ -75,12 +75,12 @@
- - + + +
    +
  • +
    +
    Username
    +
    Name
    +
    Groups
    +
    Actions
    +
    +
  • + +
  • +
    +
    +
    {{user.first_name}} {{user.last_name}}
    +
    {{user.groups?.map(getGroupName, this).join(', ')}}
    +
    +
    + + +
    +
    +
    +
  • +
+
+ + +

+ Groups + +

+
    +
  • +
    +
    Name
    +
    +
    +
    Actions
    +
    +
  • + +
  • +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
  • +
  • No groups defined
  • +
+ +
+ +
+
+
Loading...
+
diff --git a/src-ui/src/app/components/admin/users-groups/users-groups.component.scss b/src-ui/src/app/components/admin/users-groups/users-groups.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src-ui/src/app/components/admin/users-groups/users-groups.component.spec.ts b/src-ui/src/app/components/admin/users-groups/users-groups.component.spec.ts new file mode 100644 index 000000000..fd8961d51 --- /dev/null +++ b/src-ui/src/app/components/admin/users-groups/users-groups.component.spec.ts @@ -0,0 +1,267 @@ +import { DatePipe } from '@angular/common' +import { HttpClientTestingModule } from '@angular/common/http/testing' +import { + ComponentFixture, + TestBed, + fakeAsync, + tick, +} from '@angular/core/testing' +import { FormsModule, ReactiveFormsModule } from '@angular/forms' +import { RouterTestingModule } from '@angular/router/testing' +import { + NgbModule, + NgbAlertModule, + NgbModal, + NgbModalRef, +} from '@ng-bootstrap/ng-bootstrap' +import { NgSelectModule } from '@ng-select/ng-select' +import { throwError, of } from 'rxjs' +import { routes } from 'src/app/app-routing.module' +import { IfOwnerDirective } from 'src/app/directives/if-owner.directive' +import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' +import { PermissionsGuard } from 'src/app/guards/permissions.guard' +import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe' +import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' +import { PermissionsService } from 'src/app/services/permissions.service' +import { GroupService } from 'src/app/services/rest/group.service' +import { UserService } from 'src/app/services/rest/user.service' +import { SettingsService } from 'src/app/services/settings.service' +import { ToastService } from 'src/app/services/toast.service' +import { ConfirmDialogComponent } from '../../common/confirm-dialog/confirm-dialog.component' +import { GroupEditDialogComponent } from '../../common/edit-dialog/group-edit-dialog/group-edit-dialog.component' +import { UserEditDialogComponent } from '../../common/edit-dialog/user-edit-dialog/user-edit-dialog.component' +import { CheckComponent } from '../../common/input/check/check.component' +import { NumberComponent } from '../../common/input/number/number.component' +import { PasswordComponent } from '../../common/input/password/password.component' +import { PermissionsGroupComponent } from '../../common/input/permissions/permissions-group/permissions-group.component' +import { PermissionsUserComponent } from '../../common/input/permissions/permissions-user/permissions-user.component' +import { SelectComponent } from '../../common/input/select/select.component' +import { TagsComponent } from '../../common/input/tags/tags.component' +import { TextComponent } from '../../common/input/text/text.component' +import { PageHeaderComponent } from '../../common/page-header/page-header.component' +import { SettingsComponent } from '../settings/settings.component' +import { UsersAndGroupsComponent } from './users-groups.component' +import { PaperlessUser } from 'src/app/data/paperless-user' +import { PaperlessGroup } from 'src/app/data/paperless-group' + +const users = [ + { id: 1, username: 'user1', is_superuser: false }, + { id: 2, username: 'user2', is_superuser: false }, +] +const groups = [ + { id: 1, name: 'group1' }, + { id: 2, name: 'group2' }, +] + +describe('UsersAndGroupsComponent', () => { + let component: UsersAndGroupsComponent + let fixture: ComponentFixture + let settingsService: SettingsService + let modalService: NgbModal + let toastService: ToastService + let userService: UserService + let permissionsService: PermissionsService + let groupService: GroupService + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [ + UsersAndGroupsComponent, + SettingsComponent, + PageHeaderComponent, + IfPermissionsDirective, + CustomDatePipe, + ConfirmDialogComponent, + CheckComponent, + SafeHtmlPipe, + SelectComponent, + TextComponent, + PasswordComponent, + NumberComponent, + TagsComponent, + PermissionsUserComponent, + PermissionsGroupComponent, + IfOwnerDirective, + ], + providers: [CustomDatePipe, DatePipe, PermissionsGuard], + imports: [ + NgbModule, + HttpClientTestingModule, + RouterTestingModule.withRoutes(routes), + FormsModule, + ReactiveFormsModule, + NgbAlertModule, + NgSelectModule, + ], + }).compileComponents() + fixture = TestBed.createComponent(UsersAndGroupsComponent) + settingsService = TestBed.inject(SettingsService) + settingsService.currentUser = users[0] + userService = TestBed.inject(UserService) + modalService = TestBed.inject(NgbModal) + toastService = TestBed.inject(ToastService) + permissionsService = TestBed.inject(PermissionsService) + jest.spyOn(permissionsService, 'currentUserCan').mockReturnValue(true) + jest + .spyOn(permissionsService, 'currentUserHasObjectPermissions') + .mockReturnValue(true) + jest + .spyOn(permissionsService, 'currentUserOwnsObject') + .mockReturnValue(true) + groupService = TestBed.inject(GroupService) + component = fixture.componentInstance + fixture.detectChanges() + }) + + function completeSetup(excludeService = null) { + if (excludeService !== userService) { + jest.spyOn(userService, 'listAll').mockReturnValue( + of({ + all: users.map((a) => a.id), + count: users.length, + results: (users as PaperlessUser[]).concat([]), + }) + ) + } + if (excludeService !== groupService) { + jest.spyOn(groupService, 'listAll').mockReturnValue( + of({ + all: groups.map((r) => r.id), + count: groups.length, + results: (groups as PaperlessGroup[]).concat([]), + }) + ) + } + + fixture = TestBed.createComponent(UsersAndGroupsComponent) + component = fixture.componentInstance + fixture.detectChanges() + } + + it('should support edit / create user, show error if needed', () => { + completeSetup() + let modal: NgbModalRef + modalService.activeInstances.subscribe((refs) => (modal = refs[0])) + component.editUser(users[0]) + const editDialog = modal.componentInstance as UserEditDialogComponent + const toastErrorSpy = jest.spyOn(toastService, 'showError') + const toastInfoSpy = jest.spyOn(toastService, 'showInfo') + editDialog.failed.emit() + expect(toastErrorSpy).toBeCalled() + settingsService.currentUser = users[1] // simulate logged in as different user + editDialog.succeeded.emit(users[0]) + expect(toastInfoSpy).toHaveBeenCalledWith( + `Saved user "${users[0].username}".` + ) + component.editUser() + }) + + it('should support delete user, show error if needed', () => { + completeSetup() + let modal: NgbModalRef + modalService.activeInstances.subscribe((refs) => (modal = refs[0])) + component.deleteUser(users[0]) + const deleteDialog = modal.componentInstance as ConfirmDialogComponent + const deleteSpy = jest.spyOn(userService, 'delete') + const toastErrorSpy = jest.spyOn(toastService, 'showError') + const toastInfoSpy = jest.spyOn(toastService, 'showInfo') + const listAllSpy = jest.spyOn(userService, 'listAll') + deleteSpy.mockReturnValueOnce( + throwError(() => new Error('error deleting user')) + ) + deleteDialog.confirm() + expect(toastErrorSpy).toBeCalled() + deleteSpy.mockReturnValueOnce(of(true)) + deleteDialog.confirm() + expect(listAllSpy).toHaveBeenCalled() + expect(toastInfoSpy).toHaveBeenCalledWith('Deleted user') + }) + + it('should logout current user if password changed, after delay', fakeAsync(() => { + completeSetup() + let modal: NgbModalRef + modalService.activeInstances.subscribe((refs) => (modal = refs[0])) + component.editUser(users[0]) + const editDialog = modal.componentInstance as UserEditDialogComponent + editDialog.passwordIsSet = true + settingsService.currentUser = users[0] // simulate logged in as same user + editDialog.succeeded.emit(users[0]) + fixture.detectChanges() + Object.defineProperty(window, 'location', { + value: { + href: 'http://localhost/', + }, + writable: true, // possibility to override + }) + tick(2600) + expect(window.location.href).toContain('logout') + })) + + it('should support edit / create group, show error if needed', () => { + completeSetup() + let modal: NgbModalRef + modalService.activeInstances.subscribe((refs) => (modal = refs[0])) + component.editGroup(groups[0]) + const editDialog = modal.componentInstance as GroupEditDialogComponent + const toastErrorSpy = jest.spyOn(toastService, 'showError') + const toastInfoSpy = jest.spyOn(toastService, 'showInfo') + editDialog.failed.emit() + expect(toastErrorSpy).toBeCalled() + editDialog.succeeded.emit(groups[0]) + expect(toastInfoSpy).toHaveBeenCalledWith( + `Saved group "${groups[0].name}".` + ) + component.editGroup() + }) + + it('should support delete group, show error if needed', () => { + completeSetup() + let modal: NgbModalRef + modalService.activeInstances.subscribe((refs) => (modal = refs[0])) + component.deleteGroup(users[0]) + const deleteDialog = modal.componentInstance as ConfirmDialogComponent + const deleteSpy = jest.spyOn(groupService, 'delete') + const toastErrorSpy = jest.spyOn(toastService, 'showError') + const toastInfoSpy = jest.spyOn(toastService, 'showInfo') + const listAllSpy = jest.spyOn(groupService, 'listAll') + deleteSpy.mockReturnValueOnce( + throwError(() => new Error('error deleting group')) + ) + deleteDialog.confirm() + expect(toastErrorSpy).toBeCalled() + deleteSpy.mockReturnValueOnce(of(true)) + deleteDialog.confirm() + expect(listAllSpy).toHaveBeenCalled() + expect(toastInfoSpy).toHaveBeenCalledWith('Deleted group') + }) + + it('should get group name', () => { + completeSetup() + expect(component.getGroupName(1)).toEqual(groups[0].name) + expect(component.getGroupName(11)).toEqual('') + }) + + it('should show errors on load if load users failure', () => { + const toastErrorSpy = jest.spyOn(toastService, 'showError') + jest + .spyOn(userService, 'listAll') + .mockImplementation(() => + throwError(() => new Error('failed to load users')) + ) + completeSetup(userService) + fixture.detectChanges() + expect(toastErrorSpy).toBeCalled() + }) + + it('should show errors on load if load groups failure', () => { + const toastErrorSpy = jest.spyOn(toastService, 'showError') + jest + .spyOn(groupService, 'listAll') + .mockImplementation(() => + throwError(() => new Error('failed to load groups')) + ) + completeSetup(groupService) + fixture.detectChanges() + expect(toastErrorSpy).toBeCalled() + }) +}) diff --git a/src-ui/src/app/components/admin/users-groups/users-groups.component.ts b/src-ui/src/app/components/admin/users-groups/users-groups.component.ts new file mode 100644 index 000000000..a9ce1d600 --- /dev/null +++ b/src-ui/src/app/components/admin/users-groups/users-groups.component.ts @@ -0,0 +1,189 @@ +import { Component, OnDestroy, OnInit } from '@angular/core' +import { NgbModal } from '@ng-bootstrap/ng-bootstrap' +import { Subject, first, takeUntil } from 'rxjs' +import { PaperlessGroup } from 'src/app/data/paperless-group' +import { PaperlessUser } from 'src/app/data/paperless-user' +import { PermissionsService } from 'src/app/services/permissions.service' +import { GroupService } from 'src/app/services/rest/group.service' +import { UserService } from 'src/app/services/rest/user.service' +import { ToastService } from 'src/app/services/toast.service' +import { ConfirmDialogComponent } from '../../common/confirm-dialog/confirm-dialog.component' +import { EditDialogMode } from '../../common/edit-dialog/edit-dialog.component' +import { GroupEditDialogComponent } from '../../common/edit-dialog/group-edit-dialog/group-edit-dialog.component' +import { UserEditDialogComponent } from '../../common/edit-dialog/user-edit-dialog/user-edit-dialog.component' +import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component' +import { SettingsService } from 'src/app/services/settings.service' + +@Component({ + selector: 'pngx-users-groups', + templateUrl: './users-groups.component.html', + styleUrls: ['./users-groups.component.scss'], +}) +export class UsersAndGroupsComponent + extends ComponentWithPermissions + implements OnInit, OnDestroy +{ + users: PaperlessUser[] + groups: PaperlessGroup[] + + unsubscribeNotifier: Subject = new Subject() + + constructor( + private usersService: UserService, + private groupsService: GroupService, + private toastService: ToastService, + private modalService: NgbModal, + public permissionsService: PermissionsService, + private settings: SettingsService + ) { + super() + } + + ngOnInit(): void { + this.usersService + .listAll(null, null, { full_perms: true }) + .pipe(first(), takeUntil(this.unsubscribeNotifier)) + .subscribe({ + next: (r) => { + this.users = r.results + }, + error: (e) => { + this.toastService.showError($localize`Error retrieving users`, e) + }, + }) + + this.groupsService + .listAll(null, null, { full_perms: true }) + .pipe(first(), takeUntil(this.unsubscribeNotifier)) + .subscribe({ + next: (r) => { + this.groups = r.results + }, + error: (e) => { + this.toastService.showError($localize`Error retrieving groups`, e) + }, + }) + } + + ngOnDestroy() { + this.unsubscribeNotifier.next(true) + } + + editUser(user: PaperlessUser = null) { + var modal = this.modalService.open(UserEditDialogComponent, { + backdrop: 'static', + size: 'xl', + }) + modal.componentInstance.dialogMode = user + ? EditDialogMode.EDIT + : EditDialogMode.CREATE + modal.componentInstance.object = user + modal.componentInstance.succeeded + .pipe(takeUntil(this.unsubscribeNotifier)) + .subscribe((newUser: PaperlessUser) => { + if ( + newUser.id === this.settings.currentUser.id && + (modal.componentInstance as UserEditDialogComponent).passwordIsSet + ) { + this.toastService.showInfo( + $localize`Password has been changed, you will be logged out momentarily.` + ) + setTimeout(() => { + window.location.href = `${window.location.origin}/accounts/logout/?next=/accounts/login/` + }, 2500) + } else { + this.toastService.showInfo( + $localize`Saved user "${newUser.username}".` + ) + this.usersService.listAll().subscribe((r) => { + this.users = r.results + }) + } + }) + modal.componentInstance.failed + .pipe(takeUntil(this.unsubscribeNotifier)) + .subscribe((e) => { + this.toastService.showError($localize`Error saving user.`, e) + }) + } + + deleteUser(user: PaperlessUser) { + let modal = this.modalService.open(ConfirmDialogComponent, { + backdrop: 'static', + }) + modal.componentInstance.title = $localize`Confirm delete user account` + modal.componentInstance.messageBold = $localize`This operation will permanently delete this user account.` + modal.componentInstance.message = $localize`This operation cannot be undone.` + modal.componentInstance.btnClass = 'btn-danger' + modal.componentInstance.btnCaption = $localize`Proceed` + modal.componentInstance.confirmClicked.subscribe(() => { + modal.componentInstance.buttonsEnabled = false + this.usersService.delete(user).subscribe({ + next: () => { + modal.close() + this.toastService.showInfo($localize`Deleted user`) + this.usersService.listAll().subscribe((r) => { + this.users = r.results + }) + }, + error: (e) => { + this.toastService.showError($localize`Error deleting user.`, e) + }, + }) + }) + } + + editGroup(group: PaperlessGroup = null) { + var modal = this.modalService.open(GroupEditDialogComponent, { + backdrop: 'static', + size: 'lg', + }) + modal.componentInstance.dialogMode = group + ? EditDialogMode.EDIT + : EditDialogMode.CREATE + modal.componentInstance.object = group + modal.componentInstance.succeeded + .pipe(takeUntil(this.unsubscribeNotifier)) + .subscribe((newGroup) => { + this.toastService.showInfo($localize`Saved group "${newGroup.name}".`) + this.groupsService.listAll().subscribe((r) => { + this.groups = r.results + }) + }) + modal.componentInstance.failed + .pipe(takeUntil(this.unsubscribeNotifier)) + .subscribe((e) => { + this.toastService.showError($localize`Error saving group.`, e) + }) + } + + deleteGroup(group: PaperlessGroup) { + let modal = this.modalService.open(ConfirmDialogComponent, { + backdrop: 'static', + }) + modal.componentInstance.title = $localize`Confirm delete user group` + modal.componentInstance.messageBold = $localize`This operation will permanently delete this user group.` + modal.componentInstance.message = $localize`This operation cannot be undone.` + modal.componentInstance.btnClass = 'btn-danger' + modal.componentInstance.btnCaption = $localize`Proceed` + modal.componentInstance.confirmClicked.subscribe(() => { + modal.componentInstance.buttonsEnabled = false + this.groupsService.delete(group).subscribe({ + next: () => { + modal.close() + this.toastService.showInfo($localize`Deleted group`) + this.groupsService.listAll().subscribe((r) => { + this.groups = r.results + }) + }, + error: (e) => { + this.toastService.showError($localize`Error deleting group.`, e) + }, + }) + }) + } + + getGroupName(id: number): string { + return this.groups?.find((g) => g.id === id)?.name ?? '' + } +} diff --git a/src-ui/src/app/components/app-frame/app-frame.component.html b/src-ui/src/app/components/app-frame/app-frame.component.html index 83fe13d81..a710600ef 100644 --- a/src-ui/src/app/components/app-frame/app-frame.component.html +++ b/src-ui/src/app/components/app-frame/app-frame.component.html @@ -1,4 +1,4 @@ -
diff --git a/src-ui/src/app/components/app-frame/app-frame.component.scss b/src-ui/src/app/components/app-frame/app-frame.component.scss index 93468207d..e2a88ab1c 100644 --- a/src-ui/src/app/components/app-frame/app-frame.component.scss +++ b/src-ui/src/app/components/app-frame/app-frame.component.scss @@ -18,7 +18,7 @@ height: 0.8em; } - // These come from the col-md-3 col-lg-2 classes for regular sidebar, needed for animation + // These come from the col-* classes for non-slim sidebar, needed for animation @media (min-width: 768px) { max-width: 25%; } @@ -27,6 +27,10 @@ max-width: 16.66666667%; } + @media (min-width: 2400px) { + max-width: 8.33333333%; + } + transition: all .2s ease; } @media (max-width: 767.98px) { @@ -99,10 +103,6 @@ main { } } - .col-slim { - padding-left: calc(50px + $grid-gutter-width) !important; - } - .sidebar-slim-toggler { display: block; position: absolute; @@ -169,6 +169,7 @@ main { .nav-item { position: relative; + list-style-type: none; &:hover .close { display: block; @@ -310,3 +311,11 @@ main { opacity: 100%; } } + +.nav-item .position-absolute { + cursor: move; +} + +::ng-deep .navItemDrag .position-absolute svg { + display: none; +} diff --git a/src-ui/src/app/components/app-frame/app-frame.component.spec.ts b/src-ui/src/app/components/app-frame/app-frame.component.spec.ts index c685413f3..7b8bf4bce 100644 --- a/src-ui/src/app/components/app-frame/app-frame.component.spec.ts +++ b/src-ui/src/app/components/app-frame/app-frame.component.spec.ts @@ -19,7 +19,7 @@ import { SETTINGS_KEYS } from 'src/app/data/paperless-uisettings' import { RemoteVersionService } from 'src/app/services/rest/remote-version.service' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' import { FormsModule, ReactiveFormsModule } from '@angular/forms' -import { of } from 'rxjs' +import { of, throwError } from 'rxjs' import { ToastService } from 'src/app/services/toast.service' import { environment } from 'src/environments/environment' import { OpenDocumentsService } from 'src/app/services/open-documents.service' @@ -30,7 +30,47 @@ import { DocumentListViewService } from 'src/app/services/document-list-view.ser import { FILTER_FULLTEXT_QUERY } from 'src/app/data/filter-rule-type' import { routes } from 'src/app/app-routing.module' import { PermissionsGuard } from 'src/app/guards/permissions.guard' +import { CdkDragDrop, DragDropModule } from '@angular/cdk/drag-drop' +import { PaperlessSavedView } from 'src/app/data/paperless-saved-view' +const saved_views = [ + { + name: 'Saved View 0', + id: 0, + show_on_dashboard: true, + show_in_sidebar: true, + sort_field: 'name', + sort_reverse: true, + filter_rules: [], + }, + { + name: 'Saved View 1', + id: 1, + show_on_dashboard: false, + show_in_sidebar: false, + sort_field: 'name', + sort_reverse: true, + filter_rules: [], + }, + { + name: 'Saved View 2', + id: 2, + show_on_dashboard: true, + show_in_sidebar: true, + sort_field: 'name', + sort_reverse: true, + filter_rules: [], + }, + { + name: 'Saved View 3', + id: 3, + show_on_dashboard: true, + show_in_sidebar: true, + sort_field: 'name', + sort_reverse: true, + filter_rules: [], + }, +] const document = { id: 2, title: 'Hello world' } describe('AppFrameComponent', () => { @@ -57,10 +97,23 @@ describe('AppFrameComponent', () => { NgbModule, FormsModule, ReactiveFormsModule, + DragDropModule, ], providers: [ SettingsService, - SavedViewService, + { + provide: SavedViewService, + useValue: { + initialize: () => {}, + listAll: () => + of({ + all: [saved_views.map((v) => v.id)], + count: saved_views.length, + results: saved_views, + }), + sidebarViews: saved_views.filter((v) => v.show_in_sidebar), + }, + }, PermissionsService, RemoteVersionService, IfPermissionsDirective, @@ -269,4 +322,45 @@ describe('AppFrameComponent', () => { }, ]) }) + + it('should disable global dropzone on start drag + drop, re-enable after', () => { + expect(settingsService.globalDropzoneEnabled).toBeTruthy() + component.onDragStart(null) + expect(settingsService.globalDropzoneEnabled).toBeFalsy() + component.onDragEnd(null) + expect(settingsService.globalDropzoneEnabled).toBeTruthy() + }) + + it('should update saved view sorting on drag + drop, show info', () => { + const settingsSpy = jest.spyOn(settingsService, 'updateSidebarViewsSort') + const toastSpy = jest.spyOn(toastService, 'showInfo') + jest.spyOn(settingsService, 'storeSettings').mockReturnValue(of(true)) + component.onDrop({ previousIndex: 0, currentIndex: 1 } as CdkDragDrop< + PaperlessSavedView[] + >) + expect(settingsSpy).toHaveBeenCalledWith([ + saved_views[2], + saved_views[0], + saved_views[3], + ]) + expect(toastSpy).toHaveBeenCalled() + }) + + it('should update saved view sorting on drag + drop, show error', () => { + jest.spyOn(settingsService, 'get').mockImplementation((key) => { + if (key === SETTINGS_KEYS.SIDEBAR_VIEWS_SORT_ORDER) return [] + }) + fixture.destroy() + fixture = TestBed.createComponent(AppFrameComponent) + component = fixture.componentInstance + fixture.detectChanges() + const toastSpy = jest.spyOn(toastService, 'showError') + jest + .spyOn(settingsService, 'storeSettings') + .mockReturnValue(throwError(() => new Error('unable to save'))) + component.onDrop({ previousIndex: 0, currentIndex: 2 } as CdkDragDrop< + PaperlessSavedView[] + >) + expect(toastSpy).toHaveBeenCalled() + }) }) diff --git a/src-ui/src/app/components/app-frame/app-frame.component.ts b/src-ui/src/app/components/app-frame/app-frame.component.ts index 930b74de3..0c8f149c1 100644 --- a/src-ui/src/app/components/app-frame/app-frame.component.ts +++ b/src-ui/src/app/components/app-frame/app-frame.component.ts @@ -32,9 +32,16 @@ import { PermissionsService, PermissionType, } from 'src/app/services/permissions.service' +import { PaperlessSavedView } from 'src/app/data/paperless-saved-view' +import { + CdkDragStart, + CdkDragEnd, + CdkDragDrop, + moveItemInArray, +} from '@angular/cdk/drag-drop' @Component({ - selector: 'app-app-frame', + selector: 'pngx-app-frame', templateUrl: './app-frame.component.html', styleUrls: ['./app-frame.component.scss'], }) @@ -42,6 +49,15 @@ export class AppFrameComponent extends ComponentWithPermissions implements OnInit, ComponentCanDeactivate { + versionString = `${environment.appTitle} ${environment.version}` + appRemoteVersion: AppRemoteVersion + + isMenuCollapsed: boolean = true + + slimSidebarAnimating: boolean = false + + searchField = new FormControl('') + constructor( public router: Router, private activatedRoute: ActivatedRoute, @@ -63,7 +79,7 @@ export class AppFrameComponent PermissionType.SavedView ) ) { - savedViewService.initialize() + this.savedViewService.initialize() } } @@ -74,13 +90,6 @@ export class AppFrameComponent this.tasksService.reload() } - versionString = `${environment.appTitle} ${environment.version}` - appRemoteVersion: AppRemoteVersion - - isMenuCollapsed: boolean = true - - slimSidebarAnimating: boolean = false - toggleSlimSidebar(): void { this.slimSidebarAnimating = true this.slimSidebarEnabled = !this.slimSidebarEnabled @@ -121,8 +130,6 @@ export class AppFrameComponent return !this.openDocumentsService.hasDirty() } - searchField = new FormControl('') - get searchFieldEmpty(): boolean { return this.searchField.value.trim().length == 0 } @@ -218,6 +225,28 @@ export class AppFrameComponent }) } + onDragStart(event: CdkDragStart) { + this.settingsService.globalDropzoneEnabled = false + } + + onDragEnd(event: CdkDragEnd) { + this.settingsService.globalDropzoneEnabled = true + } + + onDrop(event: CdkDragDrop) { + const sidebarViews = this.savedViewService.sidebarViews.concat([]) + moveItemInArray(sidebarViews, event.previousIndex, event.currentIndex) + + this.settingsService.updateSidebarViewsSort(sidebarViews).subscribe({ + next: () => { + this.toastService.showInfo($localize`Sidebar views updated`) + }, + error: (e) => { + this.toastService.showError($localize`Error updating sidebar views`, e) + }, + }) + } + private checkForUpdates() { this.remoteVersionService .checkForUpdates() diff --git a/src-ui/src/app/components/common/clearable-badge/clearable-badge.component.ts b/src-ui/src/app/components/common/clearable-badge/clearable-badge.component.ts index 0f0b7d64f..89648934b 100644 --- a/src-ui/src/app/components/common/clearable-badge/clearable-badge.component.ts +++ b/src-ui/src/app/components/common/clearable-badge/clearable-badge.component.ts @@ -1,7 +1,7 @@ import { Component, Input, Output, EventEmitter } from '@angular/core' @Component({ - selector: 'app-clearable-badge', + selector: 'pngx-clearable-badge', templateUrl: './clearable-badge.component.html', styleUrls: ['./clearable-badge.component.scss'], }) diff --git a/src-ui/src/app/components/common/confirm-dialog/confirm-dialog.component.html b/src-ui/src/app/components/common/confirm-dialog/confirm-dialog.component.html index 290581a47..2b60ff9de 100644 --- a/src-ui/src/app/components/common/confirm-dialog/confirm-dialog.component.html +++ b/src-ui/src/app/components/common/confirm-dialog/confirm-dialog.component.html @@ -12,9 +12,11 @@ Cancel +
+
    +
  • + + + +
  • +
+
+
diff --git a/src-ui/src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.scss b/src-ui/src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.scss new file mode 100644 index 000000000..d91823a4f --- /dev/null +++ b/src-ui/src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.scss @@ -0,0 +1,24 @@ +.custom-fields-dropdown { + min-width: 350px; + + // correct position on mobile + @media (max-width: 575.98px) { + &.show { + margin-left: -245px !important; + } + } +} + +::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder, +::ng-deep .ng-select .ng-option, +::ng-deep .ng-select .ng-select-container .ng-value-container .ng-value { + font-size: 0.875rem; +} + +::ng-deep .paperless-input-select .ng-select { + min-height: calc(1em + 0.75rem + 5px); +} + +::ng-deep .paperless-input-select .ng-select .ng-select-container .ng-value-container .ng-input { + top: 4px; +} diff --git a/src-ui/src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.spec.ts b/src-ui/src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.spec.ts new file mode 100644 index 000000000..e1892acc6 --- /dev/null +++ b/src-ui/src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.spec.ts @@ -0,0 +1,137 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing' + +import { CustomFieldsDropdownComponent } from './custom-fields-dropdown.component' +import { + HttpClientTestingModule, + HttpTestingController, +} from '@angular/common/http/testing' +import { ToastService } from 'src/app/services/toast.service' +import { CustomFieldsService } from 'src/app/services/rest/custom-fields.service' +import { of } from 'rxjs' +import { + PaperlessCustomField, + PaperlessCustomFieldDataType, +} from 'src/app/data/paperless-custom-field' +import { SelectComponent } from '../input/select/select.component' +import { NgSelectModule } from '@ng-select/ng-select' +import { FormsModule, ReactiveFormsModule } from '@angular/forms' +import { + NgbDropdownModule, + NgbModal, + NgbModalModule, + NgbModalRef, +} from '@ng-bootstrap/ng-bootstrap' +import { CustomFieldEditDialogComponent } from '../edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component' +import { By } from '@angular/platform-browser' + +const fields: PaperlessCustomField[] = [ + { + id: 0, + name: 'Field 1', + data_type: PaperlessCustomFieldDataType.Integer, + }, + { + id: 1, + name: 'Field 2', + data_type: PaperlessCustomFieldDataType.String, + }, +] + +describe('CustomFieldsDropdownComponent', () => { + let component: CustomFieldsDropdownComponent + let fixture: ComponentFixture + let customFieldService: CustomFieldsService + let toastService: ToastService + let modalService: NgbModal + let httpController: HttpTestingController + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [CustomFieldsDropdownComponent, SelectComponent], + imports: [ + HttpClientTestingModule, + NgSelectModule, + FormsModule, + ReactiveFormsModule, + NgbModalModule, + NgbDropdownModule, + ], + }) + customFieldService = TestBed.inject(CustomFieldsService) + httpController = TestBed.inject(HttpTestingController) + toastService = TestBed.inject(ToastService) + modalService = TestBed.inject(NgbModal) + jest.spyOn(customFieldService, 'listAll').mockReturnValue( + of({ + all: fields.map((f) => f.id), + count: fields.length, + results: fields.concat([]), + }) + ) + fixture = TestBed.createComponent(CustomFieldsDropdownComponent) + component = fixture.componentInstance + fixture.detectChanges() + }) + + it('should support add field', () => { + let addedField + component.added.subscribe((f) => (addedField = f)) + component.documentId = 11 + component.field = fields[0].id + component.addField() + expect(addedField).not.toBeUndefined() + }) + + it('should clear field on open / close, updated unused fields', () => { + component.field = fields[1].id + component.onOpenClose() + expect(component.field).toBeUndefined() + + expect(component.unusedFields).toEqual(fields) + const updateSpy = jest.spyOn( + CustomFieldsDropdownComponent.prototype as any, + 'updateUnusedFields' + ) + component.existingFields = [{ field: fields[1].id } as any] + component.onOpenClose() + expect(updateSpy).toHaveBeenCalled() + expect(component.unusedFields).toEqual([fields[0]]) + }) + + it('should support creating field, show error if necessary', () => { + let modal: NgbModalRef + modalService.activeInstances.subscribe((m) => (modal = m[m.length - 1])) + const toastErrorSpy = jest.spyOn(toastService, 'showError') + const toastInfoSpy = jest.spyOn(toastService, 'showInfo') + const getFieldsSpy = jest.spyOn( + CustomFieldsDropdownComponent.prototype as any, + 'getFields' + ) + + const createButton = fixture.debugElement.queryAll(By.css('button'))[1] + createButton.triggerEventHandler('click') + + expect(modal).not.toBeUndefined() + const editDialog = modal.componentInstance as CustomFieldEditDialogComponent + + // fail first + editDialog.failed.emit({ error: 'error creating field' }) + expect(toastErrorSpy).toHaveBeenCalled() + expect(getFieldsSpy).not.toHaveBeenCalled() + + // succeed + editDialog.succeeded.emit(fields[0]) + expect(toastInfoSpy).toHaveBeenCalled() + expect(getFieldsSpy).toHaveBeenCalled() + }) + + it('should support creating field with name', () => { + let modal: NgbModalRef + modalService.activeInstances.subscribe((m) => (modal = m[m.length - 1])) + component.createField('Foo bar') + + expect(modal).not.toBeUndefined() + const editDialog = modal.componentInstance as CustomFieldEditDialogComponent + expect(editDialog.object.name).toEqual('Foo bar') + }) +}) diff --git a/src-ui/src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.ts b/src-ui/src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.ts new file mode 100644 index 000000000..8a237286a --- /dev/null +++ b/src-ui/src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.ts @@ -0,0 +1,131 @@ +import { + Component, + EventEmitter, + Input, + OnDestroy, + Output, +} from '@angular/core' +import { NgbModal } from '@ng-bootstrap/ng-bootstrap' +import { Subject, first, takeUntil } from 'rxjs' +import { PaperlessCustomField } from 'src/app/data/paperless-custom-field' +import { PaperlessCustomFieldInstance } from 'src/app/data/paperless-custom-field-instance' +import { CustomFieldsService } from 'src/app/services/rest/custom-fields.service' +import { ToastService } from 'src/app/services/toast.service' +import { CustomFieldEditDialogComponent } from '../edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component' +import { + PermissionAction, + PermissionType, + PermissionsService, +} from 'src/app/services/permissions.service' + +@Component({ + selector: 'pngx-custom-fields-dropdown', + templateUrl: './custom-fields-dropdown.component.html', + styleUrls: ['./custom-fields-dropdown.component.scss'], +}) +export class CustomFieldsDropdownComponent implements OnDestroy { + @Input() + documentId: number + + @Input() + disabled: boolean = false + + @Input() + existingFields: PaperlessCustomFieldInstance[] = [] + + @Output() + added: EventEmitter = new EventEmitter() + + @Output() + created: EventEmitter = new EventEmitter() + + private customFields: PaperlessCustomField[] = [] + public unusedFields: PaperlessCustomField[] + + public name: string + + public field: number + + private unsubscribeNotifier: Subject = new Subject() + + get placeholderText(): string { + return $localize`Choose field` + } + + get notFoundText(): string { + return $localize`No unused fields found` + } + + get canCreateFields(): boolean { + return this.permissionsService.currentUserCan( + PermissionAction.Add, + PermissionType.CustomField + ) + } + + constructor( + private customFieldsService: CustomFieldsService, + private modalService: NgbModal, + private toastService: ToastService, + private permissionsService: PermissionsService + ) { + this.getFields() + } + + ngOnDestroy(): void { + this.unsubscribeNotifier.next(this) + this.unsubscribeNotifier.complete() + } + + private getFields() { + this.customFieldsService + .listAll() + .pipe(first(), takeUntil(this.unsubscribeNotifier)) + .subscribe((result) => { + this.customFields = result.results + this.updateUnusedFields() + }) + } + + public getCustomFieldFromInstance( + instance: PaperlessCustomFieldInstance + ): PaperlessCustomField { + return this.customFields.find((f) => f.id === instance.field) + } + + private updateUnusedFields() { + this.unusedFields = this.customFields.filter( + (f) => + !this.existingFields?.find( + (e) => this.getCustomFieldFromInstance(e)?.id === f.id + ) + ) + } + + onOpenClose() { + this.field = undefined + this.updateUnusedFields() + } + + addField() { + this.added.emit(this.customFields.find((f) => f.id === this.field)) + } + + createField(newName: string = null) { + const modal = this.modalService.open(CustomFieldEditDialogComponent) + if (newName) modal.componentInstance.object = { name: newName } + modal.componentInstance.succeeded + .pipe(takeUntil(this.unsubscribeNotifier)) + .subscribe((newField) => { + this.toastService.showInfo($localize`Saved field "${newField.name}".`) + this.customFieldsService.clearCache() + this.getFields() + this.created.emit(newField) + }) + modal.componentInstance.failed + .pipe(takeUntil(this.unsubscribeNotifier)) + .subscribe((e) => { + this.toastService.showError($localize`Error saving field.`, e) + }) + } +} diff --git a/src-ui/src/app/components/common/date-dropdown/date-dropdown.component.html b/src-ui/src/app/components/common/date-dropdown/date-dropdown.component.html index ad790821e..2b5804829 100644 --- a/src-ui/src/app/components/common/date-dropdown/date-dropdown.component.html +++ b/src-ui/src/app/components/common/date-dropdown/date-dropdown.component.html @@ -1,7 +1,7 @@
-