From ecd657872fe3aa28bb385a522a27e946bec02b14 Mon Sep 17 00:00:00 2001 From: Kris Szlapa Date: Wed, 31 Jan 2024 07:45:01 +0000 Subject: [PATCH 01/14] Initial repo setup --- .devcontainer/Dockerfile | 39 + .devcontainer/devcontainer.json | 87 + .editorconfig | 21 - .envrc | 1 + .eslintrc | 77 + .gitattributes | 7 - .github/ISSUE_TEMPLATE/1_support_request.yaml | 52 - .github/ISSUE_TEMPLATE/2_feature_request.yaml | 42 - .github/ISSUE_TEMPLATE/3_bug_report.yaml | 63 - .github/PULL_REQUEST_TEMPLATE.md | 35 - .github/SECURITY.md | 35 - .github/actions/check-file-format/action.yaml | 10 - .../actions/check-markdown-format/action.yaml | 10 - .../create-lines-of-code-report/action.yaml | 57 - .github/actions/lint-terraform/action.yaml | 20 - .../perform-static-analysis/action.yaml | 28 - .github/actions/scan-dependencies/action.yaml | 74 - .github/actions/scan-secrets/action.yaml | 10 - .github/dependabot.yaml | 28 - .github/dependabot.yml | 36 + .github/pull_request_template.md | 36 + .github/workflows/ci.yml | 13 + .github/workflows/cicd-1-pull-request.yaml | 122 - .github/workflows/cicd-2-publish.yaml | 98 - .github/workflows/cicd-3-deploy.yaml | 77 - .github/workflows/combine_dependabot_prs.yml | 151 + .../dependabot_auto_approve_and_merge.yml | 49 + .github/workflows/pr_link.yml | 34 + .github/workflows/pr_title_check.yml | 34 + .github/workflows/pull_request.yml | 16 + .github/workflows/quality_checks.yml | 76 + .github/workflows/release.yml | 59 + .github/workflows/stage-1-commit.yaml | 115 - .github/workflows/stage-2-test.yaml | 94 - .github/workflows/stage-3-build.yaml | 69 - .github/workflows/stage-4-acceptance.yaml | 170 - .gitignore | 18 +- .gitleaksignore | 3 - .npmrc | 3 + .pre-commit-config.yaml | 44 + .releaserc | 80 + .tool-versions | 26 +- .vscode/extensions.json | 36 - .vscode/settings.json | 7 - CODE_OF_CONDUCT.md | 76 + CONTRIBUTING.md | 63 + LICENCE.md => LICENSE | 4 +- Makefile | 58 +- README.md | 163 +- RELEASE.md | 25 + VERSION | 1 - ...on_to_check_the_editorconfig_compliance.md | 148 - ...2_Scan_repository_for_hardcoded_secrets.md | 149 - ...GitHub_PAT_and_Apps_for_authN_and_authZ.md | 244 - .../ADR-XXX_Agree_CICD_pipeline_structure.md | 101 - .../ADR-nnn_Any_Decision_Record_Template.md | 78 - .../assets/ADR-003/examples/bash/README.md | 32 - .../assets/ADR-003/examples/bash/script.sh | 46 - .../assets/ADR-003/examples/golang/README.md | 32 - .../adr/assets/ADR-003/examples/golang/go.mod | 10 - .../adr/assets/ADR-003/examples/golang/go.sum | 12 - .../assets/ADR-003/examples/golang/main.go | 88 - .../assets/ADR-003/examples/nodejs/.gitignore | 134 - .../assets/ADR-003/examples/nodejs/README.md | 29 - .../assets/ADR-003/examples/nodejs/main.ts | 57 - .../ADR-003/examples/nodejs/package.json | 14 - .../ADR-003/examples/nodejs/tsconfig.json | 10 - .../assets/ADR-003/examples/python/README.md | 33 - .../assets/ADR-003/examples/python/main.py | 66 - .../ADR-003/examples/python/requirements.txt | 2 - docs/developer-guides/Bash_and_Make.md | 153 - docs/developer-guides/Scripting_Docker.md | 223 - docs/developer-guides/Scripting_Terraform.md | 174 - docs/developer-guides/assets/make_help.png | Bin 676180 -> 0 bytes docs/diagrams/.gitignore | 2 - docs/diagrams/CD_Pipeline_Structure.drawio | 205 - docs/diagrams/CD_Pipeline_Structure.png | Bin 106576 -> 0 bytes docs/diagrams/Repository_Template.drawio | 127 - .../Repository_Template_GitHub_Generic.png | Bin 242906 -> 0 bytes docs/user-guides/Perform_static_analysis.md | 44 - docs/user-guides/Run_Git_hooks_on_commit.md | 32 - docs/user-guides/Scan_dependencies.md | 73 - docs/user-guides/Scan_secrets.md | 46 - docs/user-guides/Sign_Git_commits.md | 208 - .../Test_GitHub_Actions_locally.md | 64 - infrastructure/.gitignore | 37 - infrastructure/environments/.gitkeep | 0 infrastructure/images/.gitkeep | 0 infrastructure/modules/.gitkeep | 0 jest.config.ts | 36 + package-lock.json | 11404 ++++++++++++++++ package.json | 53 + poetry.lock | 246 + poetry.toml | 3 + project.code-workspace | 8 - pyproject.toml | 31 + scripts/check_python_licenses.sh | 13 + scripts/config/gitleaks.toml | 19 - scripts/config/grype.yaml | 19 - scripts/config/hadolint.yaml | 7 - scripts/config/markdownlint.yaml | 11 - scripts/config/pre-commit.yaml | 32 - scripts/config/repository-template.yaml | 1 - scripts/config/sonar-scanner.properties | 9 - scripts/config/syft.yaml | 83 - scripts/docker/Dockerfile.metadata | 22 - scripts/docker/dgoss.sh | 139 - scripts/docker/docker.lib.sh | 303 - scripts/docker/docker.mk | 83 - scripts/docker/dockerfile-linter.sh | 78 - .../examples/python/.tool-versions.example | 2 - scripts/docker/examples/python/Dockerfile | 33 - .../examples/python/Dockerfile.effective | 54 - scripts/docker/examples/python/VERSION | 1 - .../examples/python/assets/hello_world/app.py | 12 - .../assets/hello_world/requirements.txt | 12 - .../docker/examples/python/tests/goss.yaml | 8 - scripts/docker/tests/.gitignore | 1 - scripts/docker/tests/.tool-versions.test | 2 - scripts/docker/tests/Dockerfile | 3 - scripts/docker/tests/VERSION | 3 - scripts/docker/tests/docker.test.sh | 162 - scripts/githooks/check-file-format.sh | 124 - scripts/githooks/check-markdown-format.sh | 109 - scripts/githooks/check-terraform-format.sh | 56 - scripts/githooks/scan-secrets.sh | 111 - scripts/init.mk | 150 - .../reports/create-lines-of-code-report.sh | 99 - scripts/reports/create-sbom-report.sh | 97 - scripts/reports/perform-static-analysis.sh | 80 - scripts/reports/scan-vulnerabilities.sh | 103 - scripts/shellscript-linter.sh | 77 - .../terraform-state-aws-s3/.gitignore | 41 - .../examples/terraform-state-aws-s3/main.tf | 46 - .../terraform-state-aws-s3/provider.tf | 3 - .../terraform-state-aws-s3/variables.tf | 9 - .../terraform-state-aws-s3/versions.tf | 8 - scripts/terraform/terraform.lib.sh | 93 - scripts/terraform/terraform.mk | 96 - scripts/terraform/terraform.sh | 76 - scripts/tests/test.mk | 91 - scripts/tests/unit.sh | 20 - sonar-project.properties | 6 + src/index.ts | 4 + src/live-spine-client.ts | 161 + src/sandbox-spine-client.ts | 23 + src/spine-client.ts | 27 + src/status.ts | 52 + tests/.gitkeep | 0 tests/live-spine-client.test.ts | 107 + tests/status.test.ts | 55 + tsconfig.json | 22 + 152 files changed, 13377 insertions(+), 6687 deletions(-) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json delete mode 100644 .editorconfig create mode 100644 .envrc create mode 100644 .eslintrc delete mode 100644 .gitattributes delete mode 100644 .github/ISSUE_TEMPLATE/1_support_request.yaml delete mode 100644 .github/ISSUE_TEMPLATE/2_feature_request.yaml delete mode 100644 .github/ISSUE_TEMPLATE/3_bug_report.yaml delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/SECURITY.md delete mode 100644 .github/actions/check-file-format/action.yaml delete mode 100644 .github/actions/check-markdown-format/action.yaml delete mode 100644 .github/actions/create-lines-of-code-report/action.yaml delete mode 100644 .github/actions/lint-terraform/action.yaml delete mode 100644 .github/actions/perform-static-analysis/action.yaml delete mode 100644 .github/actions/scan-dependencies/action.yaml delete mode 100644 .github/actions/scan-secrets/action.yaml delete mode 100644 .github/dependabot.yaml create mode 100644 .github/dependabot.yml create mode 100644 .github/pull_request_template.md create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/cicd-1-pull-request.yaml delete mode 100644 .github/workflows/cicd-2-publish.yaml delete mode 100644 .github/workflows/cicd-3-deploy.yaml create mode 100644 .github/workflows/combine_dependabot_prs.yml create mode 100644 .github/workflows/dependabot_auto_approve_and_merge.yml create mode 100644 .github/workflows/pr_link.yml create mode 100644 .github/workflows/pr_title_check.yml create mode 100644 .github/workflows/pull_request.yml create mode 100644 .github/workflows/quality_checks.yml create mode 100644 .github/workflows/release.yml delete mode 100644 .github/workflows/stage-1-commit.yaml delete mode 100644 .github/workflows/stage-2-test.yaml delete mode 100644 .github/workflows/stage-3-build.yaml delete mode 100644 .github/workflows/stage-4-acceptance.yaml delete mode 100644 .gitleaksignore create mode 100644 .npmrc create mode 100644 .pre-commit-config.yaml create mode 100644 .releaserc delete mode 100644 .vscode/extensions.json delete mode 100644 .vscode/settings.json create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md rename LICENCE.md => LICENSE (94%) create mode 100644 RELEASE.md delete mode 100644 VERSION delete mode 100644 docs/adr/ADR-001_Use_git_hook_and_GitHub_action_to_check_the_editorconfig_compliance.md delete mode 100644 docs/adr/ADR-002_Scan_repository_for_hardcoded_secrets.md delete mode 100644 docs/adr/ADR-003_Acceptable_use_of_GitHub_PAT_and_Apps_for_authN_and_authZ.md delete mode 100644 docs/adr/ADR-XXX_Agree_CICD_pipeline_structure.md delete mode 100644 docs/adr/ADR-nnn_Any_Decision_Record_Template.md delete mode 100644 docs/adr/assets/ADR-003/examples/bash/README.md delete mode 100755 docs/adr/assets/ADR-003/examples/bash/script.sh delete mode 100644 docs/adr/assets/ADR-003/examples/golang/README.md delete mode 100644 docs/adr/assets/ADR-003/examples/golang/go.mod delete mode 100644 docs/adr/assets/ADR-003/examples/golang/go.sum delete mode 100644 docs/adr/assets/ADR-003/examples/golang/main.go delete mode 100644 docs/adr/assets/ADR-003/examples/nodejs/.gitignore delete mode 100644 docs/adr/assets/ADR-003/examples/nodejs/README.md delete mode 100644 docs/adr/assets/ADR-003/examples/nodejs/main.ts delete mode 100644 docs/adr/assets/ADR-003/examples/nodejs/package.json delete mode 100644 docs/adr/assets/ADR-003/examples/nodejs/tsconfig.json delete mode 100644 docs/adr/assets/ADR-003/examples/python/README.md delete mode 100644 docs/adr/assets/ADR-003/examples/python/main.py delete mode 100644 docs/adr/assets/ADR-003/examples/python/requirements.txt delete mode 100644 docs/developer-guides/Bash_and_Make.md delete mode 100644 docs/developer-guides/Scripting_Docker.md delete mode 100644 docs/developer-guides/Scripting_Terraform.md delete mode 100644 docs/developer-guides/assets/make_help.png delete mode 100644 docs/diagrams/.gitignore delete mode 100644 docs/diagrams/CD_Pipeline_Structure.drawio delete mode 100644 docs/diagrams/CD_Pipeline_Structure.png delete mode 100644 docs/diagrams/Repository_Template.drawio delete mode 100644 docs/diagrams/Repository_Template_GitHub_Generic.png delete mode 100644 docs/user-guides/Perform_static_analysis.md delete mode 100644 docs/user-guides/Run_Git_hooks_on_commit.md delete mode 100644 docs/user-guides/Scan_dependencies.md delete mode 100644 docs/user-guides/Scan_secrets.md delete mode 100644 docs/user-guides/Sign_Git_commits.md delete mode 100644 docs/user-guides/Test_GitHub_Actions_locally.md delete mode 100644 infrastructure/.gitignore delete mode 100644 infrastructure/environments/.gitkeep delete mode 100644 infrastructure/images/.gitkeep delete mode 100644 infrastructure/modules/.gitkeep create mode 100644 jest.config.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 poetry.lock create mode 100644 poetry.toml delete mode 100644 project.code-workspace create mode 100644 pyproject.toml create mode 100755 scripts/check_python_licenses.sh delete mode 100644 scripts/config/gitleaks.toml delete mode 100644 scripts/config/grype.yaml delete mode 100644 scripts/config/hadolint.yaml delete mode 100644 scripts/config/markdownlint.yaml delete mode 100644 scripts/config/pre-commit.yaml delete mode 100644 scripts/config/repository-template.yaml delete mode 100644 scripts/config/sonar-scanner.properties delete mode 100644 scripts/config/syft.yaml delete mode 100644 scripts/docker/Dockerfile.metadata delete mode 100644 scripts/docker/dgoss.sh delete mode 100644 scripts/docker/docker.lib.sh delete mode 100644 scripts/docker/docker.mk delete mode 100755 scripts/docker/dockerfile-linter.sh delete mode 100644 scripts/docker/examples/python/.tool-versions.example delete mode 100644 scripts/docker/examples/python/Dockerfile delete mode 100644 scripts/docker/examples/python/Dockerfile.effective delete mode 100644 scripts/docker/examples/python/VERSION delete mode 100644 scripts/docker/examples/python/assets/hello_world/app.py delete mode 100644 scripts/docker/examples/python/assets/hello_world/requirements.txt delete mode 100644 scripts/docker/examples/python/tests/goss.yaml delete mode 100644 scripts/docker/tests/.gitignore delete mode 100644 scripts/docker/tests/.tool-versions.test delete mode 100644 scripts/docker/tests/Dockerfile delete mode 100644 scripts/docker/tests/VERSION delete mode 100755 scripts/docker/tests/docker.test.sh delete mode 100755 scripts/githooks/check-file-format.sh delete mode 100755 scripts/githooks/check-markdown-format.sh delete mode 100755 scripts/githooks/check-terraform-format.sh delete mode 100755 scripts/githooks/scan-secrets.sh delete mode 100644 scripts/init.mk delete mode 100755 scripts/reports/create-lines-of-code-report.sh delete mode 100755 scripts/reports/create-sbom-report.sh delete mode 100755 scripts/reports/perform-static-analysis.sh delete mode 100755 scripts/reports/scan-vulnerabilities.sh delete mode 100755 scripts/shellscript-linter.sh delete mode 100644 scripts/terraform/examples/terraform-state-aws-s3/.gitignore delete mode 100644 scripts/terraform/examples/terraform-state-aws-s3/main.tf delete mode 100644 scripts/terraform/examples/terraform-state-aws-s3/provider.tf delete mode 100644 scripts/terraform/examples/terraform-state-aws-s3/variables.tf delete mode 100644 scripts/terraform/examples/terraform-state-aws-s3/versions.tf delete mode 100644 scripts/terraform/terraform.lib.sh delete mode 100644 scripts/terraform/terraform.mk delete mode 100755 scripts/terraform/terraform.sh delete mode 100644 scripts/tests/test.mk delete mode 100755 scripts/tests/unit.sh create mode 100644 sonar-project.properties create mode 100644 src/index.ts create mode 100644 src/live-spine-client.ts create mode 100644 src/sandbox-spine-client.ts create mode 100644 src/spine-client.ts create mode 100644 src/status.ts delete mode 100644 tests/.gitkeep create mode 100644 tests/live-spine-client.test.ts create mode 100644 tests/status.test.ts create mode 100644 tsconfig.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..83dc873 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,39 @@ +FROM mcr.microsoft.com/devcontainers/base:ubuntu + +# System updates +RUN apt-get update \ + && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -y dist-upgrade \ + && apt-get -y install --no-install-recommends \ + git make + +# Python dependencies +RUN apt-get -y install --no-install-recommends \ + libffi-dev libsqlite3-dev + +USER vscode + +# Install ASDF +RUN git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.11.3; \ + echo '. $HOME/.asdf/asdf.sh' >> ~/.bashrc; \ + echo '. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc; + +ENV PATH="$PATH:/home/vscode/.asdf/bin/:/workspaces/nhs-eps-spine-client/node_modules/.bin" + +# Install ASDF plugins +RUN asdf plugin add python; \ + asdf plugin add poetry https://github.com/asdf-community/asdf-poetry.git; \ + asdf plugin add shellcheck https://github.com/luizm/asdf-shellcheck.git; \ + asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git; \ + asdf plugin-add direnv; \ + asdf plugin add actionlint; + +WORKDIR /workspaces/nhs-eps-spine-client +ADD .tool-versions /workspaces/nhs-eps-spine-client/.tool-versions +ADD .tool-versions /home/vscode/.tool-versions + +RUN asdf install; \ + asdf reshim python; \ + asdf reshim poetry; \ + asdf reshim nodejs; \ + asdf direnv setup --shell bash --version 2.32.2; diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..a930b6d --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,87 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu +{ + "name": "Ubuntu", + // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile + "build": { + "dockerfile": "Dockerfile", + "context": "..", + "args": {} + }, + "mounts": [ + "source=${env:HOME}${env:USERPROFILE}/.ssh,target=/home/vscode/.ssh,type=bind", + "source=${env:HOME}${env:USERPROFILE}/.gnupg,target=/home/vscode/.gnupg,type=bind" + ], + // Features to add to the dev container. More info: https://containers.dev/features. + "features": { + "ghcr.io/devcontainers/features/docker-outside-of-docker:1": { + "version": "latest", + "moby": "true", + "installDockerBuildx": "true" + }, + }, + "customizations": { + "vscode": { + "extensions": [ + "redhat.vscode-yaml", + "eamodio.gitlens", + "lfm.vscode-makefile-term", + "streetsidesoftware.code-spell-checker", + "timonwong.shellcheck", + "mkhl.direnv", + "github.vscode-github-actions", + "Orta.vscode-jest", + "rvest.vs-code-prettier-eslint", + "esbenp.prettier-vscode", + "ms-azuretools.vscode-docker", + "tamasfe.even-better-toml" + ], + "settings": { + "python.defaultInterpreterPath": "/workspaces/nhs-eps-spine-client/.venv/bin/python", + "python.analysis.autoSearchPaths": true, + "python.analysis.extraPaths": [], + "editor.formatOnPaste": false, + "editor.formatOnType": false, + "editor.formatOnSave": true, + "editor.formatOnSaveMode": "file", + "vs-code-prettier-eslint.prettierLast": false, + "[javascript]": { + "editor.defaultFormatter": "rvest.vs-code-prettier-eslint" + }, + "[typescript]": { + "editor.defaultFormatter": "rvest.vs-code-prettier-eslint" + }, + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[yaml]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[markdown]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[dockerfile]": { + "editor.defaultFormatter": "ms-azuretools.vscode-docker" + }, + "[toml]": { + "editor.defaultFormatter": "tamasfe.even-better-toml" + }, + "files.associations": { + ".releaserc": "json" + }, + "cSpell.words": [ + "fhir", + "Formik", + "pino", + "serialisation", + "devcontainer", + "sonarcloud" + ] + } + } + }, + "postCreateCommand": "rm -f ~/.docker/config.json; git config --global --add safe.directory /workspaces/nhs-eps-spine-client; make install; direnv allow ." +} diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 02e8abc..0000000 --- a/.editorconfig +++ /dev/null @@ -1,21 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -indent_size = 2 -indent_style = space -insert_final_newline = true -trim_trailing_whitespace = true - -[*.md] -indent_size = unset - -[*.py] -indent_size = 4 - -[{Dockerfile,Dockerfile.}*] -indent_size = 4 - -[{Makefile,*.mk,go.mod,go.sum,*.go,.gitmodules}] -indent_style = tab diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..a9bf588 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +#!/bin/bash diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..64f2916 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,77 @@ +{ + "root": true, + "env": { + "node": true, + "es6": true, + "jest": true + }, + "ignorePatterns": ["lib"], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module", + "ecmaFeatures": { + "modules": true + } + }, + "plugins": ["@typescript-eslint", "import-newlines"], + "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"], + "rules": { + "block-spacing": "error", + "brace-style": ["error", "1tbs"], + "comma-dangle": ["error", "never"], + "comma-spacing": [ + "error", + { + "before": false, + "after": true + } + ], + "dot-location": ["error", "property"], + "eol-last": ["error", "always"], + "eqeqeq": "error", + "func-call-spacing": "error", + "func-style": [ + "error", + "declaration", + { + "allowArrowFunctions": true + } + ], + "import-newlines/enforce": [ + "error", + { + "items": 3, + "max-len": 120, + "semi": false + } + ], + "indent": [ + "error", + 2, + { + "SwitchCase": 1 + } + ], + "max-len": ["error", 120], + "no-multi-spaces": "error", + "no-multiple-empty-lines": [ + "error", + { + "max": 1 + } + ], + "no-trailing-spaces": "error", + "object-curly-spacing": ["error", "never"], + "quotes": [ + "error", + "double", + { + "allowTemplateLiterals": true, + "avoidEscape": true + } + ], + "semi": ["error", "never"], + "@typescript-eslint/no-explicit-any": "off" + } +} diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1f16008..0000000 --- a/.gitattributes +++ /dev/null @@ -1,7 +0,0 @@ -scripts/docker/** linguist-vendored -scripts/githooks/** linguist-vendored -scripts/reports/** linguist-vendored -scripts/terraform/** linguist-vendored -scripts/tests/test.mk linguist-vendored -scripts/init.mk linguist-vendored -scripts/shellscript-linter.sh linguist-vendored diff --git a/.github/ISSUE_TEMPLATE/1_support_request.yaml b/.github/ISSUE_TEMPLATE/1_support_request.yaml deleted file mode 100644 index eb24401..0000000 --- a/.github/ISSUE_TEMPLATE/1_support_request.yaml +++ /dev/null @@ -1,52 +0,0 @@ -# See: -# - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository -# - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms -# - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/common-validation-errors-when-creating-issue-forms - -name: 🔧 Support Request -description: Get help -labels: ["support"] -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to file a support request. Please fill out this form as completely as possible. - - type: textarea - attributes: - label: What exactly are you trying to do? - description: Describe in as much detail as possible. - validations: - required: true - - type: textarea - attributes: - label: What have you tried so far? - description: Describe what you have tried so far. - validations: - required: true - - type: textarea - attributes: - label: Output of any commands you have tried - description: Please copy and paste any relevant output. This will be automatically formatted into codeblock. - render: Shell - validations: - required: false - - type: textarea - attributes: - label: Additional context - description: Add any other context about the problem here. - validations: - required: false - - type: checkboxes - attributes: - label: Code of Conduct - description: By submitting this issue you agree to follow our [Code of Conduct](../../docs/CODE_OF_CONDUCT.md) - options: - - label: I agree to follow this project's Code of Conduct - required: true - - type: checkboxes - attributes: - label: Sensitive Information Declaration - description: To ensure the utmost confidentiality and protect your privacy, we kindly ask you to NOT including [PII (Personal Identifiable Information) / PID (Personal Identifiable Data)](https://digital.nhs.uk/data-and-information/keeping-data-safe-and-benefitting-the-public) or any other sensitive data in this form. We appreciate your cooperation in maintaining the security of your information. - options: - - label: I confirm that neither PII/PID nor sensitive data are included in this form - required: true diff --git a/.github/ISSUE_TEMPLATE/2_feature_request.yaml b/.github/ISSUE_TEMPLATE/2_feature_request.yaml deleted file mode 100644 index 705d083..0000000 --- a/.github/ISSUE_TEMPLATE/2_feature_request.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# See: -# - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository -# - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms -# - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/common-validation-errors-when-creating-issue-forms - -name: 🚀 Feature Request -description: Suggest an idea for this project -labels: ["feature request"] -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to file a feature request. Please fill out this form as completely as possible. - - type: textarea - attributes: - label: What is the problem this feature will solve? - description: Tell us why this change is needed or helpful and what problems it may help solve. - validations: - required: true - - type: textarea - attributes: - label: What is the feature that you are proposing to solve the problem? - description: Provide detailed information for what we should add. - validations: - required: true - - type: textarea - attributes: - label: What alternatives have you considered? - - type: checkboxes - attributes: - label: Code of Conduct - description: By submitting this issue you agree to follow our [Code of Conduct](../../docs/CODE_OF_CONDUCT.md) - options: - - label: I agree to follow this project's Code of Conduct - required: true - - type: checkboxes - attributes: - label: Sensitive Information Declaration - description: To ensure the utmost confidentiality and protect your privacy, we kindly ask you to NOT including [PII (Personal Identifiable Information) / PID (Personal Identifiable Data)](https://digital.nhs.uk/data-and-information/keeping-data-safe-and-benefitting-the-public) or any other sensitive data in this form. We appreciate your cooperation in maintaining the security of your information. - options: - - label: I confirm that neither PII/PID nor sensitive data are included in this form - required: true diff --git a/.github/ISSUE_TEMPLATE/3_bug_report.yaml b/.github/ISSUE_TEMPLATE/3_bug_report.yaml deleted file mode 100644 index 12a8c6e..0000000 --- a/.github/ISSUE_TEMPLATE/3_bug_report.yaml +++ /dev/null @@ -1,63 +0,0 @@ -# See: -# - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository -# - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms -# - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/common-validation-errors-when-creating-issue-forms - -name: 🐞 Bug Report -description: File a bug report -labels: ["bug", "triage"] -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to file a bug report. Please fill out this form as completely as possible. - - type: checkboxes - attributes: - label: Is there an existing issue for this? - description: Please, search the Issues to see if an issue already exists for the bug you have encountered. - options: - - label: I have searched the existing Issues - required: true - - type: textarea - attributes: - label: Current Behavior - description: A concise description of what you are experiencing. - validations: - required: true - - type: textarea - attributes: - label: Expected Behavior - description: A concise description of what you expect to happen. - validations: - required: true - - type: textarea - attributes: - label: Steps To Reproduce - description: Steps to reproduce the behavior - placeholder: | - 1. In this environment... - 2. With this config... - 3. Run `...` - validations: - required: false - - type: textarea - attributes: - label: Output - description: Please copy and paste any relevant output. This will be automatically formatted into codeblock. - render: Shell - validations: - required: false - - type: checkboxes - attributes: - label: Code of Conduct - description: By submitting this issue you agree to follow our [Code of Conduct](../../docs/CODE_OF_CONDUCT.md) - options: - - label: I agree to follow this project's Code of Conduct - required: true - - type: checkboxes - attributes: - label: Sensitive Information Declaration - description: To ensure the utmost confidentiality and protect your privacy, we kindly ask you to NOT including [PII (Personal Identifiable Information) / PID (Personal Identifiable Data)](https://digital.nhs.uk/data-and-information/keeping-data-safe-and-benefitting-the-public) or any other sensitive data in this form. We appreciate your cooperation in maintaining the security of your information. - options: - - label: I confirm that neither PII/PID nor sensitive data are included in this form - required: true diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index c00ff41..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,35 +0,0 @@ - -## Description - - - -## Context - - - -## Type of changes - - - -- [ ] Refactoring (non-breaking change) -- [ ] New feature (non-breaking change which adds functionality) -- [ ] Breaking change (fix or feature that would change existing functionality) -- [ ] Bug fix (non-breaking change which fixes an issue) - -## Checklist - - - -- [ ] I am familiar with the [contributing guidelines](../docs/CONTRIBUTING.md) -- [ ] I have followed the code style of the project -- [ ] I have added tests to cover my changes -- [ ] I have updated the documentation accordingly -- [ ] This PR is a result of pair or mob programming - ---- - -## Sensitive Information Declaration - -To ensure the utmost confidentiality and protect your and others privacy, we kindly ask you to NOT including [PII (Personal Identifiable Information) / PID (Personal Identifiable Data)](https://digital.nhs.uk/data-and-information/keeping-data-safe-and-benefitting-the-public) or any other sensitive data in this PR (Pull Request) and the codebase changes. We will remove any PR that do contain any sensitive information. We really appreciate your cooperation in this matter. - -- [ ] I confirm that neither PII/PID nor sensitive data are included in this PR and the codebase changes. diff --git a/.github/SECURITY.md b/.github/SECURITY.md deleted file mode 100644 index 5bc7485..0000000 --- a/.github/SECURITY.md +++ /dev/null @@ -1,35 +0,0 @@ -# Security - -NHS England takes security and the protection of private data extremely seriously. If you believe you have found a vulnerability or other issue which has compromised or could compromise the security of any of our systems and/or private data managed by our systems, please do not hesitate to contact us using the methods outlined below. - -## Table of Contents - -- [Security](#security) - - [Table of Contents](#table-of-contents) - - [Reporting a vulnerability](#reporting-a-vulnerability) - - [Email](#email) - - [NCSC](#ncsc) - - [General Security Enquiries](#general-security-enquiries) - -## Reporting a vulnerability - -Please note, email is our preferred method of receiving reports. - -### Email - -If you wish to notify us of a vulnerability via email, please include detailed information on the nature of the vulnerability and any steps required to reproduce it. - -You can reach us at: - -- _[ A product team email address ]_ -- [cybersecurity@nhs.net](cybersecurity@nhs.net) - -### NCSC - -You can send your report to the National Cyber Security Centre, who will assess your report and pass it on to NHS England if necessary. - -You can report vulnerabilities here: [https://www.ncsc.gov.uk/information/vulnerability-reporting](https://www.ncsc.gov.uk/information/vulnerability-reporting) - -## General Security Enquiries - -If you have general enquiries regarding our cyber security, please reach out to us at [cybersecurity@nhs.net](cybersecurity@nhs.net) diff --git a/.github/actions/check-file-format/action.yaml b/.github/actions/check-file-format/action.yaml deleted file mode 100644 index bd0929a..0000000 --- a/.github/actions/check-file-format/action.yaml +++ /dev/null @@ -1,10 +0,0 @@ -name: "Check file format" -description: "Check file format" -runs: - using: "composite" - steps: - - name: "Check file format" - shell: bash - run: | - export BRANCH_NAME=origin/${{ github.event.repository.default_branch }} - check=branch ./scripts/githooks/check-file-format.sh diff --git a/.github/actions/check-markdown-format/action.yaml b/.github/actions/check-markdown-format/action.yaml deleted file mode 100644 index 53a715b..0000000 --- a/.github/actions/check-markdown-format/action.yaml +++ /dev/null @@ -1,10 +0,0 @@ -name: "Check Markdown format" -description: "Check Markdown format" -runs: - using: "composite" - steps: - - name: "Check Markdown format" - shell: bash - run: | - export BRANCH_NAME=origin/${{ github.event.repository.default_branch }} - check=branch ./scripts/githooks/check-markdown-format.sh diff --git a/.github/actions/create-lines-of-code-report/action.yaml b/.github/actions/create-lines-of-code-report/action.yaml deleted file mode 100644 index 452b432..0000000 --- a/.github/actions/create-lines-of-code-report/action.yaml +++ /dev/null @@ -1,57 +0,0 @@ -name: "Count lines of code" -description: "Count lines of code" -inputs: - build_datetime: - description: "Build datetime, set by the CI/CD pipeline workflow" - required: true - build_timestamp: - description: "Build timestamp, set by the CI/CD pipeline workflow" - required: true - idp_aws_report_upload_account_id: - description: "IDP AWS account ID" - required: true - idp_aws_report_upload_region: - description: "IDP AWS account region" - required: true - idp_aws_report_upload_role_name: - description: "Role to upload the report" - required: true - idp_aws_report_upload_bucket_endpoint: - description: "Bucket endpoint for the report" - required: true -runs: - using: "composite" - steps: - - name: "Create CLOC report" - shell: bash - run: | - export BUILD_DATETIME=${{ inputs.build_datetime }} - ./scripts/reports/create-lines-of-code-report.sh - - name: "Compress CLOC report" - shell: bash - run: zip lines-of-code-report.json.zip lines-of-code-report.json - - name: "Upload CLOC report as an artefact" - if: ${{ !env.ACT }} - uses: actions/upload-artifact@v3 - with: - name: lines-of-code-report.json.zip - path: ./lines-of-code-report.json.zip - retention-days: 21 - - name: "Check prerequisites for sending the report" - shell: bash - id: check - run: | - echo "secrets_exist=${{ inputs.idp_aws_report_upload_role_name != '' && inputs.idp_aws_report_upload_bucket_endpoint != '' }}" >> $GITHUB_OUTPUT - - name: "Authenticate to send the report" - if: steps.check.outputs.secrets_exist == 'true' - uses: aws-actions/configure-aws-credentials@v2 - with: - role-to-assume: arn:aws:iam::${{ inputs.idp_aws_report_upload_account_id }}:role/${{ inputs.idp_aws_report_upload_role_name }} - aws-region: ${{ inputs.idp_aws_report_upload_region }} - - name: "Send the CLOC report to the central location" - shell: bash - if: steps.check.outputs.secrets_exist == 'true' - run: | - aws s3 cp \ - ./lines-of-code-report.json.zip \ - ${{ inputs.idp_aws_report_upload_bucket_endpoint }}/${{ inputs.build_timestamp }}-lines-of-code-report.json.zip diff --git a/.github/actions/lint-terraform/action.yaml b/.github/actions/lint-terraform/action.yaml deleted file mode 100644 index d5dfe35..0000000 --- a/.github/actions/lint-terraform/action.yaml +++ /dev/null @@ -1,20 +0,0 @@ -name: "Lint Terraform" -description: "Lint Terraform" -inputs: - root-modules: - description: "Comma separated list of root module directories to validate, content of the 'infrastructure/environments' is checked by default" - required: false -runs: - using: "composite" - steps: - - name: "Check Terraform format" - shell: bash - run: | - check_only=true scripts/githooks/check-terraform-format.sh - - name: "Validate Terraform" - shell: bash - run: | - stacks=${{ inputs.root-modules }} - for dir in $(find infrastructure/environments -maxdepth 1 -mindepth 1 -type d; echo ${stacks//,/$'\n'}); do - dir=$dir make terraform-validate - done diff --git a/.github/actions/perform-static-analysis/action.yaml b/.github/actions/perform-static-analysis/action.yaml deleted file mode 100644 index a619e9d..0000000 --- a/.github/actions/perform-static-analysis/action.yaml +++ /dev/null @@ -1,28 +0,0 @@ -name: "Perform static analysis" -description: "Perform static analysis" -inputs: - sonar_organisation_key: - description: "Sonar organisation key, used to identify the project" - required: false - sonar_project_key: - description: "Sonar project key, used to identify the project" - required: false - sonar_token: - description: "Sonar token, the API key" - required: false -runs: - using: "composite" - steps: - - name: "Check prerequisites for performing static analysis" - shell: bash - id: check - run: echo "secret_exist=${{ inputs.sonar_token != '' }}" >> $GITHUB_OUTPUT - - name: "Perform static analysis" - shell: bash - if: steps.check.outputs.secret_exist == 'true' - run: | - export BRANCH_NAME=${GITHUB_HEAD_REF:-$(echo $GITHUB_REF | sed 's#refs/heads/##')} - export SONAR_ORGANISATION_KEY=${{ inputs.sonar_organisation_key }} - export SONAR_PROJECT_KEY=${{ inputs.sonar_project_key }} - export SONAR_TOKEN=${{ inputs.sonar_token }} - ./scripts/reports/perform-static-analysis.sh diff --git a/.github/actions/scan-dependencies/action.yaml b/.github/actions/scan-dependencies/action.yaml deleted file mode 100644 index 925ba09..0000000 --- a/.github/actions/scan-dependencies/action.yaml +++ /dev/null @@ -1,74 +0,0 @@ -name: "Scan dependencies" -description: "Scan dependencies" -inputs: - build_datetime: - description: "Build datetime, set by the CI/CD pipeline workflow" - required: true - build_timestamp: - description: "Build timestamp, set by the CI/CD pipeline workflow" - required: true - idp_aws_report_upload_account_id: - description: "IDP AWS report upload account ID to upload the report to" - required: false - idp_aws_report_upload_region: - description: "IDP AWS report upload account region to upload the report to" - required: false - idp_aws_report_upload_role_name: - description: "IDP AWS report upload role name for OIDC authentication" - required: false - idp_aws_report_upload_bucket_endpoint: - description: "IDP AWS report upload endpoint to upload the report to" - required: false -runs: - using: "composite" - steps: - - name: "Generate SBOM" - shell: bash - run: | - export BUILD_DATETIME=${{ inputs.build_datetime }} - ./scripts/reports/create-sbom-report.sh - - name: "Compress SBOM report" - shell: bash - run: zip sbom-repository-report.json.zip sbom-repository-report.json - - name: "Upload SBOM report as an artefact" - if: ${{ !env.ACT }} - uses: actions/upload-artifact@v3 - with: - name: sbom-repository-report.json.zip - path: ./sbom-repository-report.json.zip - retention-days: 21 - - name: "Scan vulnerabilities" - shell: bash - run: | - export BUILD_DATETIME=${{ inputs.build_datetime }} - ./scripts/reports/scan-vulnerabilities.sh - - name: "Compress vulnerabilities report" - shell: bash - run: zip vulnerabilities-repository-report.json.zip vulnerabilities-repository-report.json - - name: "Upload vulnerabilities report as an artefact" - if: ${{ !env.ACT }} - uses: actions/upload-artifact@v3 - with: - name: vulnerabilities-repository-report.json.zip - path: ./vulnerabilities-repository-report.json.zip - retention-days: 21 - - name: "Check prerequisites for sending the reports" - shell: bash - id: check - run: echo "secrets_exist=${{ inputs.idp_aws_report_upload_role_name != '' && inputs.idp_aws_report_upload_bucket_endpoint != '' }}" >> $GITHUB_OUTPUT - - name: "Authenticate to send the reports" - if: steps.check.outputs.secrets_exist == 'true' - uses: aws-actions/configure-aws-credentials@v2 - with: - role-to-assume: arn:aws:iam::${{ inputs.idp_aws_report_upload_account_id }}:role/${{ inputs.idp_aws_report_upload_role_name }} - aws-region: ${{ inputs.idp_aws_report_upload_region }} - - name: "Send the SBOM and vulnerabilities reports to the central location" - shell: bash - if: steps.check.outputs.secrets_exist == 'true' - run: | - aws s3 cp \ - ./sbom-repository-report.json.zip \ - ${{ inputs.idp_aws_report_upload_bucket_endpoint }}/${{ inputs.build_timestamp }}-sbom-repository-report.json.zip - aws s3 cp \ - ./vulnerabilities-repository-report.json.zip \ - ${{ inputs.idp_aws_report_upload_bucket_endpoint }}/${{ inputs.build_timestamp }}-vulnerabilities-repository-report.json.zip diff --git a/.github/actions/scan-secrets/action.yaml b/.github/actions/scan-secrets/action.yaml deleted file mode 100644 index 1ed8bac..0000000 --- a/.github/actions/scan-secrets/action.yaml +++ /dev/null @@ -1,10 +0,0 @@ -name: "Scan secrets" -description: "Scan secrets" -runs: - using: "composite" - steps: - - name: "Scan secrets" - shell: bash - run: | - # Please do not change this `check=whole-history` setting, as new patterns may be added or history may be rewritten. - check=whole-history ./scripts/githooks/scan-secrets.sh diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml deleted file mode 100644 index 17ef311..0000000 --- a/.github/dependabot.yaml +++ /dev/null @@ -1,28 +0,0 @@ -version: 2 - -updates: - - - package-ecosystem: "docker" - directory: "/" - schedule: - interval: "daily" - - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "daily" - - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - - - package-ecosystem: "pip" - directory: "/" - schedule: - interval: "daily" - - - package-ecosystem: "terraform" - directory: "/" - schedule: - interval: "daily" diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..0a5e987 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,36 @@ +######################################################################### +# Dependabot configuration file +######################################################################### + +version: 2 +updates: + - package-ecosystem: "github-actions" + # Workflow files stored in the + # default location of `.github/workflows` + directory: "/" + schedule: + interval: "daily" + commit-message: + prefix: "Upgrade: [dependabot] - " + + ################################### + # NPM ######################### + ################################### + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "daily" + commit-message: + prefix: "Upgrade: [dependabot] - " + versioning-strategy: increase + + ################################### + # Poetry ######################### + ################################### + - package-ecosystem: "pip" + directory: "/" + schedule: + interval: "daily" + commit-message: + prefix: "Upgrade: [dependabot] - " + versioning-strategy: increase diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..a735bcf --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,36 @@ +## Summary + +**Remove items from this list if they are not relevant. Remove this line once this has been done** + +- Routine Change +- :exclamation: Breaking Change +- :robot: Operational or Infrastructure Change +- :sparkles: New Feature +- :warning: Potential issues that might be caused by this change + +### Details + +Add any summary information of what is in the change. **Remove this line if you have nothing to add.** + +## Pull Request Naming + +Pull requests should be named using the following format: + +```text +Tag: [AEA-NNNN] - Short description +``` + +Tag can be one of: + +- `Fix` - for a bug fix. (Patch release) +- `Update` - either for a backwards-compatible enhancement or for a rule change that adds reported problems. (Patch release) +- `New` - implemented a new feature. (Minor release) +- `Breaking` - for a backwards-incompatible enhancement or feature. (Major release) +- `Docs` - changes to documentation only. (Patch release) +- `Build` - changes to build process only. (No release) +- `Upgrade` - for a dependency upgrade. (Patch release) +- `Chore` - for refactoring, adding tests, etc. (anything that isn't user-facing). (Patch release) + +Correct tagging is necessary for our automated versioning and release process ([Release](./RELEASE.md)). + +The description of your pull request will be used as the commit message for the merge, and also be included in the changelog. Please ensure that your title is sufficiently descriptive. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..52df162 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,13 @@ +name: CI Quality Checks + +on: + push: + branches: [main] + +jobs: + quality_checks: + uses: ./.github/workflows/quality_checks.yml + with: + BRANCH_NAME: main + secrets: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/.github/workflows/cicd-1-pull-request.yaml b/.github/workflows/cicd-1-pull-request.yaml deleted file mode 100644 index cd068ec..0000000 --- a/.github/workflows/cicd-1-pull-request.yaml +++ /dev/null @@ -1,122 +0,0 @@ -name: "CI/CD pull request" - -# The total recommended execution time for the "CI/CD Pull Request" workflow is around 20 minutes. - -on: - push: - branches: - - "**" - pull_request: - types: [opened, reopened] - -jobs: - metadata: - name: "Set CI/CD metadata" - runs-on: ubuntu-latest - timeout-minutes: 1 - outputs: - build_datetime_london: ${{ steps.variables.outputs.build_datetime_london }} - build_datetime: ${{ steps.variables.outputs.build_datetime }} - build_timestamp: ${{ steps.variables.outputs.build_timestamp }} - build_epoch: ${{ steps.variables.outputs.build_epoch }} - nodejs_version: ${{ steps.variables.outputs.nodejs_version }} - python_version: ${{ steps.variables.outputs.python_version }} - terraform_version: ${{ steps.variables.outputs.terraform_version }} - version: ${{ steps.variables.outputs.version }} - does_pull_request_exist: ${{ steps.pr_exists.outputs.does_pull_request_exist }} - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Set CI/CD variables" - id: variables - run: | - datetime=$(date -u +'%Y-%m-%dT%H:%M:%S%z') - BUILD_DATETIME=$datetime make version-create-effective-file - echo "build_datetime_london=$(TZ=Europe/London date --date=$datetime +'%Y-%m-%dT%H:%M:%S%z')" >> $GITHUB_OUTPUT - echo "build_datetime=$datetime" >> $GITHUB_OUTPUT - echo "build_timestamp=$(date --date=$datetime -u +'%Y%m%d%H%M%S')" >> $GITHUB_OUTPUT - echo "build_epoch=$(date --date=$datetime -u +'%s')" >> $GITHUB_OUTPUT - echo "nodejs_version=$(grep "^nodejs" .tool-versions | cut -f2 -d' ')" >> $GITHUB_OUTPUT - echo "python_version=$(grep "^nodejs" .tool-versions | cut -f2 -d' ')" >> $GITHUB_OUTPUT - echo "terraform_version=$(grep "^terraform" .tool-versions | cut -f2 -d' ')" >> $GITHUB_OUTPUT - echo "version=$(head -n 1 .version 2> /dev/null || echo unknown)" >> $GITHUB_OUTPUT - - name: "Check if pull request exists for this branch" - id: pr_exists - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - branch_name=${GITHUB_HEAD_REF:-$(echo $GITHUB_REF | sed 's#refs/heads/##')} - echo "Current branch is '$branch_name'" - if gh pr list --head $branch_name | grep -q .; then - echo "Pull request exists" - echo "does_pull_request_exist=true" >> $GITHUB_OUTPUT - else - echo "Pull request doesn't exist" - echo "does_pull_request_exist=false" >> $GITHUB_OUTPUT - fi - - name: "List variables" - run: | - export BUILD_DATETIME_LONDON="${{ steps.variables.outputs.build_datetime_london }}" - export BUILD_DATETIME="${{ steps.variables.outputs.build_datetime }}" - export BUILD_TIMESTAMP="${{ steps.variables.outputs.build_timestamp }}" - export BUILD_EPOCH="${{ steps.variables.outputs.build_epoch }}" - export NODEJS_VERSION="${{ steps.variables.outputs.nodejs_version }}" - export PYTHON_VERSION="${{ steps.variables.outputs.python_version }}" - export TERRAFORM_VERSION="${{ steps.variables.outputs.terraform_version }}" - export VERSION="${{ steps.variables.outputs.version }}" - export DOES_PULL_REQUEST_EXIST="${{ steps.pr_exists.outputs.does_pull_request_exist }}" - make list-variables - commit-stage: # Recommended maximum execution time is 2 minutes - name: "Commit stage" - needs: [metadata] - uses: ./.github/workflows/stage-1-commit.yaml - with: - build_datetime: "${{ needs.metadata.outputs.build_datetime }}" - build_timestamp: "${{ needs.metadata.outputs.build_timestamp }}" - build_epoch: "${{ needs.metadata.outputs.build_epoch }}" - nodejs_version: "${{ needs.metadata.outputs.nodejs_version }}" - python_version: "${{ needs.metadata.outputs.python_version }}" - terraform_version: "${{ needs.metadata.outputs.terraform_version }}" - version: "${{ needs.metadata.outputs.version }}" - secrets: inherit - test-stage: # Recommended maximum execution time is 5 minutes - name: "Test stage" - needs: [metadata, commit-stage] - uses: ./.github/workflows/stage-2-test.yaml - with: - build_datetime: "${{ needs.metadata.outputs.build_datetime }}" - build_timestamp: "${{ needs.metadata.outputs.build_timestamp }}" - build_epoch: "${{ needs.metadata.outputs.build_epoch }}" - nodejs_version: "${{ needs.metadata.outputs.nodejs_version }}" - python_version: "${{ needs.metadata.outputs.python_version }}" - terraform_version: "${{ needs.metadata.outputs.terraform_version }}" - version: "${{ needs.metadata.outputs.version }}" - secrets: inherit - build-stage: # Recommended maximum execution time is 3 minutes - name: "Build stage" - needs: [metadata, test-stage] - uses: ./.github/workflows/stage-3-build.yaml - if: needs.metadata.outputs.does_pull_request_exist == 'true' || (github.event_name == 'pull_request' && (github.event.action == 'opened' || github.event.action == 'reopened')) - with: - build_datetime: "${{ needs.metadata.outputs.build_datetime }}" - build_timestamp: "${{ needs.metadata.outputs.build_timestamp }}" - build_epoch: "${{ needs.metadata.outputs.build_epoch }}" - nodejs_version: "${{ needs.metadata.outputs.nodejs_version }}" - python_version: "${{ needs.metadata.outputs.python_version }}" - terraform_version: "${{ needs.metadata.outputs.terraform_version }}" - version: "${{ needs.metadata.outputs.version }}" - secrets: inherit - acceptance-stage: # Recommended maximum execution time is 10 minutes - name: "Acceptance stage" - needs: [metadata, build-stage] - uses: ./.github/workflows/stage-4-acceptance.yaml - if: needs.metadata.outputs.does_pull_request_exist == 'true' || (github.event_name == 'pull_request' && (github.event.action == 'opened' || github.event.action == 'reopened')) - with: - build_datetime: "${{ needs.metadata.outputs.build_datetime }}" - build_timestamp: "${{ needs.metadata.outputs.build_timestamp }}" - build_epoch: "${{ needs.metadata.outputs.build_epoch }}" - nodejs_version: "${{ needs.metadata.outputs.nodejs_version }}" - python_version: "${{ needs.metadata.outputs.python_version }}" - terraform_version: "${{ needs.metadata.outputs.terraform_version }}" - version: "${{ needs.metadata.outputs.version }}" - secrets: inherit diff --git a/.github/workflows/cicd-2-publish.yaml b/.github/workflows/cicd-2-publish.yaml deleted file mode 100644 index 44eebbf..0000000 --- a/.github/workflows/cicd-2-publish.yaml +++ /dev/null @@ -1,98 +0,0 @@ -name: "CI/CD publish" - -on: - pull_request: - types: [closed] - branches: - - main - -jobs: - metadata: - name: "Set CI/CD metadata" - runs-on: ubuntu-latest - if: github.event.pull_request.merged == true - timeout-minutes: 1 - outputs: - build_datetime: ${{ steps.variables.outputs.build_datetime }} - build_timestamp: ${{ steps.variables.outputs.build_timestamp }} - build_epoch: ${{ steps.variables.outputs.build_epoch }} - nodejs_version: ${{ steps.variables.outputs.nodejs_version }} - python_version: ${{ steps.variables.outputs.python_version }} - terraform_version: ${{ steps.variables.outputs.terraform_version }} - version: ${{ steps.variables.outputs.version }} - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Set CI/CD variables" - id: variables - run: | - datetime=$(date -u +'%Y-%m-%dT%H:%M:%S%z') - echo "build_datetime=$datetime" >> $GITHUB_OUTPUT - echo "build_timestamp=$(date --date=$datetime -u +'%Y%m%d%H%M%S')" >> $GITHUB_OUTPUT - echo "build_epoch=$(date --date=$datetime -u +'%s')" >> $GITHUB_OUTPUT - echo "nodejs_version=$(grep "^nodejs" .tool-versions | cut -f2 -d' ')" >> $GITHUB_OUTPUT - echo "python_version=$(grep "^nodejs" .tool-versions | cut -f2 -d' ')" >> $GITHUB_OUTPUT - echo "terraform_version=$(grep "^terraform" .tool-versions | cut -f2 -d' ')" >> $GITHUB_OUTPUT - # TODO: Get the version, but it may not be the .version file as this should come from the CI/CD Pull Request Workflow - echo "version=$(head -n 1 .version 2> /dev/null || echo unknown)" >> $GITHUB_OUTPUT - - name: "List variables" - run: | - export BUILD_DATETIME="${{ steps.variables.outputs.build_datetime }}" - export BUILD_TIMESTAMP="${{ steps.variables.outputs.build_timestamp }}" - export BUILD_EPOCH="${{ steps.variables.outputs.build_epoch }}" - export NODEJS_VERSION="${{ steps.variables.outputs.nodejs_version }}" - export PYTHON_VERSION="${{ steps.variables.outputs.python_version }}" - export TERRAFORM_VERSION="${{ steps.variables.outputs.terraform_version }}" - export VERSION="${{ steps.variables.outputs.version }}" - make list-variables - publish: - name: "Publish packages" - runs-on: ubuntu-latest - needs: [metadata] - if: github.event.pull_request.merged == true - timeout-minutes: 3 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Get the artefacts" - run: | - echo "Getting the artefacts created by the build stage ..." - # TODO: Use either action/cache or action/upload-artifact - - name: "Create release" - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ needs.metadata.outputs.version }} - release_name: Release ${{ needs.metadata.outputs.version }} - body: | - Release of ${{ needs.metadata.outputs.version }} - draft: false - prerelease: false - # - name: "Upload release asset" - # uses: actions/upload-release-asset@v1 - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # with: - # upload_url: "${{ steps.create_release.outputs.upload_url }}" - # asset_path: ./* - # asset_name: repository-template-${{ needs.metadata.outputs.version }}.tar.gz - # asset_content_type: "application/gzip" - success: - name: "Success notification" - runs-on: ubuntu-latest - needs: [publish] - steps: - - name: "Check prerequisites for notification" - id: check - run: echo "secret_exist=${{ secrets.TEAMS_NOTIFICATION_WEBHOOK_URL != '' }}" >> $GITHUB_OUTPUT - - name: "Notify on publishing packages" - if: steps.check.outputs.secret_exist == 'true' - uses: nhs-england-tools/notify-msteams-action@v0.0.4 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - teams-webhook-url: ${{ secrets.TEAMS_NOTIFICATION_WEBHOOK_URL }} - message-title: "Notification title" - message-text: "This is a notification body" - link: ${{ github.event.pull_request.html_url }} diff --git a/.github/workflows/cicd-3-deploy.yaml b/.github/workflows/cicd-3-deploy.yaml deleted file mode 100644 index 2745b38..0000000 --- a/.github/workflows/cicd-3-deploy.yaml +++ /dev/null @@ -1,77 +0,0 @@ -name: "CI/CD deploy" - -on: - workflow_dispatch: - inputs: - tag: - description: "This is the tag that is oging to be deployed" - required: true - default: "latest" - -jobs: - metadata: - name: "Set CI/CD metadata" - runs-on: ubuntu-latest - timeout-minutes: 1 - outputs: - build_datetime: ${{ steps.variables.outputs.build_datetime }} - build_timestamp: ${{ steps.variables.outputs.build_timestamp }} - build_epoch: ${{ steps.variables.outputs.build_epoch }} - nodejs_version: ${{ steps.variables.outputs.nodejs_version }} - python_version: ${{ steps.variables.outputs.python_version }} - terraform_version: ${{ steps.variables.outputs.terraform_version }} - version: ${{ steps.variables.outputs.version }} - tag: ${{ steps.variables.outputs.tag }} - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Set CI/CD variables" - id: variables - run: | - datetime=$(date -u +'%Y-%m-%dT%H:%M:%S%z') - echo "build_datetime=$datetime" >> $GITHUB_OUTPUT - echo "build_timestamp=$(date --date=$datetime -u +'%Y%m%d%H%M%S')" >> $GITHUB_OUTPUT - echo "build_epoch=$(date --date=$datetime -u +'%s')" >> $GITHUB_OUTPUT - echo "nodejs_version=$(grep "^nodejs" .tool-versions | cut -f2 -d' ')" >> $GITHUB_OUTPUT - echo "python_version=$(grep "^nodejs" .tool-versions | cut -f2 -d' ')" >> $GITHUB_OUTPUT - echo "terraform_version=$(grep "^terraform" .tool-versions | cut -f2 -d' ')" >> $GITHUB_OUTPUT - # TODO: Get the version, but it may not be the .version file as this should come from the CI/CD Pull Request Workflow - echo "version=$(head -n 1 .version 2> /dev/null || echo unknown)" >> $GITHUB_OUTPUT - echo "tag=${{ github.event.inputs.tag }}" >> $GITHUB_OUTPUT - - name: "List variables" - run: | - export BUILD_DATETIME="${{ steps.variables.outputs.build_datetime }}" - export BUILD_TIMESTAMP="${{ steps.variables.outputs.build_timestamp }}" - export BUILD_EPOCH="${{ steps.variables.outputs.build_epoch }}" - export NODEJS_VERSION="${{ steps.variables.outputs.nodejs_version }}" - export PYTHON_VERSION="${{ steps.variables.outputs.python_version }}" - export TERRAFORM_VERSION="${{ steps.variables.outputs.terraform_version }}" - export VERSION="${{ steps.variables.outputs.version }}" - export TAG="${{ steps.variables.outputs.tag }}" - make list-variables - deploy: - name: "Deploy to an environment" - runs-on: ubuntu-latest - needs: [metadata] - timeout-minutes: 10 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - # TODO: More jobs or/and steps here - # success: - # name: "Success notification" - # runs-on: ubuntu-latest - # needs: [deploy] - # steps: - # - name: "Check prerequisites for notification" - # id: check - # run: echo "secret_exist=${{ secrets.TEAMS_NOTIFICATION_WEBHOOK_URL != '' }}" >> $GITHUB_OUTPUT - # - name: "Notify on deployment to an environment" - # if: steps.check.outputs.secret_exist == 'true' - # uses: nhs-england-tools/notify-msteams-action@v0.0.4 - # with: - # github-token: ${{ secrets.GITHUB_TOKEN }} - # teams-webhook-url: ${{ secrets.TEAMS_NOTIFICATION_WEBHOOK_URL }} - # message-title: "Notification title" - # message-text: "This is a notification body" - # link: ${{ github.event.pull_request.html_url }} diff --git a/.github/workflows/combine_dependabot_prs.yml b/.github/workflows/combine_dependabot_prs.yml new file mode 100644 index 0000000..284ede2 --- /dev/null +++ b/.github/workflows/combine_dependabot_prs.yml @@ -0,0 +1,151 @@ +name: "Combine PRs" + +# Controls when the action will run - in this case triggered manually +on: + workflow_dispatch: + inputs: + branchPrefix: + description: "Branch prefix to find combinable PRs based on" + required: true + default: "dependabot" + mustBeGreen: + description: "Only combine PRs that are green (status is success)" + required: true + default: "true" + combineBranchName: + description: "Name of the branch to combine PRs into" + required: true + default: "combine-dependabot-PRs" + ignoreLabel: + description: "Exclude PRs with this label" + required: true + default: "nocombine" + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "combine-prs" + combine-prs: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - uses: actions/github-script@v7 + id: create-combined-pr + name: Create Combined PR + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const pulls = await github.paginate('GET /repos/:owner/:repo/pulls', { + owner: context.repo.owner, + repo: context.repo.repo + }); + let branchesAndPRStrings = []; + let baseBranch = null; + let baseBranchSHA = null; + for (const pull of pulls) { + const branch = pull['head']['ref']; + console.log('Pull for branch: ' + branch); + if (branch.startsWith('${{ github.event.inputs.branchPrefix }}')) { + console.log('Branch matched prefix: ' + branch); + let statusOK = true; + if(${{ github.event.inputs.mustBeGreen }}) { + console.log('Checking green status: ' + branch); + const stateQuery = `query($owner: String!, $repo: String!, $pull_number: Int!) { + repository(owner: $owner, name: $repo) { + pullRequest(number:$pull_number) { + commits(last: 1) { + nodes { + commit { + statusCheckRollup { + state + } + } + } + } + } + } + }` + const vars = { + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: pull['number'] + }; + const result = await github.graphql(stateQuery, vars); + const [{ commit }] = result.repository.pullRequest.commits.nodes; + const state = commit.statusCheckRollup.state + console.log('Validating status: ' + state); + if(state != 'SUCCESS') { + console.log('Discarding ' + branch + ' with status ' + state); + statusOK = false; + } + } + console.log('Checking labels: ' + branch); + const labels = pull['labels']; + for(const label of labels) { + const labelName = label['name']; + console.log('Checking label: ' + labelName); + if(labelName == '${{ github.event.inputs.ignoreLabel }}') { + console.log('Discarding ' + branch + ' with label ' + labelName); + statusOK = false; + } + } + if (statusOK) { + console.log('Adding branch to array: ' + branch); + const prString = '#' + pull['number'] + ' ' + pull['title']; + branchesAndPRStrings.push({ branch, prString }); + baseBranch = pull['base']['ref']; + baseBranchSHA = pull['base']['sha']; + } + } + } + if (branchesAndPRStrings.length == 0) { + core.setFailed('No PRs/branches matched criteria'); + return; + } + try { + await github.rest.git.createRef({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: 'refs/heads/' + '${{ github.event.inputs.combineBranchName }}', + sha: baseBranchSHA + }); + } catch (error) { + console.log(error); + core.setFailed('Failed to create combined branch - maybe a branch by that name already exists?'); + return; + } + + let combinedPRs = []; + let mergeFailedPRs = []; + for(const { branch, prString } of branchesAndPRStrings) { + try { + await github.rest.repos.merge({ + owner: context.repo.owner, + repo: context.repo.repo, + base: '${{ github.event.inputs.combineBranchName }}', + head: branch, + }); + console.log('Merged branch ' + branch); + combinedPRs.push(prString); + } catch (error) { + console.log('Failed to merge branch ' + branch); + mergeFailedPRs.push(prString); + } + } + + console.log('Creating combined PR'); + const combinedPRsString = combinedPRs.join('\n'); + let body = '✅ This PR was created by the Combine PRs action by combining the following PRs:\n' + combinedPRsString; + if(mergeFailedPRs.length > 0) { + const mergeFailedPRsString = mergeFailedPRs.join('\n'); + body += '\n\n⚠️ The following PRs were left out due to merge conflicts:\n' + mergeFailedPRsString + } + await github.rest.pulls.create({ + owner: context.repo.owner, + repo: context.repo.repo, + title: 'Combined PR', + head: '${{ github.event.inputs.combineBranchName }}', + base: baseBranch, + body: body + }); diff --git a/.github/workflows/dependabot_auto_approve_and_merge.yml b/.github/workflows/dependabot_auto_approve_and_merge.yml new file mode 100644 index 0000000..dfed549 --- /dev/null +++ b/.github/workflows/dependabot_auto_approve_and_merge.yml @@ -0,0 +1,49 @@ +name: Dependabot auto-approve +on: pull_request + +permissions: + pull-requests: write + contents: write + +jobs: + dependabot: + runs-on: ubuntu-latest + if: ${{ github.actor == 'dependabot[bot]' }} + steps: + - name: Get token from Github App + id: get_app_token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ secrets.AUTOMERGE_APP_ID }} + private-key: ${{ secrets.AUTOMERGE_PEM }} + - name: Dependabot metadata + id: dependabot-metadata + uses: dependabot/fetch-metadata@v1 + with: + github-token: "${{ secrets.GITHUB_TOKEN }}" + - name: Approve patch and minor updates + if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-patch' || steps.dependabot-metadata.outputs.update-type == 'version-update:semver-minor'}} + run: gh pr review "$PR_URL" --approve -b "I'm **approving** this pull request because **it includes a patch or minor update**" + env: + PR_URL: ${{github.event.pull_request.html_url}} + GITHUB_TOKEN: ${{ steps.get_app_token.outputs.token }} + - name: Approve major updates of development dependencies + if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-major' && steps.dependabot-metadata.outputs.dependency-type == 'direct:development'}} + run: gh pr review "$PR_URL" --approve -b "I'm **approving** this pull request because **it includes a major update of a dependency used only in development**" + env: + PR_URL: ${{github.event.pull_request.html_url}} + GITHUB_TOKEN: ${{ steps.get_app_token.outputs.token }} + - name: Comment on major updates of non-development dependencies + if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-major' && steps.dependabot-metadata.outputs.dependency-type == 'direct:production'}} + run: | + gh pr comment "$PR_URL" --body "I'm **not approving** this PR because **it includes a major update of a dependency used in production**" + gh pr edit "$PR_URL" --add-label "requires-manual-qa" + env: + PR_URL: ${{github.event.pull_request.html_url}} + GITHUB_TOKEN: ${{ steps.get_app_token.outputs.token }} + # enable auto merge on all dependabot prs + - name: Enable auto-merge for Dependabot PRs + run: gh pr merge --auto --squash "$PR_URL" + env: + PR_URL: ${{github.event.pull_request.html_url}} + GITHUB_TOKEN: ${{ steps.get_app_token.outputs.token }} diff --git a/.github/workflows/pr_link.yml b/.github/workflows/pr_link.yml new file mode 100644 index 0000000..f25eac7 --- /dev/null +++ b/.github/workflows/pr_link.yml @@ -0,0 +1,34 @@ +name: PR Title Check + +on: + workflow_call: + +jobs: + pr_title_format_check: + runs-on: ubuntu-latest + steps: + - name: Check PR Title is Prefixed with Change Type + env: + PR_TITLE: ${{ github.event.pull_request.title }} + run: | + if [[ "$PR_TITLE" =~ ^(Fix|Update|New|Breaking|Docs|Build|Upgrade|Chore):.*$ ]]; then + echo "PR title is prefixed with change type." + else + echo "PR title is not prefixed with change type." + echo "Please prefix your PR title with a change type (Fix, Update, New, Breaking, Docs, Build, Upgrade, Chore)." + echo "See the contributing guide for more details:" + echo "https://github.com/NHSDigital/nhs-eps-spine-client/blob/main/CONTRIBUTING.md" + exit 1 + fi + + - name: Check PR Title contains Ticket/Dependabot Reference + env: + PR_TITLE: ${{ github.event.pull_request.title }} + run: | + if [[ "$PR_TITLE" =~ ^.*:.*\[([A-Z]+-[0-9]+|dependabot)\].*-.*$ ]]; then + echo "PR title contains ticket or dependabot reference." + else + echo "PR title does not contain ticket or dependabot reference." + echo "Please ensure PR title contains a ticket (eg. 'Fix: [AEA-####] - ...', or 'Chore: [dependabot] - ...')." + exit 1 + fi diff --git a/.github/workflows/pr_title_check.yml b/.github/workflows/pr_title_check.yml new file mode 100644 index 0000000..f25eac7 --- /dev/null +++ b/.github/workflows/pr_title_check.yml @@ -0,0 +1,34 @@ +name: PR Title Check + +on: + workflow_call: + +jobs: + pr_title_format_check: + runs-on: ubuntu-latest + steps: + - name: Check PR Title is Prefixed with Change Type + env: + PR_TITLE: ${{ github.event.pull_request.title }} + run: | + if [[ "$PR_TITLE" =~ ^(Fix|Update|New|Breaking|Docs|Build|Upgrade|Chore):.*$ ]]; then + echo "PR title is prefixed with change type." + else + echo "PR title is not prefixed with change type." + echo "Please prefix your PR title with a change type (Fix, Update, New, Breaking, Docs, Build, Upgrade, Chore)." + echo "See the contributing guide for more details:" + echo "https://github.com/NHSDigital/nhs-eps-spine-client/blob/main/CONTRIBUTING.md" + exit 1 + fi + + - name: Check PR Title contains Ticket/Dependabot Reference + env: + PR_TITLE: ${{ github.event.pull_request.title }} + run: | + if [[ "$PR_TITLE" =~ ^.*:.*\[([A-Z]+-[0-9]+|dependabot)\].*-.*$ ]]; then + echo "PR title contains ticket or dependabot reference." + else + echo "PR title does not contain ticket or dependabot reference." + echo "Please ensure PR title contains a ticket (eg. 'Fix: [AEA-####] - ...', or 'Chore: [dependabot] - ...')." + exit 1 + fi diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml new file mode 100644 index 0000000..7a8861f --- /dev/null +++ b/.github/workflows/pull_request.yml @@ -0,0 +1,16 @@ +name: Pull Request Checks + +on: + pull_request: + branches: [main] + +jobs: + quality_checks: + uses: ./.github/workflows/quality_checks.yml + with: + BRANCH_NAME: ${{ github.event.pull_request.head.ref }} + secrets: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + + pr_title_format_check: + uses: ./.github/workflows/pr_title_check.yml diff --git a/.github/workflows/quality_checks.yml b/.github/workflows/quality_checks.yml new file mode 100644 index 0000000..50f5b64 --- /dev/null +++ b/.github/workflows/quality_checks.yml @@ -0,0 +1,76 @@ +name: Quality Checks + +on: + workflow_call: + inputs: + BRANCH_NAME: + type: string + required: true + secrets: + SONAR_TOKEN: + required: true + +jobs: + lint_build_test: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: ${{ inputs.BRANCH_NAME }} + fetch-depth: 0 + + # using git commit sha for version of action to ensure we have stable version + - name: Install asdf + uses: asdf-vm/actions/setup@05e0d2ed97b598bfce82fd30daf324ae0c4570e6 + with: + asdf_branch: v0.11.3 + + - name: Cache asdf + uses: actions/cache@v3 + with: + path: | + ~/.asdf + key: ${{ runner.os }}-asdf-${{ hashFiles('**/.tool-versions') }} + restore-keys: | + ${{ runner.os }}-asdf- + + - name: Install asdf dependencies in .tool-versions + uses: asdf-vm/actions/install@05e0d2ed97b598bfce82fd30daf324ae0c4570e6 + with: + asdf_branch: v0.11.3 + env: + PYTHON_CONFIGURE_OPTS: --enable-shared + + - name: make install + run: | + make install + + - name: run check-licenses + run: make check-licenses + + - name: run lint + run: make lint + + - name: run build + run: make build + shell: bash + + - name: run unit tests + run: make test + shell: bash + + sonarcloud: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: ${{ inputs.BRANCH_NAME }} + fetch-depth: 0 + + - name: SonarCloud Scan + uses: SonarSource/sonarcloud-github-action@master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..49a4fff --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,59 @@ +name: Release to GitHub Packages + +on: + workflow_dispatch: + +jobs: + quality_checks: + uses: ./.github/workflows/quality_checks.yml + with: + BRANCH_NAME: main + secrets: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + + release: + needs: quality_checks + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: main + fetch-depth: 0 + + # using git commit sha for version of action to ensure we have stable version + - name: Install asdf + uses: asdf-vm/actions/setup@05e0d2ed97b598bfce82fd30daf324ae0c4570e6 + with: + asdf_branch: v0.11.3 + + - name: Cache asdf + uses: actions/cache@v3 + with: + path: | + ~/.asdf + key: ${{ runner.os }}-asdf-${{ hashFiles('**/.tool-versions') }} + restore-keys: | + ${{ runner.os }}-asdf- + + - name: Install asdf dependencies in .tool-versions + uses: asdf-vm/actions/install@05e0d2ed97b598bfce82fd30daf324ae0c4570e6 + with: + asdf_branch: v0.11.3 + env: + PYTHON_CONFIGURE_OPTS: --enable-shared + + - name: make install + run: | + make install + + - name: Build + run: make build + + # use semantic-release to determine the next version number + - name: Release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + npx semantic-release diff --git a/.github/workflows/stage-1-commit.yaml b/.github/workflows/stage-1-commit.yaml deleted file mode 100644 index 131cc1c..0000000 --- a/.github/workflows/stage-1-commit.yaml +++ /dev/null @@ -1,115 +0,0 @@ -name: "Commit stage" - -on: - workflow_call: - inputs: - build_datetime: - description: "Build datetime, set by the CI/CD pipeline workflow" - required: true - type: string - build_timestamp: - description: "Build timestamp, set by the CI/CD pipeline workflow" - required: true - type: string - build_epoch: - description: "Build epoch, set by the CI/CD pipeline workflow" - required: true - type: string - nodejs_version: - description: "Node.js version, set by the CI/CD pipeline workflow" - required: true - type: string - python_version: - description: "Python version, set by the CI/CD pipeline workflow" - required: true - type: string - terraform_version: - description: "Terraform version, set by the CI/CD pipeline workflow" - required: true - type: string - version: - description: "Version of the software, set by the CI/CD pipeline workflow" - required: true - type: string - -jobs: - scan-secrets: - name: "Scan secrets" - runs-on: ubuntu-latest - timeout-minutes: 2 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - with: - fetch-depth: 0 # Full history is needed to scan all commits - - name: "Scan secrets" - uses: ./.github/actions/scan-secrets - check-file-format: - name: "Check file format" - runs-on: ubuntu-latest - timeout-minutes: 2 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - with: - fetch-depth: 0 # Full history is needed to compare branches - - name: "Check file format" - uses: ./.github/actions/check-file-format - check-markdown-format: - name: "Check markdown format" - runs-on: ubuntu-latest - timeout-minutes: 2 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - with: - fetch-depth: 0 # Full history is needed to compare branches - - name: "Check markdown format" - uses: ./.github/actions/check-markdown-format - lint-terraform: - name: "Lint Terraform" - runs-on: ubuntu-latest - timeout-minutes: 2 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Lint Terraform" - uses: ./.github/actions/lint-terraform - count-lines-of-code: - name: "Count lines of code" - runs-on: ubuntu-latest - permissions: - id-token: write - contents: read - timeout-minutes: 2 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Count lines of code" - uses: ./.github/actions/create-lines-of-code-report - with: - build_datetime: "${{ inputs.build_datetime }}" - build_timestamp: "${{ inputs.build_timestamp }}" - idp_aws_report_upload_account_id: "${{ secrets.IDP_AWS_REPORT_UPLOAD_ACCOUNT_ID }}" - idp_aws_report_upload_region: "${{ secrets.IDP_AWS_REPORT_UPLOAD_REGION }}" - idp_aws_report_upload_role_name: "${{ secrets.IDP_AWS_REPORT_UPLOAD_ROLE_NAME }}" - idp_aws_report_upload_bucket_endpoint: "${{ secrets.IDP_AWS_REPORT_UPLOAD_BUCKET_ENDPOINT }}" - scan-dependencies: - name: "Scan dependencies" - runs-on: ubuntu-latest - permissions: - id-token: write - contents: read - timeout-minutes: 2 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Scan dependencies" - uses: ./.github/actions/scan-dependencies - with: - build_datetime: "${{ inputs.build_datetime }}" - build_timestamp: "${{ inputs.build_timestamp }}" - idp_aws_report_upload_account_id: "${{ secrets.IDP_AWS_REPORT_UPLOAD_ACCOUNT_ID }}" - idp_aws_report_upload_region: "${{ secrets.IDP_AWS_REPORT_UPLOAD_REGION }}" - idp_aws_report_upload_role_name: "${{ secrets.IDP_AWS_REPORT_UPLOAD_ROLE_NAME }}" - idp_aws_report_upload_bucket_endpoint: "${{ secrets.IDP_AWS_REPORT_UPLOAD_BUCKET_ENDPOINT }}" diff --git a/.github/workflows/stage-2-test.yaml b/.github/workflows/stage-2-test.yaml deleted file mode 100644 index efcb2ac..0000000 --- a/.github/workflows/stage-2-test.yaml +++ /dev/null @@ -1,94 +0,0 @@ -name: "Test stage" - -on: - workflow_call: - inputs: - build_datetime: - description: "Build datetime, set by the CI/CD pipeline workflow" - required: true - type: string - build_timestamp: - description: "Build timestamp, set by the CI/CD pipeline workflow" - required: true - type: string - build_epoch: - description: "Build epoch, set by the CI/CD pipeline workflow" - required: true - type: string - nodejs_version: - description: "Node.js version, set by the CI/CD pipeline workflow" - required: true - type: string - python_version: - description: "Python version, set by the CI/CD pipeline workflow" - required: true - type: string - terraform_version: - description: "Terraform version, set by the CI/CD pipeline workflow" - required: true - type: string - version: - description: "Version of the software, set by the CI/CD pipeline workflow" - required: true - type: string - -jobs: - test-unit: - name: "Unit tests" - runs-on: ubuntu-latest - timeout-minutes: 5 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Run unit test suite" - run: | - make test-unit - - name: "Save the result of fast test suite" - run: | - echo "Nothing to save" - test-lint: - name: "Linting" - runs-on: ubuntu-latest - timeout-minutes: 5 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Run linting" - run: | - make test-lint - - name: "Save the linting result" - run: | - echo "Nothing to save" - test-coverage: - name: "Test coverage" - needs: [test-unit] - runs-on: ubuntu-latest - timeout-minutes: 5 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Run test coverage check" - run: | - make test-coverage - - name: "Save the coverage check result" - run: | - echo "Nothing to save" - perform-static-analysis: - name: "Perform static analysis" - needs: [test-unit] - runs-on: ubuntu-latest - permissions: - id-token: write - contents: read - timeout-minutes: 5 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - with: - fetch-depth: 0 # Full history is needed to improving relevancy of reporting - - name: "Perform static analysis" - uses: ./.github/actions/perform-static-analysis - with: - sonar_organisation_key: "${{ vars.SONAR_ORGANISATION_KEY }}" - sonar_project_key: "${{ vars.SONAR_PROJECT_KEY }}" - sonar_token: "${{ secrets.SONAR_TOKEN }}" diff --git a/.github/workflows/stage-3-build.yaml b/.github/workflows/stage-3-build.yaml deleted file mode 100644 index 2a53a07..0000000 --- a/.github/workflows/stage-3-build.yaml +++ /dev/null @@ -1,69 +0,0 @@ -name: "Build stage" - -on: - workflow_call: - inputs: - build_datetime: - description: "Build datetime, set by the CI/CD pipeline workflow" - required: true - type: string - build_timestamp: - description: "Build timestamp, set by the CI/CD pipeline workflow" - required: true - type: string - build_epoch: - description: "Build epoch, set by the CI/CD pipeline workflow" - required: true - type: string - nodejs_version: - description: "Node.js version, set by the CI/CD pipeline workflow" - required: true - type: string - python_version: - description: "Python version, set by the CI/CD pipeline workflow" - required: true - type: string - terraform_version: - description: "Terraform version, set by the CI/CD pipeline workflow" - required: true - type: string - version: - description: "Version of the software, set by the CI/CD pipeline workflow" - required: true - type: string - -jobs: - artefact-1: - name: "Artefact 1" - runs-on: ubuntu-latest - timeout-minutes: 3 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Build artefact 1" - run: | - echo "Building artefact 1 ..." - - name: "Check artefact 1" - run: | - echo "Checking artefact 1 ..." - - name: "Upload artefact 1" - run: | - echo "Uploading artefact 1 ..." - # TODO: Use either action/cache or action/upload-artifact - artefact-2: - name: "Artefact 2" - runs-on: ubuntu-latest - timeout-minutes: 3 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Build artefact 2" - run: | - echo "Building artefact 2 ..." - - name: "Check artefact 2" - run: | - echo "Checking artefact 2 ..." - - name: "Upload artefact 2" - run: | - echo "Uploading artefact 2 ..." - # TODO: Use either action/cache or action/upload-artifact diff --git a/.github/workflows/stage-4-acceptance.yaml b/.github/workflows/stage-4-acceptance.yaml deleted file mode 100644 index d554f98..0000000 --- a/.github/workflows/stage-4-acceptance.yaml +++ /dev/null @@ -1,170 +0,0 @@ -name: "Acceptance stage" - -on: - workflow_call: - inputs: - build_datetime: - description: "Build datetime, set by the CI/CD pipeline workflow" - required: true - type: string - build_timestamp: - description: "Build timestamp, set by the CI/CD pipeline workflow" - required: true - type: string - build_epoch: - description: "Build epoch, set by the CI/CD pipeline workflow" - required: true - type: string - nodejs_version: - description: "Node.js version, set by the CI/CD pipeline workflow" - required: true - type: string - python_version: - description: "Python version, set by the CI/CD pipeline workflow" - required: true - type: string - terraform_version: - description: "Terraform version, set by the CI/CD pipeline workflow" - required: true - type: string - version: - description: "Version of the software, set by the CI/CD pipeline workflow" - required: true - type: string - -jobs: - environment-set-up: - name: "Environment set up" - runs-on: ubuntu-latest - timeout-minutes: 5 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Create infractructure" - run: | - echo "Creating infractructure..." - - name: "Update database" - run: | - echo "Updating database..." - - name: "Deploy application" - run: | - echo "Deploying application..." - test-contract: - name: "Contract test" - runs-on: ubuntu-latest - needs: environment-set-up - timeout-minutes: 10 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Run contract test" - run: | - make test-contract - - name: "Save result" - run: | - echo "Nothing to save" - test-security: - name: "Security test" - runs-on: ubuntu-latest - needs: environment-set-up - timeout-minutes: 10 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Run security test" - run: | - make test-security - - name: "Save result" - run: | - echo "Nothing to save" - test-ui: - name: "UI test" - runs-on: ubuntu-latest - needs: environment-set-up - timeout-minutes: 10 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Run UI test" - run: | - make test-ui - - name: "Save result" - run: | - echo "Nothing to save" - test-ui-performance: - name: "UI performance test" - runs-on: ubuntu-latest - needs: environment-set-up - timeout-minutes: 10 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Run UI performance test" - run: | - make test-ui-performance - - name: "Save result" - run: | - echo "Nothing to save" - test-integration: - name: "Integration test" - runs-on: ubuntu-latest - needs: environment-set-up - timeout-minutes: 10 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Run integration test" - run: | - make test-integration - - name: "Save result" - run: | - echo "Nothing to save" - test-accessibility: - name: "Accessibility test" - runs-on: ubuntu-latest - needs: environment-set-up - timeout-minutes: 10 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Run accessibility test" - run: | - make test-accessibility - - name: "Save result" - run: | - echo "Nothing to save" - test-load: - name: "Load test" - runs-on: ubuntu-latest - needs: environment-set-up - timeout-minutes: 10 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Run load tests" - run: | - make test-load - - name: "Save result" - run: | - echo "Nothing to save" - environment-tear-down: - name: "Environment tear down" - runs-on: ubuntu-latest - needs: - [ - test-accessibility, - test-contract, - test-integration, - test-load, - test-security, - test-ui-performance, - test-ui, - ] - if: always() - timeout-minutes: 5 - steps: - - name: "Checkout code" - uses: actions/checkout@v4 - - name: "Tear down environment" - run: | - echo "Tearing down environment..." diff --git a/.gitignore b/.gitignore index 8bdff9a..1c92473 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,5 @@ -# WARNING: Please, DO NOT edit this section of the file! It is maintained in the repository template. - -.scannerwork -*cloc*report*.json -*sbom*report*.json -*vulnerabilities*report*.json -*report*json.zip -.version - -*.code-workspace -!project.code-workspace - -# Please, add your custom content below! +node_modules +.venv +coverage +lib +tsconfig.tsbuildinfo diff --git a/.gitleaksignore b/.gitleaksignore deleted file mode 100644 index cceb449..0000000 --- a/.gitleaksignore +++ /dev/null @@ -1,3 +0,0 @@ -# SEE: https://github.com/gitleaks/gitleaks/blob/master/README.md#gitleaksignore - -cd9c0efec38c5d63053dd865e5d4e207c0760d91:docs/guides/Perform_static_analysis.md:generic-api-key:37 diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..bc13573 --- /dev/null +++ b/.npmrc @@ -0,0 +1,3 @@ +//npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN} +@nhs:registry=https://npm.pkg.github.com +always-auth=true diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..31ecaab --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,44 @@ +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + - id: check-merge-conflict + name: Check for merge conflict strings + + - id: end-of-file-fixer + name: Fix missing newline at the end of files + + - id: check-shebang-scripts-are-executable + name: Check shell scripts are executable + files: \.(sh)$ + + - id: check-yaml + name: Check pipelines configuration + files: ^(.github) + + - repo: https://github.com/koalaman/shellcheck-precommit + rev: v0.9.0 + hooks: + - id: shellcheck + + - repo: local + hooks: + - id: lint-nhs-eps-spine-client + name: Lint nhs-eps-spine-client + entry: make + args: ["lint-node"] + language: system + files: ^src + pass_filenames: false + + - id: lint-githubactions + name: Lint github actions + entry: make + args: ["lint-githubactions"] + language: system + files: ^.github + types_or: [yaml] + pass_filenames: false + +fail_fast: true +default_stages: [commit] diff --git a/.releaserc b/.releaserc new file mode 100644 index 0000000..46028f9 --- /dev/null +++ b/.releaserc @@ -0,0 +1,80 @@ +{ + "branches": [ + { + "name": "main" + } + ], + "plugins": [ + [ + "@semantic-release/commit-analyzer", + { + "preset": "eslint", + "releaseRules": [ + { + "reminder": "Please update CONTRIBUTING.md if you change this", + "release": false + }, + { + "tag": "Fix", + "release": "patch" + }, + { + "tag": "Update", + "release": "patch" + }, + { + "tag": "New", + "release": "minor" + }, + { + "tag": "Breaking", + "release": "major" + }, + { + "tag": "Docs", + "release": "patch" + }, + { + "tag": "Build", + "release": false + }, + { + "tag": "Upgrade", + "release": "patch" + }, + { + "tag": "Chore", + "release": "patch" + } + ] + } + ], + [ + "@semantic-release/release-notes-generator", + { + "preset": "eslint" + } + ], + [ + "@semantic-release/changelog", + { + "changelogFile": "CHANGELOG.md" + } + ], + "@semantic-release/npm", + [ + "@semantic-release/github", + { + "assets": [ + { + "path": "CHANGELOG.md", + "label": "CHANGELOG.md" + } + ], + "successComment": false, + "failComment": false, + "failTitle": false + } + ] + ] +} diff --git a/.tool-versions b/.tool-versions index 2faaa20..f911d73 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,20 +1,6 @@ -# This file is for you! Please, updated to the versions agreed by your team. - -terraform 1.5.7 -pre-commit 3.4.0 - -# ============================================================================== -# The section below is reserved for Docker image versions. - -# TODO: Move this section - consider using a different file for the repository template dependencies. -# docker/ghcr.io/anchore/grype v0.69.1@sha256:d41fcb371d0af59f311e72123dff46900ebd6d0482391b5a830853ee4f9d1a76 # SEE: https://github.com/anchore/grype/pkgs/container/grype -# docker/ghcr.io/anchore/syft v0.92.0@sha256:63c60f0a21efb13e80aa1359ab243e49213b6cc2d7e0f8179da38e6913b997e0 # SEE: https://github.com/anchore/syft/pkgs/container/syft -# docker/ghcr.io/gitleaks/gitleaks v8.18.0@sha256:fd2b5cab12b563d2cc538b14631764a1c25577780e3b7dba71657d58da45d9d9 # SEE: https://github.com/gitleaks/gitleaks/pkgs/container/gitleaks -# docker/ghcr.io/igorshubovych/markdownlint-cli v0.37.0@sha256:fb3e79946fce78e1cde84d6798c6c2a55f2de11fc16606a40d49411e281d950d # SEE: https://github.com/igorshubovych/markdownlint-cli/pkgs/container/markdownlint-cli -# docker/ghcr.io/make-ops-tools/gocloc latest@sha256:6888e62e9ae693c4ebcfed9f1d86c70fd083868acb8815fe44b561b9a73b5032 # SEE: https://github.com/make-ops-tools/gocloc/pkgs/container/gocloc -# docker/ghcr.io/nhs-england-tools/github-runner-image 20230909-321fd1e-rt@sha256:ce4fd6035dc450a50d3cbafb4986d60e77cb49a71ab60a053bb1b9518139a646 # SEE: https://github.com/nhs-england-tools/github-runner-image/pkgs/container/github-runner-image -# docker/hadolint/hadolint 2.12.0-alpine@sha256:7dba9a9f1a0350f6d021fb2f6f88900998a4fb0aaf8e4330aa8c38544f04db42 # SEE: https://hub.docker.com/r/hadolint/hadolint/tags -# docker/hashicorp/terraform 1.5.6@sha256:180a7efa983386a27b43657ed610e9deed9e6c3848d54f9ea9b6cb8a5c8c25f5 # SEE: https://hub.docker.com/r/hashicorp/terraform/tags -# docker/koalaman/shellcheck latest@sha256:e40388688bae0fcffdddb7e4dea49b900c18933b452add0930654b2dea3e7d5c # SEE: https://hub.docker.com/r/koalaman/shellcheck/tags -# docker/mstruebing/editorconfig-checker 2.7.1@sha256:dd3ca9ea50ef4518efe9be018d669ef9cf937f6bb5cfe2ef84ff2a620b5ddc24 # SEE: https://hub.docker.com/r/mstruebing/editorconfig-checker/tags -# docker/sonarsource/sonar-scanner-cli 5.0.1@sha256:494ecc3b5b1ee1625bd377b3905c4284e4f0cc155cff397805a244dee1c7d575 # SEE: https://hub.docker.com/r/sonarsource/sonar-scanner-cli/tags +nodejs 20.11.0 +python 3.8.15 +poetry 1.6.1 +shellcheck 0.9.0 +direnv 2.32.2 +actionlint 1.6.26 diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 957d73f..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "recommendations": [ - "alefragnani.bookmarks", - "davidanson.vscode-markdownlint", - "dbaeumer.vscode-eslint", - "donjayamanne.githistory", - "eamodio.gitlens", - "editorconfig.editorconfig", - "esbenp.prettier-vscode", - "github.codespaces", - "github.github-vscode-theme", - "github.remotehub", - "github.vscode-github-actions", - "github.vscode-pull-request-github", - "hediet.vscode-drawio", - "johnpapa.vscode-peacock", - "mhutchie.git-graph", - "ms-azuretools.vscode-docker", - "ms-vscode-remote.remote-containers", - "ms-vscode-remote.remote-wsl", - "ms-vscode.hexeditor", - "ms-vscode.live-server", - "ms-vsliveshare.vsliveshare", - "redhat.vscode-xml", - "streetsidesoftware.code-spell-checker-british-english", - "tamasfe.even-better-toml", - "tomoki1207.pdf", - "vscode-icons-team.vscode-icons", - "vstirbu.vscode-mermaid-preview", - "wayou.vscode-todo-highlight", - "yzane.markdown-pdf", - "yzhang.dictionary-completion", - "yzhang.markdown-all-in-one" - ], - "unwantedRecommendations": [] -} diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 423458c..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "markdownlint.config": { - "MD013": false, - "MD024": { "siblings_only": true }, - "MD033": false - } -} diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..271a39c --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +- The use of sexualized language or imagery and unwelcome sexual attention or + advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic + address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..f19044b --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,63 @@ +# Contribution Guidelines + +## Raising an Issue + +If you raise an issue against this repository, please include as much information as possible to reproduce any bugs, +or specific locations in the case of content errors. + +## Contributing code + +To contribute code, please fork the repository and raise a pull request. + +Ideally pull requests should be fairly granular and aim to solve one problem each. It would also be helpful if they +linked to an issue. If the maintainers cannot understand why a pull request was raised, it will be rejected, +so please explain why the changes need to be made (unless it is self-evident). + +### Merge responsibility + +- It is the responsibility of the reviewer to merge branches they have approved. +- It is the responsibility of the author of the merge to ensure their merge is in a mergeable state. +- It is the responsibility of the maintainers to ensure the merge process is unambiguous and automated where possible. + +### Branch naming + +Branch names should be of the format: + +`aea-nnn-short-issue-description` + +Multiple branches are permitted for the same ticket. + +### Commit messages + +Commit messages should be formatted as follows: + +```text +AEA-NNN Summary of changes + +Longer description of changes if explaining rationale is necessary, +limited to 80 columns and spanning as many lines as you need. +``` + +Commits from a pull request get squashed into a single commit on merge, using the pull request title as the commit message. +Please format your pull request title using tags from [ESLint Convention](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-eslint) as follows: + +```text +Tag: [AEA-NNNN] - Short description +``` + +Tag can be one of: + +- `Fix` - for a bug fix. (Patch release) +- `Update` - either for a backwards-compatible enhancement or for a rule change that adds reported problems. (Patch release) +- `New` - implemented a new feature. (Minor release) +- `Breaking` - for a backwards-incompatible enhancement or feature. (Major release) +- `Docs` - changes to documentation only. (Patch release) +- `Build` - changes to build process only. (No release) +- `Upgrade` - for a dependency upgrade. (Patch release) +- `Chore` - for refactoring, adding tests, etc. (anything that isn't user-facing). (Patch release) + +Correct tagging is necessary for our automated versioning and release process ([Release](./RELEASE.md)). + +### Changelog + +Release changelogs are generated from the titles of pull requests merged into the `main` branch. Please ensure that your pull request title is sufficiently descriptive of the changes made. diff --git a/LICENCE.md b/LICENSE similarity index 94% rename from LICENCE.md rename to LICENSE index 0ead432..0ba95e8 100644 --- a/LICENCE.md +++ b/LICENSE @@ -1,6 +1,6 @@ -# MIT Licence +MIT License -Copyright (c) 2023 Crown Copyright NHS England. +Crown Copyright (c) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Makefile b/Makefile index b32ac1d..0d23865 100644 --- a/Makefile +++ b/Makefile @@ -1,37 +1,43 @@ -# This file is for you! Edit it to implement your own hooks (make targets) into -# the project as automated steps to be executed on locally and in the CD pipeline. +default: deep-clean install lint check-licenses build test -include scripts/init.mk +install: install-python install-hooks install-node -# ============================================================================== +install-python: + poetry install -# Example CI/CD targets are: dependencies, build, publish, deploy, clean, etc. +install-hooks: + poetry run pre-commit install --install-hooks --overwrite -dependencies: # Install dependencies needed to build and test the project @Pipeline - # TODO: Implement installation of your project dependencies +install-node: + npm ci -build: # Build the project artefact @Pipeline - # TODO: Implement the artefact build step +build: + npm run build -publish: # Publish the project artefact @Pipeline - # TODO: Implement the artefact publishing step +lint: lint-node lint-githubactions -deploy: # Deploy the project artefact to the target environment @Pipeline - # TODO: Implement the artefact deployment step +lint-node: + npm run lint -clean:: # Clean-up project resources (main) @Operations - # TODO: Implement project resources clean-up step +lint-githubactions: + actionlint -config:: # Configure development environment (main) @Configuration - # TODO: Use only 'make' targets that are specific to this project, e.g. you may not need to install Node.js - make \ - terraform-install +test: build + npm run test -# ============================================================================== +clean: + rm -rf coverage + rm -rf lib + rm -f tsconfig.tsbuildinfo -${VERBOSE}.SILENT: \ - build \ - clean \ - config \ - dependencies \ - deploy \ +deep-clean: clean + rm -rf .venv + find . -name 'node_modules' -type d -prune -exec rm -rf '{}' + + +check-licenses: check-licenses-node check-licenses-python + +check-licenses-node: + npm run check-licenses + +check-licenses-python: + scripts/check_python_licenses.sh diff --git a/README.md b/README.md index 4fe596d..7262e8e 100644 --- a/README.md +++ b/README.md @@ -1,112 +1,129 @@ -# Repository Template +# NHS EPS Spine Client -[![CI/CD Pull Request](https://github.com/nhs-england-tools/repository-template/actions/workflows/cicd-1-pull-request.yaml/badge.svg)](https://github.com/nhs-england-tools/repository-template/actions/workflows/cicd-1-pull-request.yaml) -[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=repository-template&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=repository-template) +![Build](https://github.com/NHSDigital/nhs-eps-spine-client/workflows/release/badge.svg?branch=main) -Start with an overview or a brief description of what the project is about and what it does. For example - +This repository contains the code to invoke the Spine client, utilised in -Welcome to our repository template designed to streamline your project setup! This robust template provides a reliable starting point for your new projects, covering an essential tech stack and encouraging best practices in documenting. +## Functionality -This repository template aims to foster a user-friendly development environment by ensuring that every included file is concise and adequately self-documented. By adhering to this standard, we can promote increased clarity and maintainability throughout your project's lifecycle. Bundled within this template are resources that pave the way for seamless repository creation. Currently supported technologies are: +This repository encompasses the code for invoking the Spine client, designed for interaction with the Spine API. It serves as a versatile NPM dependency for both and the Prescription Tracker application. -- Terraform -- Docker +### Usage -Make use of this repository template to expedite your project setup and enhance your productivity right from the get-go. Enjoy the advantage of having a well-structured, self-documented project that reduces overhead and increases focus on what truly matters - coding! +To integrate this into your project, install the package using the following: +- command line +```bash +npm install @nhs/eps-spine-client +``` +- package.json +``` +"@nhs/eps-spine-client": "latest" +``` -## Table of Contents +## Project Structure -- [Repository Template](#repository-template) - - [Table of Contents](#table-of-contents) - - [Setup](#setup) - - [Prerequisites](#prerequisites) - - [Configuration](#configuration) - - [Usage](#usage) - - [Testing](#testing) - - [Design](#design) - - [Diagrams](#diagrams) - - [Modularity](#modularity) - - [Contributing](#contributing) - - [Contacts](#contacts) - - [Licence](#licence) +- `.devcontainer` Contains a dockerfile and vscode devcontainer definition +- `.github` Contains github workflows that are used for building and deploying from pull requests and releases +- `scripts` Contains a script for checking Python licenses +- `src` Contains the source code for the project +- `tests` Contains the tests for the project -## Setup +## Contributing -By including preferably a one-liner or if necessary a set of clear CLI instructions we improve user experience. This should be a frictionless installation process that works on various operating systems (macOS, Linux, Windows WSL) and handles all the dependencies. +Contributions to this project are welcome from anyone, providing that they conform to the [guidelines for contribution](./CONTRIBUTING.md) and the [community code of conduct](./CODE_OF_CONDUCT.md). -Clone the repository +### Licensing -```shell -git clone https://github.com/nhs-england-tools/repository-template.git -cd nhs-england-tools/repository-template -``` +This code is dual licensed under the MIT license and the OGL (Open Government License). Any new work added to this repository must conform to the conditions of these licenses. In particular this means that this project may not depend on GPL-licensed or AGPL-licensed libraries, as these would violate the terms of those libraries' licenses. -### Prerequisites +The contents of this repository are protected by Crown Copyright (C). -The following software packages, or their equivalents, are expected to be installed and configured: +## Development -- [docker](https://www.docker.com/) container runtime or a compatible tool, e.g. [podman](https://podman.io/), -- [asdf](https://asdf-vm.com/) version manager, -- [GNU make](https://www.gnu.org/software/make/) 3.82 or later, -- [GNU coreutils](https://www.gnu.org/software/coreutils/) and [GNU binutils](https://www.gnu.org/software/binutils/) may be required to build dependencies like Python, which may need to be compiled during installation. For macOS users, this has been scripted and automated by the `dotfiles` project; please see this [script](https://github.com/nhs-england-tools/dotfiles/blob/main/assets/20-install-base-packages.macos.sh) for details, -- [Python](https://www.python.org/) required to run Git hooks, -- [jq](https://jqlang.github.io/jq/) a lightweight and flexible command-line JSON processor. +It is recommended that you use visual studio code and a devcontainer as this will install all necessary components and correct versions of tools and languages. +See for details on how to set this up on your host machine. +There is also a workspace file in .vscode that should be opened once you have started the devcontainer. The workspace file can also be opened outside of a devcontainer if you wish. -> [!NOTE]
-> The version of GNU make available by default on macOS is earlier than 3.82. You will need to upgrade it or certain `make` tasks will fail. On macOS, you will need [homebrew](https://brew.sh/) installed, then to install `make`, like so: -> -> ```shell -> brew install make -> ``` -> -> You will then see instructions to fix your `$PATH` variable to make the newly installed version available. If you are using [dotfiles](https://github.com/nhs-england-tools/dotfiles), this is all done for you. +All commits must be made using [signed commits](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits) -### Configuration +Once the steps at the link above have been completed. Add to your ~/.gnupg/gpg.conf as below: -Installation and configuration of the toolchain dependencies +``` +use-agent +pinentry-mode loopback +``` -```shell -make config +and to your ~/.gnupg/gpg-agent.conf as below: + +``` +allow-loopback-pinentry ``` -## Usage +As described here: + -After a successful installation, provide an informative example of how this project can be used. Additional code snippets, screenshots and demos work well in this space. You may also link to the other documentation resources, e.g. the [User Guide](./docs/user-guide.md) to demonstrate more use cases and to show more features. +You will need to create the files, if they do not already exist. +This will ensure that your VSCode bash terminal prompts you for your GPG key password. -### Testing +You can cache the gpg key passphrase by following instructions at -There are `make` tasks for you to configure to run your tests. Run `make test` to see how they work. You should be able to use the same entry points for local development as in your CI pipeline. +### CI Setup -## Design +The GitHub Actions require a secret to exist on the repo called "SONAR_TOKEN". +This can be obtained from [SonarCloud](https://sonarcloud.io/) +as described [here](https://docs.sonarsource.com/sonarqube/latest/user-guide/user-account/generating-and-using-tokens/). +You will need the "Execute Analysis" permission for the project (NHSDigital_nhs-eps-spine-client) in order for the token to work. -### Diagrams +### Pre-commit hooks -The [C4 model](https://c4model.com/) is a simple and intuitive way to create software architecture diagrams that are clear, consistent, scalable and most importantly collaborative. This should result in documenting all the system interfaces, external dependencies and integration points. +Some pre-commit hooks are installed as part of the install above, to run basic lint checks and ensure you can't accidentally commit invalid changes. +The pre-commit hook uses python package pre-commit and is configured in the file .pre-commit-config.yaml. +A combination of these checks are also run in CI. -![Repository Template](./docs/diagrams/Repository_Template_GitHub_Generic.png) +### Make commands -### Modularity +There are `make` commands that are run as part of the CI pipeline and help alias some functionality during development. -Most of the projects are built with customisability and extendability in mind. At a minimum, this can be achieved by implementing service level configuration options and settings. The intention of this section is to show how this can be used. If the system processes data, you could mention here for example how the input is prepared for testing - anonymised, synthetic or live data. +#### Install targets -## Contributing +- `install` Installs project dependencies + +#### Build targets + +- `build` Builds the project + +#### Linting and testing + +- `lint` Performs linting for all code +- `test` Runs tests for the project + +#### Clean and deep-clean targets + +- `clean` Clears up any files that have been generated by building or testing locally +- `deep-clean` Runs clean target and also removes any node_modules installed locally + +#### Check licenses -Describe or link templates on how to raise an issue, feature request or make a contribution to the codebase. Reference the other documentation files, like +- `check-licenses` Checks licenses for all packages used -- Environment setup for contribution, i.e. `CONTRIBUTING.md` -- Coding standards, branching, linting, practices for development and testing -- Release process, versioning, changelog -- Backlog, board, roadmap, ways of working -- High-level requirements, guiding principles, decision records, etc. +### GitHub folder -## Contacts +This .github folder contains workflows and templates related to github -Provide a way to contact the owners of this project. It can be a team, an individual or information on the means of getting in touch via active communication channels, e.g. opening a GitHub discussion, raising an issue, etc. +- `dependabot.yml` Dependabot definition file +- `pull_request_template.yml` Template for pull requests -## Licence +Workflows are in the .github/workflows folder -> The [LICENCE.md](./LICENCE.md) file will need to be updated with the correct year and owner +- `combine-dependabot-prs.yml` Workflow for combining dependabot pull requests. Runs on demand +- `dependabot_auto_approve_and_merge.yml` Workflow to auto merge dependabot updates +- `pr-link.yaml` This workflow template links Pull Requests to Jira tickets and runs when a pull request is opened +- `pr_title_check.yml` Workflow to check the format of a pull request is compliant with the project standards. See [guidelines for contribution](./CONTRIBUTING.md) for details +- `pull_request.yml` Called when pull request is opened or updated. Runs quality_checks.yml +- `quality_checks.yml` Workflow verifies and enhances code quality through setup, dependencies, checks, and SonarCloud scanning +- `release.yml` Run when code is merged to main branch or a tag starting v is pushed. Calls quality_checks.yml +- `rename_dependabot_prs.yml` Renames dependabot pull requests to comply with project standards -Unless stated otherwise, the codebase is released under the MIT License. This covers both the codebase and any sample code in the documentation. +### Running a Release -Any HTML or Markdown documentation is [© Crown Copyright](https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/uk-government-licensing-framework/crown-copyright/) and available under the terms of the [Open Government Licence v3.0](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/). +Details of running the release can be found in [RELEASE.md](./RELEASE.md) diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 0000000..149264d --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,25 @@ +# Release + +Managing versioning and releases is done using [semantic-release](https://semantic-release.gitbook.io/semantic-release/). This is a tool that automatically determines the next version number based on the commit history. It also automatically creates a release and publishes it to GitHub Packages. + +## Commit messages + +Commit messages must follow a commit format inspired by the [esLint conventional commit](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-eslint) format. This is enforced with a github workflow on all pull requests. The format is as follows: + +```text +: [ticket/dependabot] - + +Eg: +Docs: [AEA-1234] - Update README.md +Upgrade: [dependabot] - Bump pip-licenses from 4.3.3 to 4.3.4 +``` + +Supported tags and their meanings are defined in the [contributing guidelines](./CONTRIBUTING.md). + +## Running a release + +Once all desired pull requests have been merged to `main`, a release can be run using the `Release to GitHub Packages` workflow. This will: + +- Run quality checks on the code, including license checks, linting, and unit tests. +- Run semantic-release to determine the next version number and create a release. +- Publish the release to GitHub Packages. diff --git a/VERSION b/VERSION deleted file mode 100644 index f25af7f..0000000 --- a/VERSION +++ /dev/null @@ -1 +0,0 @@ -${yyyy}${mm}${dd} diff --git a/docs/adr/ADR-001_Use_git_hook_and_GitHub_action_to_check_the_editorconfig_compliance.md b/docs/adr/ADR-001_Use_git_hook_and_GitHub_action_to_check_the_editorconfig_compliance.md deleted file mode 100644 index 35f82b7..0000000 --- a/docs/adr/ADR-001_Use_git_hook_and_GitHub_action_to_check_the_editorconfig_compliance.md +++ /dev/null @@ -1,148 +0,0 @@ -# ADR-001: Use git hook and GitHub Action to check the `.editorconfig` compliance - ->| | | ->| ------------ | ---------------------------------------------------- | ->| Date | `04/07/2023` | ->| Status | `RFC` | ->| Deciders | `Engineering` | ->| Significance | `Construction techniques` | ->| Owners | `Dan Stefaniuk, Amaan Ibn-Nasar, Thomas Judd-Cooper` | - ---- - -- [ADR-001: Use git hook and GitHub Action to check the `.editorconfig` compliance](#adr-001-use-git-hook-and-github-action-to-check-the-editorconfig-compliance) - - [Context](#context) - - [Decision](#decision) - - [Assumptions](#assumptions) - - [Drivers](#drivers) - - [Options](#options) - - [Options 1: The pre-commit project](#options-1-the-pre-commit-project) - - [Options 2a: Custom shell script](#options-2a-custom-shell-script) - - [Options 2b: Docker-based custom shell script](#options-2b-docker-based-custom-shell-script) - - [Option 3: A GitHub Action from the Marketplace](#option-3-a-github-action-from-the-marketplace) - - [Outcome](#outcome) - - [Rationale](#rationale) - - [Consequences](#consequences) - - [Compliance](#compliance) - - [Notes](#notes) - - [Actions](#actions) - - [Tags](#tags) - -## Context - -As part of the Repository Template project a need for a simple text formatting feature using the [EditorConfig](https://editorconfig.org/) rules was identified that is accessible and consistent for all contributors. To ensure that formatting rules are applied, a compliance check has to be implemented on a developer workstation and as a part of the CI/CD pipeline. This will establish a fast feedback loop and a fallback option, if the former has not worked. - -## Decision - -### Assumptions - -This decision is based on the following assumptions that are used to form a set of generic requirements for the implementation as a guide. A solution should be - -- Cross-platform and portable, supporting systems like - - macOS - - Windows WSL (Ubuntu) - - Ubuntu and potentially other Linux distributions like Alpine -- Configurable - - can run on a file or a directory - - can be turned on/off entirely -- Run locally (aka developer workstation) and remotely (aka CI/CD pipeline) -- Reusable and avoid code duplication - -### Drivers - -Implementation of this compliance check (like text encoding, line endings, tabs vs. spaces etc.) will help with any potential debate or discussion, removing personal preferences and opinions, enabling teams to focus on delivering value to the product they work on. - -Other linting tools like for example [Prettier](https://prettier.io/) and [ESLint](https://eslint.org/) are not considered here as they are code formatting tools dedicated to specific technologies and languages. The main drivers for this decision are the style consistency across all files in the codebase and to eliminate any disruptive changes introduced based on preferences. EditorConfig rules are recognised and supported by most if not all major editors and IDEs. - -Here is the recommended ruleset: - -```console -charset = utf-8 -end_of_line = lf -indent_size = 2 -indent_style = space -insert_final_newline = true -trim_trailing_whitespace = true -``` - -### Options - -#### Options 1: The [pre-commit](https://pre-commit.com/) project - -- Pros - - Python is installed on most if not all platforms - - A pythonist friendly tool - - Well-documented -- Cons - - Dependency on Python even for a non-Python project - - Potential versioning issues with Python runtime and dependencies compatibility - - Lack of process isolation, access to resources with user-level privileges - - Dependency on multiple parties and plugins - -#### Options 2a: Custom shell script - -- Pros - - Execution environment is installed everywhere, no setup required - - Ease of maintainability and testability - - It is a simple solution -- Cons - - May potentially require more coding in Bash - - Requires shell scripting skills - -#### Options 2b: Docker-based custom shell script - -This option is an extension built upon option 2a. - -- Pros - - Cross-platform compatibility - - Isolation of the process dependencies and runtime - - Docker is an expected dependency for most/all projects -- Cons - - Requires Docker as a preinstalled dependency - - Requires basic Docker skills - -#### Option 3: A GitHub Action from the Marketplace - -- Pros - - Usage of a GitHub native functionality -- Cons - - Reliance on the GitHub DSL (coding in yaml) may lead to less portable solution - - Implementation of the functionality has to be duplicated for the git hook - -### Outcome - -The decision is to implement the Option 2b for all the git hooks included in this repository template with in conjunction the Option 1 as the git hook executor. This will allow for flexibility and extensibility of the git hooks used by a repository built upon this template. - -### Rationale - -A choice of shell scripting along with Docker offers a good support for simplicity, process isolation, portability across the operating systems and reuse of the same code and its configuration. This approach makes it consistent for a local environment and the CI/CD pipeline, where the process can be gated and compliance enforced. - -## Consequences - -As a result of the above decision - -- a single Bash script will be implemented -- it will be placed in the `scripts/githooks` directory -- the name of the file will be `check-file-format.sh` -- there will be a `pre-commit` runner installed by the [pre-commit](https://pre-commit.com/) framework using a make target -- the GitHub Action will call the git hook `check-file-format.sh` script directly -- and a couple of `Makefile` targets like `config`, `githooks-config` will be implemented to bootstrap the project - -The intention of this decision is to guide any other git hook and GitHub Action implementations. - -## Compliance - -Both, the git hook and the GitHub Action should be executed automatically as part of the developer workflow. - -## Notes - -There is an emerging practice to use projects like [act](https://github.com/nektos/act) to make GitHub Actions even more portable. ~~The recommendation is for this tool to be assessed at further stages of the [nhs-england-tools/repository-template](https://github.com/nhs-england-tools/repository-template) project implementation, in the context of this decision record.~~ Update: Please see the [Test GitHub Actions locally](../user-guides/Test_GitHub_Actions_locally.md) user guide. - -## Actions - -- [x] Ensure the naming convention of the other git hooks follows the pattern set by the `scripts/githooks/check-file-format.sh` script -- [ ] ~~Relocate shell scripts that are called by the GitHub workflow, currently placed in the `scripts` directory, to `.github/workflows/scripts`.~~ Update: Scripts provided along with this repository template are made to be agnostic from any provider's workflow implementation; this is by design. Therefore, the `scripts` directory is the right place for the shell scripts. - -## Tags - -`#maintainability, #testability, #simplicity, #security` diff --git a/docs/adr/ADR-002_Scan_repository_for_hardcoded_secrets.md b/docs/adr/ADR-002_Scan_repository_for_hardcoded_secrets.md deleted file mode 100644 index 77c4a13..0000000 --- a/docs/adr/ADR-002_Scan_repository_for_hardcoded_secrets.md +++ /dev/null @@ -1,149 +0,0 @@ -# ADR-002: Scan repository for hardcoded secrets - ->| | | ->| ------------ | ------------------------------------------------------------- | ->| Date | `05/06/2023` | ->| Status | `RFC` | ->| Deciders | `Engineering` | ->| Significance | `Construction techniques` | ->| Owners | `Dan Stefaniuk, Jon Pearce, Tamara Goldschmidt, Tim Rickwood` | - ---- - -- [ADR-002: Scan repository for hardcoded secrets](#adr-002-scan-repository-for-hardcoded-secrets) - - [Context](#context) - - [Decision](#decision) - - [Assumptions](#assumptions) - - [Drivers](#drivers) - - [Options](#options) - - [Outcome](#outcome) - - [Rationale](#rationale) - - [Consequences](#consequences) - - [Compliance](#compliance) - - [Notes](#notes) - - [Actions](#actions) - - [Tags](#tags) - -## Context - -To safeguard sensitive details like passwords, API keys etc. from being incorporated into code repositories, it is imperative that we employ secret scanning of the code. This safeguarding process should be conducted in two key areas. Firstly, on the developer's machine, we utilise a git pre-commit hook to halt the inclusion of any secrets within the committed code. Secondly, as a safety net, a similar scan should be integrated into the CI/CD pipeline. Should a secret be detected within this pipeline, it is crucial that the pipeline serves as a gate to fail the build, subsequently blocking any related pull requests. - -## Decision - -### Assumptions - -There is already a well-known and fit-for-purpose tool `git-secrets` in use that was selected as the outcome of a decision made around 4 years ago. The purpose of this document is to review that decision. - -### Drivers - -Within NHS England, we are observing an adoption of the `gitleaks` tool, which is an alternative to `git-secrets`. - -### Options - -There are three options presented in this decision record. - -1. [git-secrets](https://github.com/awslabs/git-secrets) - - - Repository metadata - - Contributions - - Number of contributors: **28** - - Number of commits: **110** - - Commit dates / frequency: **last commit more than a half a year ago, very low frequency** - - Number of Stars & Forks: **11.1k & 1.1k** - - Implementation technologies: **Shell script** - - Licence: **[Apache-2.0](https://choosealicense.com/licenses/apache-2.0/)** - - Features - - [x] Scan whole history - - [x] Scan single commit - - [ ] Predefined set of rules: _A very limited number of rules_ - - [x] Definition of custom rules - - [x] Definition of custom exclusions patterns - - [ ] Entropy detection - - [ ] Pre-backed Docker image - - - Pros - - A well-known tool that has been around for a while - - Cons - - Rules and exclusion patterns are not easy to manage as no comments or metadata are allowed in the definition - - No pre-backed Docker image - - Activity of the repo has dropped (last commit a while ago) - -2. [trufflehog](https://github.com/trufflesecurity/trufflehog) - - - Repository metadata - - Contributions - - Number of contributors: **69** - - Number of commits: **2050** - - Commit dates / frequency: **last commit today, high frequency** - - Number of Stars & Forks: **11.3k & 1.3k** - - Implementation technologies: **Go language** - - Licence: **[AGPL-3.0](https://choosealicense.com/licenses/agpl-3.0/)** - - Features - - [x] Scan whole history - - [x] Scan single commit - - [ ] Predefined set of rules - - [x] Definition of custom rules - - [x] Definition of custom exclusions patterns: _Only whole files_ - - [x] Entropy detection - - [x] Pre-backed Docker image - - - Pros - - Entropy detection - - Fast to scan the whole history - - Cons - - [AGPL-3.0](https://choosealicense.com/licenses/agpl-3.0/) licence comes with conditions - -3. [gitleaks](https://github.com/gitleaks/gitleaks) - - - Repository metadata - - - Contributions - - Number of contributors: **135** - - Number of commits: **929** - - Commit dates / frequency: **last commit three days ago, medium frequency** - - Number of Stars & Forks: **13k & 1.2k** - - Implementation technologies: **Go language** - - Licence: **[MIT](https://choosealicense.com/licenses/mit/)** - - Features - - [x] Scan whole history - - [x] Scan single commit - - [x] Predefined set of rules - - [x] Definition of custom rules - - [x] Definition of custom exclusions patterns - - [x] Entropy detection: _Set against a rule_ - - [x] Pre-backed Docker image - - - Pros - - Ease of managing rules and exclusion patterns as the configuration file uses the `toml` format - - Entropy detection at a rule level - - Fast to scan the whole history - - Cons - - No full entropy detection as an option - -### Outcome - -The decision is to support Option 3 and endorse the usage of the `gitleaks` tool. This decision is reversible, and the state of secret scan tooling will be monitored by means of the NHS England Tech Radar. - -### Rationale - -This decision was made with the understanding that the chosen tool must support the NHS England [Coding in the Open](https://github.com/nhsx/open-source-policy) initiative/policy and also be compatible with usage in private repositories. - -## Consequences - -As a result of this decision, any new repository created from the repository template should contain a secret scanning implementation based on `gitleaks` provided as a GitHub Action. - -## Compliance - -Compliance will be checked by the [GitHub Scanning Tool](https://github.com/NHSDigital/github-scanning-utils). - -## Notes - -This is an addition to the [GitHub Secret Scanning](https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning) feature that should be considered to be turned on for any public repository within the NHS England GitHub subscription. - -## Actions - -- [ ] Update the NHS England [Software Engineering Quality Framework](https://github.com/NHSDigital/software-engineering-quality-framework) accordingly - -## Tags - -`#maintainability, #testability, #simplicity, #security` diff --git a/docs/adr/ADR-003_Acceptable_use_of_GitHub_PAT_and_Apps_for_authN_and_authZ.md b/docs/adr/ADR-003_Acceptable_use_of_GitHub_PAT_and_Apps_for_authN_and_authZ.md deleted file mode 100644 index cd82a32..0000000 --- a/docs/adr/ADR-003_Acceptable_use_of_GitHub_PAT_and_Apps_for_authN_and_authZ.md +++ /dev/null @@ -1,244 +0,0 @@ -# ADR-003: Acceptable use of GitHub authentication and authorisation mechanisms - ->| | | ->| ------------ | --- | ->| Date | `04/09/2023` | ->| Status | `RFC` | ->| Deciders | `Engineering` | ->| Significance | `Construction techniques` | ->| Owners | `Amaan Ibn-Nasar, Jacob Gill, Dan Stefaniuk` | - ---- - -- [ADR-003: Acceptable use of GitHub authentication and authorisation mechanisms](#adr-003-acceptable-use-of-github-authentication-and-authorisation-mechanisms) - - [Context](#context) - - [Decision](#decision) - - [Assumptions](#assumptions) - - [Drivers](#drivers) - - [Options](#options) - - [Outcome](#outcome) - - [Built-in authentication using `GITHUB_TOKEN` secret](#built-in-authentication-using-github_token-secret) - - [GitHub PAT (fine-grained Personal Access Token)](#github-pat-fine-grained-personal-access-token) - - [GitHub App](#github-app) - - [Rationale](#rationale) - - [Notes](#notes) - - [GitHub App setup](#github-app-setup) - - [Recommendation for GitHub Admins](#recommendation-for-github-admins) - - [Diagram](#diagram) - - [Context diagram showing the GitHub App setup](#context-diagram-showing-the-github-app-setup) - - [Authentication flow diagram](#authentication-flow-diagram) - - [Limitations](#limitations) - - [Examples of acquiring access token](#examples-of-acquiring-access-token) - - [Actions](#actions) - - [Tags](#tags) - - [Footnotes](#footnotes) - -## Context - -As teams increasingly adopt GitHub and invest in refining development processes, there is a growing need to facilitate automated bot access to repositories, for tasks such as managing Pull Requests or integrating self-hosted runners with preferred Cloud providers. While GitHub's official documentation provides detailed technical instructions, it might not always offer a clear and holistic understanding of the platform's authentication and authorisation mechanisms. This document seeks to bridge that gap. It elucidates not just the "_how_" but also the "_why_", "_when_", and "_what_" behind these mechanisms, aiming to promote both effective and secure usage. - -## Decision - -### Assumptions - -_A **GitHub App** is a type of integration that you can build to interact with and extend the functionality of GitHub. You can build a GitHub App to provide flexibility and reduce friction in your processes, without needing to sign in a user or create a service account._ [^1] - -_**Personal access tokens** are an alternative to using passwords for authentication to GitHub when using the GitHub API or the command line. Personal access tokens are intended to access GitHub resources on behalf of yourself._ [^2] - -_When you enable GitHub Actions, GitHub installs a GitHub App on your repository. The **GITHUB_TOKEN** secret is a GitHub App installation access token. You can use the installation access token to authenticate on behalf of the GitHub App installed on your repository._ [^3] - -### Drivers - -The aim of this decision record, or more precisely, this guide, is to provide clear guidelines on the appropriate use of GitHub's authentication and authorisation mechanisms. Our objective is to ensure that any automated process utilises correct authentication when executing GitHub Actions and Workflows. These processes underpin the implementation of the CI/CD (Continuous Integration and Continuous Delivery) pipeline. By adhering to these guidelines, we can maintain robust, secure and effective operations. - -### Options - -There are three options available to support automated GitHub Action and Workflow authentication processes: - -1. [Built-in authentication](https://docs.github.com/en/actions/security-guides/automatic-token-authentication) using `GITHUB_TOKEN` secret - - - ➕ **No set-up required**. It works effortlessly, even for forked repositories. - - ➕ **The token can only access the repository containing the workflow file**. This token cannot be used to access other private repositories. - - ➖ **The token can only access a repository containing the workflow file**. If you need to access other private repositories or require write access to other public repositories this token will not be sufficient. - - ➖ **The token cannot trigger other workflows**. If you have a workflow that creates a release and another workflow that runs when someone creates a release, the first workflow will not trigger the second workflow if it utilises this token based mechanism for authentication. - -2. [GitHub PAT](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) (fine-grained Personal Access Token) - - - ➕ **Simple to set up**. You can create a [fine-grained personal access token](https://github.com/settings/tokens?type=beta) with a repository scope. Classic personal access token should never be used. - - ➕ **GitHub PAT provides a more fine-grained permission model** than the built-in `GITHUB_TOKEN` - - ➕ **The token can trigger other workflows**. - - ➖ **It is bound to a person**. The owner of the token leaving the organisation can cause your workflow to break. - -3. [GitHub App](https://docs.github.com/en/apps/creating-github-apps/about-creating-github-apps/about-creating-github-apps) - - - ➕ **You can control which repositories your token has access to** by installing the GitHub App to selected repositories. - - ➕ **An organisation can own multiple GitHub Apps** and they do not consume a team seat. - - ➕ **GitHub App provides a more fine-grained permission model** than the built-in `GITHUB_TOKEN` - - ➕ **The token can trigger other workflows**. - - ➖ **Not very well documented**. Despite the extensive content of the GitHub documentation, it does not effectively communicate the pros & cons, use-cases and comparison of each authentication method. This was one of the reasons we created this ADR. - - ➖ **The setup is a bit more complicated**. - -### Outcome - -#### Built-in authentication using `GITHUB_TOKEN` secret - -A `GITHUB_TOKEN` is automatically generated and used within GitHub Action and Workflow for tasks related to the current repository such as creating or updating issues, pushing commits, etc. - -- **Scope**: The `GITHUB_TOKEN` is automatically created by GitHub in each run of a GitHub Action and Workflow, with its scope restricted to the repository initiating the workflow. The permissions of the `GITHUB_TOKEN` are limited to read and write access to the repository files, with an exception of write access to the `.github/workflows` directory. -- **Life Span**: The `GITHUB_TOKEN` has a temporary lifespan automatically expiring after the completion of the job that initiated its creation. - -This method enables basic operations expected from the repository pipeline, like accessing GitHub secret variables. - -#### GitHub PAT (fine-grained Personal Access Token) - -Use personal access token when: - -- **Scripted access**: When you are writing scripts that automate tasks related to your repositories PATs can be a good choice. These tokens can authenticate your script with GitHub allowing it to perform various operations like cloning repositories, creating issues, or fetching data from the API. Since PATs can act with nearly all the same scopes as a user, they can be a versatile tool for script-based interactions with your repositories. - -- **Command-line access**: If you are directly using the GitHub API from the command-line (e.g. with `curl`), PATs provide a convenient way to authenticate. They allow you to perform a wide range of actions, including getting the number of stars on a repository, posting a comment on an issue or triggering a new build or deployment. In this use case a common task that a contributor has to perform daily can be automated using a PAT generated with a scope specifically for it. - -- **Two-Factor Authentication (2FA)**: If you have enabled 2FA for added account security, performing `https` Git operations like clone, fetch, pull or push will require a PAT instead of a password. This helps ensure that operations remain secure even from the command-line. - -Do not use it when: - -- **Sharing your account**: PATs should never be used to provide access to your GitHub account to others. Instead, use GitHub's built-in features for collaboration and access management, such as adding collaborators to repositories or using organisations and teams. - -- **Public repositories or code**: PATs provide broad access to your account, so you should never embed them in your code, especially if that code is public. This could allow someone to take control of your account, modify your repositories or steal your data. The [scan secrets functionality](../../docs/user-guides/Scan_secrets.md) that is part of this repository template should prevent you from doing so anyway. - -- **Broad permissions**: While PATs can have broad permissions, you should aim to restrict each token's scope to what is necessary for its purpose. For instance, a token used only for reading repository metadata does not need write or admin access. - -- **Long-term usage without rotation**: To limit potential exposure of your PAT, it is recommended to periodically change or "rotate" your tokens. This is a common security best practice for all kinds of secret keys or tokens. - -This method of authentication and authorisation using the fine-grained PAT for the purpose of automation should mostly be used by the GitHub organisation owners, administrators and maintainers. - -#### GitHub App - -Use app when: - -- **Acting on behalf of a user or an organisation**: GitHub Apps can be installed directly onto an organisation or a user account and can access specific repositories. They act as separate entities and do not need a specific user to authenticate actions, thus separating the app's actions from individual users and preventing user-related issues (like a user leaving the organisation) from disrupting the app's operation. In this model, a GitHub App can act on behalf of a user to perform actions that the user has permissions for. For example, if a GitHub App is used to manage issues in a repository, it can act on behalf of a user to open, close, or comment on issues. The actions the app can perform are determined by the user's permissions and the permissions granted to the app during its installation. - -- **When you need fine-grained permissions**: GitHub Apps provide more detailed control over permissions than the classic PAT, which should no longer be used. You can set access permissions on a per-resource basis (issues, pull requests, repositories, etc.). This allows you to follow the principle of least privilege, granting your app only the permissions it absolutely needs. - -- **Webhook events**: GitHub Apps can be configured to receive a variety of webhook events. Unlike personal tokens, apps can receive granular event data and respond accordingly. For instance, an app can listen for `push` events to trigger a CI/CD pipeline or `issue_comment` events to moderate comments. - -- **Server-to-server communication**: Unlike users, GitHub Apps have their own identities and can perform actions directly on a repository without a user action triggering them. They are associated with the GitHub account (individual or organisation) that owns the app, not necessarily the account that installed the app. In this model the GitHub App can perform actions based on the permissions it was given during setup. These permissions are separate from any user permissions and allow the app to interact with the GitHub API directly. For example, an app might be set up to automatically run a test suite whenever code is pushed to a repository. This action would happen regardless of which user pushed the code. - -This method of authentication and authorisation is intended for the engineering teams to implement and support automated processes. Setting up the [GitHub OAuth App](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps) access is outside the scope of this document as this mechanism should not be employed in the context of development process automation. - -### Rationale - -This guide describes the essence of the fundamental aspects of GitHub authentication and authorisation mechanisms along with the common use cases identified by the GitHub organisation administrators of the NHS England. - -## Notes - -### GitHub App setup - -To be executed by a GitHub organisation administrator: - -- Identify the GitHub repository name for which the team has requested a GitHub App integration -- Create a shared email address [england.[repository-name]-app@nhs.net](england.[repository-name]-app@nhs.net) by filling in the `New shared mailbox request` form using the Internal Portal (ServiceNow) - - Delegate access to this mailbox for the GitHub organisation owners, administrators and the engineering team -- Create a GitHub bot account named `[repository-name]-app` using the email address mentioned above. The bot account should not be added to the organisation; therefore, **no GitHub seat will be taken**. It serves as an identity, but authentication and authorisation are handled via the GitHub App. This avoids granting the bot admin permissions to the repository, enabling commits to be signed by that bot account. Access is controlled solely through the GitHub App. - - Use the `nhs.net` email address as the default and only email - - Set the email address as private - - Make profile private and hide any activity - - Block command line pushes that expose email - - Set up commit signing - - Flag unsigned commits as unverified -- [Register new GitHub App](https://docs.github.com/en/apps/creating-github-apps/registering-a-github-app/registering-a-github-app) under the `[repository-name]-app` bot account with a name following a pattern that could include information like `[Team] [Repository Name] [Purpose]`, which would help to search for and identify owners of the app once it is installed within the GitHub organisation - - Make note of the `App ID` - - Generate and store securely a `Private key` for the app - - Provide a `Homepage URL` to the repository this app will operate on - - Make this app `public` - - Set the relevant `Repository permissions` based on the team's requirements. There should be no organisation or account permissions set at all - -To be executed by a GitHub organisation owner: - -- Install the `[Team] [Repository Name] [Purpose]` app on the GitHub organisation and set repository access to the `[repository-name]` only - -#### Recommendation for GitHub Admins - -It is advisable to create a separate bot account for each service or programme. This approach fosters responsible ownership practices. It also allows the team to use the bot's identity for signing commits and integrating their service with other SaaS products, such as SonarCloud, without relying on individual team member accounts. Exceptions can be made on a case-by-case basis, allowing for the use of a central organisation account instead. - -### Diagram - -#### Context diagram showing the GitHub App setup - -```mermaid -C4Context - Enterprise_Boundary(b0, "Internal Developer Platform, part of the NHS England CoE") { - - Boundary(b1, "Service", "boundary") { - System(repo, "Repository", "Repository
[repository-name]") - System(github_app_runner, "GitHub App (runner)", "Bot app runner
for the repository") - } - Rel(repo, github_app_runner, "Is managed by") - - Boundary(b2, "Bot", "boundary") { - System(email_account, "NHSmail shared account", "Bot email
england.[repository-name]-app@nhs.net") - System(github_account, "GitHub account", "Bot user
[repository-name]-app
(not assigned to any org)") - System(github_app_registration, "GitHub App (registration)", "Bot app registration
'[Team] [Repository Name] [Purpose]'") - } - Rel(github_account, email_account, "Belongs to") - Rel(github_app_registration, github_account, "Is registered by") - - Boundary(b3, "GitHub Admins", "boundary") { - System(github_org, "GitHub organisation", "Org") - System(github_app_installation, "GitHub App (installation)", "Bot app installation
for the repository") - } - Rel(github_app_installation, github_org, "Is installed within") - - Rel(repo, github_org, "Belongs to") - Rel(repo, github_account, "Can accept contributions from") - Rel(github_app_runner, github_app_installation, "Authenticates via") - Rel(github_app_installation, github_app_registration, "Is an app installation of") - - UpdateElementStyle(repo, $bgColor="grey") - UpdateElementStyle(github_app_runner, $bgColor="grey") - } -``` - -Please see the above being implemented for the _update from template_ capability: - -- [Repository and GitHub App (runner)](https://github.com/nhs-england-tools/update-from-template-app) for the "Update from Template" app. The runner is built on a GitHub Action but it can be a serverless workload or self-hosted compute -- [GitHub account (bot)](https://github.com/update-from-template-app) linked to an `nhs.net` email address, but not part of any GitHub organisation -- [GitHub App (registration)](https://github.com/apps/nhs-england-update-from-template) to be installed within the GitHub organisations in use, e.g. `nhs-england-tools` - -#### Authentication flow diagram - -The diagram below represents all the steps needed for an app implementation (aka app runner) to be authenticated and authorised to perform operations defined by the GitHub App registration and installation. - -```mermaid -graph LR - A[Initialisation] -- App ID, App PK --> B[Generate JWT] - B -- JWT, Org name --> C[Get installation ID] - C -- JWT, Installation ID --> D[Generate Access Token] - D -- GITHUB_TOKEN --> E[Perform actions] -``` - -### Limitations - -- Only 100 app registrations are allowed per user or organisation, but there is [no limit on the number of installed apps](https://docs.github.com/en/apps/creating-github-apps/registering-a-github-app/registering-a-github-app#about-registering-github-apps) -- [Access rate limits apply](https://docs.github.com/en/apps/creating-github-apps/registering-a-github-app/rate-limits-for-github-apps) depending on the number of repositories or users within organisation -- The app name cannot exceed 34 characters - -### Examples of acquiring access token - -- [Bash](./assets/ADR-003/examples/bash/README.md) -- [Golang](./assets/ADR-003/examples/golang/README.md) -- [Node.js TypeScript (Octokit)](./assets/ADR-003/examples/nodejs/README.md) - This is our preferred method for implementing GitHub Apps. It is supported by the Octokit library, which is an official client for the GitHub API. -- [Python](./assets/ADR-003/examples/python/README.md) - -## Actions - -- [ ] Provide an example of commit signing by bot in the unattended mode, i.e. include a link on how this is implemented in the [Update from Template](https://github.com/nhs-england-tools/update-from-template-app/blob/c1b87f3aaa568caf4a8bfdd5b07d0c4ef88a2e4a/entrypoint.sh#L81) app. - -## Tags - -`#maintainability, #security` - -## Footnotes - -[^1]: [About creating GitHub Apps](https://docs.github.com/en/apps/creating-github-apps/about-creating-github-apps/about-creating-github-apps) -[^2]: [Managing your personal access tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) -[^3]: [Publishing and installing a package with GitHub Actions](https://docs.github.com/en/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions) diff --git a/docs/adr/ADR-XXX_Agree_CICD_pipeline_structure.md b/docs/adr/ADR-XXX_Agree_CICD_pipeline_structure.md deleted file mode 100644 index 1201690..0000000 --- a/docs/adr/ADR-XXX_Agree_CICD_pipeline_structure.md +++ /dev/null @@ -1,101 +0,0 @@ -# ADR-XXX: Agree CI/CD pipeline structure - ->| | | ->| ------------ | --- | ->| Date | `dd/mm/YYYY` _when the decision was last updated_ | ->| Status | `RFC by dd/mm/YYYY, Proposed, In Discussion, Pending Approval, Withdrawn, Rejected, Accepted, Deprecated, ..., Superseded by ADR-XXX or Supersedes ADR-XXX` | ->| Deciders | `Tech Radar, Engineering, Architecture, Solution Assurance, Clinical Assurance, Technical Review and Governance, Information Governance, Cyber Security, Live Services Board,` ... | ->| Significance | `Structure, Nonfunctional characteristics, Dependencies, Interfaces, Construction techniques,` ... | ->| Owners | | - ---- - -- [ADR-XXX: Agree CI/CD pipeline structure](#adr-xxx-agree-cicd-pipeline-structure) - - [Context](#context) - - [Decision](#decision) - - [Assumptions](#assumptions) - - [Drivers](#drivers) - - [Options](#options) - - [Outcome](#outcome) - - [Rationale](#rationale) - - [Consequences](#consequences) - - [Compliance](#compliance) - - [Notes](#notes) - - [Actions](#actions) - - [Tags](#tags) - -## Context - -Describe the context and the problem statement. Is there a relationship to other decisions previously made? Are there any dependencies and/or constraints within which the decision will be made? Do these need to be reviewed or validated? Please note that environmental limitations or restrictions such as accepted technology standards, commonly recognised and used patterns, engineering and architecture principles, organisation policies, governance and so on, may as an effect narrow down the choices. This should also be explicitly documented, as this is a point-in-time decision with the intention of being able to articulate it clearly and justify it later. - -Requirements: - -- Implement the exemplar CI/CD pipeline using GitHub workflows and actions -- Incorporate the four main CI/CD stages, which are as follows: - 1. Commit, max. execution time 2 mins - 2. Test, max. execution time 5 mins - 3. Build, max. execution time 3 mins - 4. Acceptance, max. execution time 10 mins -- Provide `publish` and `deploy` workflows as the complementary processes -- Maintain simplicity in the pipeline but ensure it is scalable and extensible for larger projects -- Enable parallel execution of jobs to speed up the overall process -- Prevent the workflow from being triggered twice, i.e. when pushing to a branch with an existing pull request -- Implement good CI/CD practices, such as: - - Setting the build time variables at the start of the process - - Storing the tooling versions like Terraform, Python and Node.js in the `./.tools-version` file - - Storing the software/project version in the `./VERSION` file - - Keeping the main workflow modular - - Ensuring a timeout is set for each job - - Listing environment variables - - Making actions portable, e.g. allowing them to be run on a workstation or on Azure DevOps using external scripts - -![CD Pipeline Structure](../diagrams/CD%20Pipeline%20Structure.png) - -## Decision - -### Assumptions - -Summarise the underlying assumptions in the environment in which you make the decision. This could be related to technology changes, forecast of the monetary and non-monetary costs, further delivery commitments, impactful external drivers etc., and any known unknowns that translate to risks. - -### Drivers - -List the decision drivers that motivate this change or course of action. This may include any identified risks and residual risks after applying the decision. - -### Options - -Consider a comprehensive set of alternative options; provide weighting if applicable. - -### Outcome - -State the decision outcome as a result of taking into account all of the above. Is it a reversible or irreversible decision? - -### Rationale - -Provide a rationale for the decision that is based on weighing the options to ensure that the same questions are not going to be asked again and again unless the decision needs to be superseded. - -For non-trivial decisions a comparison table can be useful for the reviewer. Decision criteria down one side, options across the top. You'll likely find decision criteria come from the Drivers section above. Effort can be an important driving factor. You may have an intuitive feel for this, but reviewers will not. T-shirt sizing the effort for each option may help communicate. - -## Consequences - -Describe the resulting context, after applying the decision. All the identified consequences should be listed here, not just the positive ones. Any decision comes with many implications. For example, it may introduce a need to make other decisions as an effect of cross-cutting concerns; it may impact structural or operational characteristics of the software, and influence non-functional requirements; as a result, some things may become easier or more difficult to do because of this change. What are the trade-offs? - -What are the conditions under which this decision no longer applies or becomes irrelevant? - -## Compliance - -Establish how the success is going to be measured. Once implemented, the effect might lend itself to be measured, therefore if appropriate a set of criteria for success could be established. Compliance checks of the decision can be manual or automated using a fitness function. If it is the latter this section can then specify how that fitness function would be implemented and whether there are any other changes to the codebase needed to measure this decision for compliance. - -## Notes - -Include any links to existing epics, decisions, dependencies, risks, and policies related to this decision record. This section could also include any further links to configuration items within the project or the codebase, signposting to the areas of change. - -It is important that if the decision is sub-optimal or the choice is tactical or misaligned with the strategic directions the risk related to it is identified and clearly articulated. As a result of that, the expectation is that a [Tech Debt](./tech-debt.md) record is going to be created on the backlog. - -## Actions - -- [x] name, date by, action -- [ ] name, date by, action - -## Tags - -`#availability|#scalability|#elasticity|#performance|#reliability|#resilience|#maintainability|#testability|#deployability|#modularity|#simplicity|#security|#data|#cost|#usability|#accessibility|…` these tags are intended to be operational, structural or cross-cutting architecture characteristics to link to related decisions. diff --git a/docs/adr/ADR-nnn_Any_Decision_Record_Template.md b/docs/adr/ADR-nnn_Any_Decision_Record_Template.md deleted file mode 100644 index 74993e8..0000000 --- a/docs/adr/ADR-nnn_Any_Decision_Record_Template.md +++ /dev/null @@ -1,78 +0,0 @@ -# ADR-nnn: Any Decision Record Template - ->| | | ->| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ->| Date | `dd/mm/YYYY` _when the decision was last updated_ | ->| Status | `RFC by dd/mm/YYYY, Proposed, In Discussion, Pending Approval, Withdrawn, Rejected, Accepted, Deprecated, ..., Superseded by ADR-XXX or Supersedes ADR-XXX` | ->| Deciders | `Tech Radar, Engineering, Architecture, Solution Assurance, Clinical Assurance, Technical Review and Governance, Information Governance, Cyber Security, Live Services Board,` ... | ->| Significance | `Structure, Nonfunctional characteristics, Dependencies, Interfaces, Construction techniques,` ... | ->| Owners | | - ---- - -- [ADR-nnn: Any Decision Record Template](#adr-nnn-any-decision-record-template) - - [Context](#context) - - [Decision](#decision) - - [Assumptions](#assumptions) - - [Drivers](#drivers) - - [Options](#options) - - [Outcome](#outcome) - - [Rationale](#rationale) - - [Consequences](#consequences) - - [Compliance](#compliance) - - [Notes](#notes) - - [Actions](#actions) - - [Tags](#tags) - -## Context - -Describe the context and the problem statement. Is there a relationship to other decisions previously made? Are there any dependencies and/or constraints within which the decision will be made? Do these need to be reviewed or validated? Please note that environmental limitations or restrictions such as accepted technology standards, commonly recognised and used patterns, engineering and architecture principles, organisation policies, governance and so on, may as an effect narrow down the choices. This should also be explicitly documented, as this is a point-in-time decision with the intention of being able to articulate it clearly and justify it later. - -## Decision - -### Assumptions - -Summarise the underlying assumptions in the environment in which you make the decision. This could be related to technology changes, forecast of the monetary and non-monetary costs, further delivery commitments, impactful external drivers etc., and any known unknowns that translate to risks. - -### Drivers - -List the decision drivers that motivate this change or course of action. This may include any identified risks and residual risks after applying the decision. - -### Options - -Consider a comprehensive set of alternative options; provide weighting if applicable. - -### Outcome - -State the decision outcome as a result of taking into account all of the above. Is it a reversible or irreversible decision? - -### Rationale - -Provide a rationale for the decision that is based on weighing the options to ensure that the same questions are not going to be asked again and again unless the decision needs to be superseded. - -For non-trivial decisions a comparison table can be useful for the reviewer. Decision criteria down one side, options across the top. You'll likely find decision criteria come from the Drivers section above. Effort can be an important driving factor. You may have an intuitive feel for this, but reviewers will not. T-shirt sizing the effort for each option may help communicate. - -## Consequences - -Describe the resulting context, after applying the decision. All the identified consequences should be listed here, not just the positive ones. Any decision comes with many implications. For example, it may introduce a need to make other decisions as an effect of cross-cutting concerns; it may impact structural or operational characteristics of the software, and influence non-functional requirements; as a result, some things may become easier or more difficult to do because of this change. What are the trade-offs? - -What are the conditions under which this decision no longer applies or becomes irrelevant? - -## Compliance - -Establish how the success is going to be measured. Once implemented, the effect might lend itself to be measured, therefore if appropriate a set of criteria for success could be established. Compliance checks of the decision can be manual or automated using a fitness function. If it is the latter this section can then specify how that fitness function would be implemented and whether there are any other changes to the codebase needed to measure this decision for compliance. - -## Notes - -Include any links to existing epics, decisions, dependencies, risks, and policies related to this decision record. This section could also include any further links to configuration items within the project or the codebase, signposting to the areas of change. - -It is important that if the decision is sub-optimal or the choice is tactical or misaligned with the strategic directions the risk related to it is identified and clearly articulated. As a result of that, the expectation is that a [Tech Debt](./tech-debt.md) record is going to be created on the backlog. - -## Actions - -- [x] name, date by, action -- [ ] name, date by, action - -## Tags - -`#availability|#scalability|#elasticity|#performance|#reliability|#resilience|#maintainability|#testability|#deployability|#modularity|#simplicity|#security|#data|#cost|#usability|#accessibility|…` these tags are intended to be operational, structural or cross-cutting architecture characteristics to link to related decisions. diff --git a/docs/adr/assets/ADR-003/examples/bash/README.md b/docs/adr/assets/ADR-003/examples/bash/README.md deleted file mode 100644 index 90e56cf..0000000 --- a/docs/adr/assets/ADR-003/examples/bash/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Example: Get GitHub App access token in Bash - -Dependencies are `openssl`, `curl`, `jq` and `gh`. - -Prepare environment: - -```bash -export GITHUB_APP_ID=... -export GITHUB_APP_PK_FILE=... -export GITHUB_ORG="nhs-england-tools" -``` - -Run script: - -```bash -$ cd docs/adr/assets/ADR-003/examples/bash -$ ./script.sh -GITHUB_TOKEN=ghs_... -``` - -Check the token: - -```bash -$ GITHUB_TOKEN=ghs_...; echo "$GITHUB_TOKEN" | gh auth login --with-token -$ gh auth status -github.com - ✓ Logged in to github.com as nhs-england-update-from-template[bot] (keyring) - ✓ Git operations for github.com configured to use https protocol. - ✓ Token: ghs_************************************ -``` - -See the [example (script.sh)](./script.sh) implementation. This script has been written to illustrate the concept in a clear and simple way. It is not a production ready code. diff --git a/docs/adr/assets/ADR-003/examples/bash/script.sh b/docs/adr/assets/ADR-003/examples/bash/script.sh deleted file mode 100755 index 7dd8346..0000000 --- a/docs/adr/assets/ADR-003/examples/bash/script.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash - -function main() { - - if [[ -z "$GITHUB_APP_ID" || -z "$GITHUB_APP_PK_FILE" || -z "$GITHUB_ORG" ]]; then - echo "Environment variables GITHUB_APP_ID, GITHUB_APP_PK_FILE and GITHUB_ORG must be passed to this program." - exit 1 - fi - - jwt_token=$(get-jwt-token) - installation_id=$(get-installation-id) - access_token=$(get-access-token) - - echo "GITHUB_TOKEN=$access_token" -} - -function get-jwt-token() { - - header=$(echo -n '{"alg":"RS256","typ":"JWT"}' | base64 | tr -d '=' | tr -d '\n=' | tr -- '+/' '-_') - payload=$(echo -n '{"iat":'"$(date +%s)"',"exp":'$(($(date +%s)+600))',"iss":"'"$GITHUB_APP_ID"'"}' | base64 | tr -d '\n=' | tr -- '+/' '-_') - signature=$(echo -n "$header.$payload" | openssl dgst -binary -sha256 -sign "$GITHUB_APP_PK_FILE" | openssl base64 | tr -d '\n=' | tr -- '+/' '-_') - - echo "$header.$payload.$signature" -} - -function get-installation-id() { - - installations_response=$(curl -sX GET \ - -H "Authorization: Bearer $jwt_token" \ - -H "Accept: application/vnd.github.v3+json" \ - https://api.github.com/app/installations) - - echo "$installations_response" | jq '.[] | select(.account.login == "'"$GITHUB_ORG"'") .id' -} - -function get-access-token() { - - token_response=$(curl -sX POST \ - -H "Authorization: Bearer $jwt_token" \ - -H "Accept: application/vnd.github.v3+json" \ - "https://api.github.com/app/installations/$installation_id/access_tokens") - - echo "$token_response" | jq .token -r -} - -main diff --git a/docs/adr/assets/ADR-003/examples/golang/README.md b/docs/adr/assets/ADR-003/examples/golang/README.md deleted file mode 100644 index 87071af..0000000 --- a/docs/adr/assets/ADR-003/examples/golang/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Example: Get GitHub App access token in Golang - -Dependencies are listed in the `go.mod` file. - -Prepare environment: - -```bash -export GITHUB_APP_ID=... -export GITHUB_APP_PK_FILE=... -export GITHUB_ORG="nhs-england-tools" -``` - -Run script: - -```bash -$ cd docs/adr/assets/ADR-003/examples/golang -$ go run main.go -GITHUB_TOKEN=ghs_... -``` - -Check the token: - -```bash -$ GITHUB_TOKEN=ghs_...; echo "$GITHUB_TOKEN" | gh auth login --with-token -$ gh auth status -github.com - ✓ Logged in to github.com as nhs-england-update-from-template[bot] (keyring) - ✓ Git operations for github.com configured to use https protocol. - ✓ Token: ghs_************************************ -``` - -See the [example (main.go)](./main.go) implementation. This script has been written to illustrate the concept in a clear and simple way. It is not a production ready code. diff --git a/docs/adr/assets/ADR-003/examples/golang/go.mod b/docs/adr/assets/ADR-003/examples/golang/go.mod deleted file mode 100644 index 870c97c..0000000 --- a/docs/adr/assets/ADR-003/examples/golang/go.mod +++ /dev/null @@ -1,10 +0,0 @@ -module github-app-get-tokent - -go 1.21.0 - -require ( - github.com/go-resty/resty/v2 v2.7.0 - github.com/golang-jwt/jwt v3.2.2+incompatible -) - -require golang.org/x/net v0.17.0 // indirect diff --git a/docs/adr/assets/ADR-003/examples/golang/go.sum b/docs/adr/assets/ADR-003/examples/golang/go.sum deleted file mode 100644 index ab2f1b8..0000000 --- a/docs/adr/assets/ADR-003/examples/golang/go.sum +++ /dev/null @@ -1,12 +0,0 @@ -github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= -github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= -github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= -github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/docs/adr/assets/ADR-003/examples/golang/main.go b/docs/adr/assets/ADR-003/examples/golang/main.go deleted file mode 100644 index 42553cf..0000000 --- a/docs/adr/assets/ADR-003/examples/golang/main.go +++ /dev/null @@ -1,88 +0,0 @@ -package main - -import ( - "crypto/x509" - "encoding/json" - "encoding/pem" - "fmt" - "io/ioutil" - "log" - "os" - "time" - - "github.com/go-resty/resty/v2" - "github.com/golang-jwt/jwt" -) - -type Installation struct { - ID int `json:"id"` - Account struct { - Login string `json:"login"` - } `json:"account"` -} - -func main() { - - ghAppId := os.Getenv("GITHUB_APP_ID") - ghAppPkFile := os.Getenv("GITHUB_APP_PK_FILE") - ghOrg := os.Getenv("GITHUB_ORG") - - if ghAppId == "" || ghAppPkFile == "" || ghOrg == "" { - log.Fatalf("Environment variables GITHUB_APP_ID, GITHUB_APP_PK_FILE and GITHUB_ORG must be passed to this program.") - } - - jwtToken := getJwtToken(ghAppId, ghAppPkFile) - installationId := getInstallationId(jwtToken, ghOrg) - accessToken := getAccessToken(jwtToken, installationId) - - fmt.Printf("GITHUB_TOKEN=%s\n", accessToken) -} - -func getJwtToken(ghAppId string, ghAppPkFile string) string { - - pemContent, _ := ioutil.ReadFile(ghAppPkFile) - block, _ := pem.Decode(pemContent) - privateKey, _ := x509.ParsePKCS1PrivateKey(block.Bytes) - token := jwt.NewWithClaims(jwt.SigningMethodRS256, jwt.MapClaims{ - "iat": time.Now().Unix(), - "exp": time.Now().Add(10 * time.Minute).Unix(), - "iss": ghAppId, - }) - jwtToken, _ := token.SignedString(privateKey) - - return jwtToken -} - -func getInstallationId(jwtToken string, ghOrg string) int { - - client := resty.New() - resp, _ := client.R(). - SetHeader("Authorization", "Bearer "+jwtToken). - SetHeader("Accept", "application/vnd.github.v3+json"). - Get("https://api.github.com/app/installations") - - var installations []Installation - json.Unmarshal(resp.Body(), &installations) - installationId := 0 - for _, installation := range installations { - if installation.Account.Login == ghOrg { - installationId = installation.ID - } - } - - return installationId -} - -func getAccessToken(jwtToken string, installationId int) string { - - client := resty.New() - resp, _ := client.R(). - SetHeader("Authorization", "Bearer "+jwtToken). - SetHeader("Accept", "application/vnd.github.v3+json"). - Post(fmt.Sprintf("https://api.github.com/app/installations/%d/access_tokens", installationId)) - - var result map[string]interface{} - json.Unmarshal(resp.Body(), &result) - - return result["token"].(string) -} diff --git a/docs/adr/assets/ADR-003/examples/nodejs/.gitignore b/docs/adr/assets/ADR-003/examples/nodejs/.gitignore deleted file mode 100644 index 3db80f7..0000000 --- a/docs/adr/assets/ADR-003/examples/nodejs/.gitignore +++ /dev/null @@ -1,134 +0,0 @@ -yarn.lock - -SEE: https://github.com/github/gitignore/blob/main/Node.gitignore - -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* -.pnpm-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional stylelint cache -.stylelintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variable files -.env -.env.development.local -.env.test.local -.env.production.local -.env.local - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp and cache directory -.temp -.cache - -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* diff --git a/docs/adr/assets/ADR-003/examples/nodejs/README.md b/docs/adr/assets/ADR-003/examples/nodejs/README.md deleted file mode 100644 index 95c0ef6..0000000 --- a/docs/adr/assets/ADR-003/examples/nodejs/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# Example: Get GitHub App access token in Node.js TypeScript (using Octokit) - -Dependencies are listed in the `package.json` file. - -Prepare environment: - -```bash -export GITHUB_APP_ID=... -export GITHUB_APP_PK_FILE=... -export GITHUB_ORG="nhs-england-tools" -``` - -Run script: - -```bash -$ cd docs/adr/assets/ADR-003/examples/nodejs -$ yarn install -$ yarn start -[ - { - name: 'repository-template', - full_name: 'nhs-england-tools/repository-template', - private: false, - owner: { - login: 'nhs-england-tools', - ... -``` - -See the [example (main.ts)](./main.ts) implementation. This script has been written to illustrate the concept in a clear and simple way. It is not a production ready code. diff --git a/docs/adr/assets/ADR-003/examples/nodejs/main.ts b/docs/adr/assets/ADR-003/examples/nodejs/main.ts deleted file mode 100644 index e3a72ff..0000000 --- a/docs/adr/assets/ADR-003/examples/nodejs/main.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { Octokit } from "octokit"; -import { createAppAuth } from "@octokit/auth-app"; -import * as fs from "fs"; - -export const getOctokit = async ( - appId: string, - privateKey: string, - orgName: string -): Promise => { - const appOctokit = new Octokit({ - authStrategy: createAppAuth, - auth: { - appId, - privateKey, - }, - }); - const installations = await appOctokit.request("GET /app/installations"); - for (const d of installations.data) { - //@ts-ignore - if (d.account.login === orgName) { - const installationId = d.id; - const installationOctokit = new Octokit({ - authStrategy: createAppAuth, - auth: { - appId, - privateKey, - installationId, - }, - }); - return installationOctokit; - } - } - - throw new Error(`No installation found for organization ${orgName}`); -}; - -const ghAppId = process.env.GITHUB_APP_ID; -const ghAppPkFile = process.env.GITHUB_APP_PK_FILE; -const ghOrg = process.env.GITHUB_ORG; - -(async () => { - if (!ghAppId || !ghAppPkFile || !ghOrg) { - throw new Error( - "Environment variables GITHUB_APP_ID, GITHUB_APP_PK_FILE, and GITHUB_ORG must be passed to this program." - ); - } - const octokit = await getOctokit( - ghAppId, - fs.readFileSync(ghAppPkFile, "utf8"), - ghOrg - ); - const repos = await octokit.request("GET /orgs/{org}/repos", { - org: ghOrg, - }); - - console.log(repos.data); -})(); diff --git a/docs/adr/assets/ADR-003/examples/nodejs/package.json b/docs/adr/assets/ADR-003/examples/nodejs/package.json deleted file mode 100644 index 0a867c4..0000000 --- a/docs/adr/assets/ADR-003/examples/nodejs/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "main": "main.ts", - "scripts": { - "start": "ts-node main.ts" - }, - "dependencies": { - "@octokit/auth-app": "^6.0.0", - "octokit": "^3.1.0" - }, - "devDependencies": { - "ts-node": "^10.9.1", - "typescript": "^5.2.2" - } -} diff --git a/docs/adr/assets/ADR-003/examples/nodejs/tsconfig.json b/docs/adr/assets/ADR-003/examples/nodejs/tsconfig.json deleted file mode 100644 index 2510529..0000000 --- a/docs/adr/assets/ADR-003/examples/nodejs/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "target": "ES6", - "module": "commonjs", - "strict": true, - "esModuleInterop": true - }, - "include": ["*.ts"], - "exclude": ["node_modules"] -} diff --git a/docs/adr/assets/ADR-003/examples/python/README.md b/docs/adr/assets/ADR-003/examples/python/README.md deleted file mode 100644 index 36d0e18..0000000 --- a/docs/adr/assets/ADR-003/examples/python/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Example: Get GitHub App access token in Python - -Dependencies are listed in the `requirements.txt` file. - -Prepare environment: - -```bash -export GITHUB_APP_ID=... -export GITHUB_APP_PK_FILE=... -export GITHUB_ORG="nhs-england-tools" -``` - -Run script: - -```bash -$ cd docs/adr/assets/ADR-003/examples/python -$ pip install -r requirements.txt -$ python main.py -GITHUB_TOKEN=ghs_... -``` - -Check the token: - -```bash -$ GITHUB_TOKEN=ghs_...; echo "$GITHUB_TOKEN" | gh auth login --with-token -$ gh auth status -github.com - ✓ Logged in to github.com as nhs-england-update-from-template[bot] (keyring) - ✓ Git operations for github.com configured to use https protocol. - ✓ Token: ghs_************************************ -``` - -See the [example (main.py)](./main.py) implementation. This script has been written to illustrate the concept in a clear and simple way. It is not a production ready code. diff --git a/docs/adr/assets/ADR-003/examples/python/main.py b/docs/adr/assets/ADR-003/examples/python/main.py deleted file mode 100644 index 4968d38..0000000 --- a/docs/adr/assets/ADR-003/examples/python/main.py +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env python3 - -import jwt -import os -import requests -import time - - -def main(): - - gh_app_id = os.environ.get("GITHUB_APP_ID") - gh_app_pk_file = os.environ.get("GITHUB_APP_PK_FILE") - gh_org = os.environ.get("GITHUB_ORG") - - if not gh_app_id or not gh_app_pk_file or not gh_org: - raise ValueError("Environment variables GITHUB_APP_ID, GITHUB_APP_PK_FILE and GITHUB_ORG must be passed to this program.") - - jwt_token = get_jwt_token(gh_app_id, gh_app_pk_file) - installation_id = get_installation_id(jwt_token, gh_org) - access_token = get_access_token(jwt_token, installation_id) - - print(f"GITHUB_TOKEN={access_token}") - - -def get_jwt_token(gh_app_id, gh_app_pk_file): - - with open(gh_app_pk_file, "rb") as file: - private_key = file.read() - payload = {"iat": int(time.time()), "exp": int(time.time()) + 600, "iss": gh_app_id} - jwt_token = jwt.encode(payload, private_key, algorithm="RS256") - - return jwt_token - - -def get_installation_id(jwt_token, gh_org): - - headers = { - "Authorization": f"Bearer {jwt_token}", - "Accept": "application/vnd.github.v3+json", - } - url = "https://api.github.com/app/installations" - response = requests.get(url, headers=headers) - - installation_id = None - for installation in response.json(): - if installation["account"]["login"] == gh_org: - installation_id = installation["id"] - break - - return installation_id - - -def get_access_token(jwt_token, installation_id): - - headers = { - "Authorization": f"Bearer {jwt_token}", - "Accept": "application/vnd.github.v3+json", - } - url = f"https://api.github.com/app/installations/{installation_id}/access_tokens" - response = requests.post(url, headers=headers) - - return response.json().get("token") - - -if __name__ == "__main__": - main() diff --git a/docs/adr/assets/ADR-003/examples/python/requirements.txt b/docs/adr/assets/ADR-003/examples/python/requirements.txt deleted file mode 100644 index 0e4c971..0000000 --- a/docs/adr/assets/ADR-003/examples/python/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -PyJWT==2.8.0 -requests==2.31.0 diff --git a/docs/developer-guides/Bash_and_Make.md b/docs/developer-guides/Bash_and_Make.md deleted file mode 100644 index 778e452..0000000 --- a/docs/developer-guides/Bash_and_Make.md +++ /dev/null @@ -1,153 +0,0 @@ -# Developer Guide: Bash and Make - -- [Developer Guide: Bash and Make](#developer-guide-bash-and-make) - - [Using Make](#using-make) - - [Using Bash](#using-bash) - - [Make and Bash working together](#make-and-bash-working-together) - - [Conventions](#conventions) - - [Debugging](#debugging) - - [Scripts](#scripts) - -## Using Make - -Sample make target signature definition: - -```makefile -some-target: # Target description - mandatory: foo=[description]; optional: baz=[description, default is 'qux'] @Category - # Recipe implementation... -``` - -- `some-target`: This is the name of the target you would specify when you want to run this particular target. Use the kebab-case naming convention and prefix with an underscore `_` to mark it as a "private" target. The first part of the name is used for grouping, e.g. `docker-*` or `terraform-*`. -- `Target Description`: Provided directly after the target name as a single line, so be concise. -- `mandatory` parameters: Parameters that must be provided when invoking the target. Each parameter has its own description. Please follow the specified format as it is used by `make help`. -- `optional` parameters: Parameters that are not required when invoking the target. They may have a default value. Each parameter has its own description. -- `@Category` label: Used for grouping by the `make help` command. -- `Recipe implementation`: This section defines the actual commands or steps the target will execute. **Do not exceed 5 lines of effective code**. For more complex operations, use a shell script. Refer to the `docker-build` implementation in the [docker.mk](../../scripts/docker/docker.mk) file. More complex operations are implemented in the [docker.sh](../../scripts/docker/docker.lib.sh) script for readability and simplicity. - -Run make target from a terminal: - -```shell -foo=bar make some-target # Environment variable is passed to the make target execution process -make some-target foo=bar # Make argument is passed to the make target execution process -``` - -By convention we use uppercase variables for global settings that you would ordinarily associate with environment variables. We use lower-case variables as arguments to call functions or make targets, in this case. - -All make targets should be added to the `${VERBOSE}.SILENT:` section of the `make` file, which prevents `make` from printing commands before executing them. The `${VERBOSE}` prefix on the `.SILENT:` special target allows toggling it if needed. If you explicitly want output from a certain line, use `echo`. - -It is worth noting that by default, `make` creates a new system process to execute each line of a recipe. This is not the desired behaviour for us and the entire content of a make recipe (a target) should be run in a single shell invocation. This has been configured in this repository by setting the [`.ONESHELL:`](https://www.gnu.org/software/make/manual/html_node/One-Shell.html) special target in the `scripts/init.mk` file. - -To see all available make targets, run `make help`. - -![make help](./assets/make_help.png) - -## Using Bash - -When working in the command-line ensure the environment variables are reset to their initial state. This can be done by reloading shell using the `env -i $SHELL` command. - -Sample Bash function definition: - -```shell -# Short function description -# Arguments (provided as environment variables): -# foo=[description] -# baz=[description, default is 'qux'] -function some-shell-function() { - # Function implementation... -``` - -Run Bash function from a terminal: - -```shell -source scripts/a-suite-of-shell-functions -foo=bar some-shell-function # Environment variable is accessible by the function executed in the same operating system process -``` - -```shell -source scripts/a-suite-of-shell-functions -foo=bar -some-shell-function # Environment variable is still accessible by the function -``` - -Run Bash script from a terminal, bear in mind that executing a script creates a child operating system process: - -```shell -# Environment variable has to be exported to be passed to a child process, DO NOT use this pattern -export foo=bar -scripts/a-shell-script -``` - -```shell -# or to be set in the same line before creating a new process, prefer this pattern over the previous one -foo=bar scripts/a-shell-script - -# or when multiple variables are required -foo=bar \ -baz=qux \ - scripts/a-shell-script -``` - -By convention we use uppercase variables for global settings that you would ordinarily associate with environment variables. We use lower-case variables as arguments to be passed into specific functions we call, usually on the same line, right before the function name. - -The command `set -euo pipefail` is commonly used in the Bash scripts, to configure the behavior of the script in a way that makes it more robust and easier to debug. Here is a breakdown of each option switch: - -- `-e`: Ensures that the script exits immediately if any command returns a non-zero exit status. -- `-u`: Makes the script exit if there is an attempt to use an uninitialised variable. -- `-o pipefail`: ensures that if any command in a pipeline fails (i.e., returns a non-zero exit status), then the entire pipeline will return that non-zero status. By default, a pipeline returns the exit status of the last command. - -## Make and Bash working together - -Sample make target calling a Bash function. Notice that `baz` is going to be accessible to the function as it is executed in the same operating system process: - -```makefile -some-target: # Run shell function - mandatory: foo=[description] - source scripts/a-suite-of-shell-function - baz=qux - some-shell-function # 'foo' and 'baz' are accessible by the function -``` - -Sample make target calling another make target. In this case a parameter `baz` has to be passed as a variable to the make target, which is executed in a child process: - -```makefile -some-target: # Call another target - mandatory: foo=[description] - baz=qux \ - make another-target # 'foo' and 'baz' are passed to the make target -``` - -Run it from a terminal: - -```shell -foo=bar make some-target -``` - -## Conventions - -### Debugging - -To assist in investigating scripting issues, the `VERBOSE` variable is available for both Make and Bash scripts. If it is set to `true` or `1`, it prints all the commands that the script executes to the standard output. Here is how to use it: - -for Make targets - -```shell -VERBOSE=1 make docker-example-build -``` - -for Bash scripts - -```shell -VERBOSE=1 scripts/shellscript-linter.sh -``` - -### Scripts - -Most scripts provided with this repository template can utilise tools installed on your `PATH` if they are available or run them from within a Docker container. To force a script to use Docker, the `FORCE_USE_DOCKER` variable is provided. This feature increases configurability of the development environment, allowing you to use custom tooling by default if present on the command-line path. Here is an example of how to use it: - -```shell -FORCE_USE_DOCKER=1 scripts/shellscript-linter.sh -``` - -You can combine it with the `VERBOSE` flag to see the details of the execution flow: - -```shell -VERBOSE=1 FORCE_USE_DOCKER=1 scripts/shellscript-linter.sh -``` diff --git a/docs/developer-guides/Scripting_Docker.md b/docs/developer-guides/Scripting_Docker.md deleted file mode 100644 index 2f71812..0000000 --- a/docs/developer-guides/Scripting_Docker.md +++ /dev/null @@ -1,223 +0,0 @@ -# Developer Guide: Scripting Docker - -- [Developer Guide: Scripting Docker](#developer-guide-scripting-docker) - - [Overview](#overview) - - [Features](#features) - - [Key files](#key-files) - - [Usage](#usage) - - [Quick start](#quick-start) - - [Your image implementation](#your-image-implementation) - - [Conventions](#conventions) - - [Versioning](#versioning) - - [Variables](#variables) - - [Platform architecture](#platform-architecture) - - [FAQ](#faq) - -## Overview - -Docker is a tool for developing, shipping and running applications inside containers for Serverless and Kubernetes-based workloads. It has grown in popularity due to its ability to address several challenges faced by engineers, like: - -- **Consistency across environments**: One of the common challenges in software development is the "it works on my machine" problem. Docker containers ensure that applications run the same regardless of where the container is run, be it a developer's local machine, a test environment or a production server. -- **Isolation**: Docker containers are isolated from each other and from the host system. This means that you can run multiple versions of the same software (like databases or libraries) on the same machine without them interfering with each other. -- **Rapid development and deployment**: With Docker, setting up a new instance or environment is just a matter of spinning up a new container, which can be done in seconds. This is especially useful for scaling applications or rapidly deploying fixes. -- **Version control for environments**: Docker images can be versioned, allowing developers to keep track of application environments in the same way they version code. This makes it easy to roll back to a previous version if needed. -- **Resource efficiency**: Containers are lightweight compared to virtual machines (VMs) because they share the same OS kernel and do not require a full OS stack to run. This means you can run many more containers than VMs on a host machine. -- **Microservices architecture**: Docker is particularly well-suited for microservices architectures, where an application is split into smaller, independent services that run in their own containers. This allows for easier scaling, maintenance and updates of individual services. -- **Integration with development tools**: There is a rich ecosystem of tools and platforms that integrate with Docker, including CI/CD tools (like GitHub and Azure DevOps), orchestration platforms (like Kubernetes) and cloud providers (like AWS and Azure). -- **Developer productivity**: With Docker, developers can easily share their environment with teammates. If a new developer joins the team, they can get up and running quickly by simply pulling the necessary Docker images. -- **Easy maintenance and update**: With containers, it is easy to update a base image or a software component and then propagate those changes to all instances of the application. -- **Cross-platform compatibility**: Docker containers can be run on any platform that supports Docker, be it Linux, Windows or macOS. This ensures compatibility across different development and production environments. -- **Security**: Docker provides features like secure namespaces and cgroups which isolate applications. Additionally, you can define fine-grained access controls and policies for your containers. -- **Reusable components**: Docker images can be used as base images for other projects, allowing for reusable components. For example, if you have a base image with a configured web server, other teams or projects can use that image as a starting point. - -## Features - -Here are some key features built into this repository's Docker module: - -- Implements the most common Docker routines for efficient container management, e.g. build, test and push -- Utilises `sha256` digests for robust image versioning and to enhance security posture -- Enables pull-image-once retrieval based on its digest to optimise performance (Docker does not store `sha256` digests locally) -- Consolidates image versions in a unified `.tool-versions` file for easier dependency management -- Optimises the build process specifically for the `amd64` architecture for consistency -- Applies automatic image versioning according to a predefined pattern for artefact publishing and deployment -- Incorporates metadata through Dockerfile labels for enhanced documentation and to conform to standards -- Integrates a linting routine to ensure Dockerfile code quality -- Includes an automated test suite to validate Docker scripts -- Provides a ready-to-run example to demonstrate the module's functionality -- Incorporates a best practice guide - -## Key files - -- Scripts - - [docker.lib.sh](../../scripts/docker/docker.lib.sh): A library code loaded by custom make targets and CLI scripts - - [docker.mk](../../scripts/docker/docker.mk): Customised implementation of the Docker routines loaded by the `scripts/init.mk` file - - [dgoss.sh](../../scripts/docker/dgoss.sh): Docker image spec test framework - - [dockerfile-linter.sh](../../scripts/docker/dockerfile-linter.sh): Dockerfile linter -- Configuration - - [.tool-versions](../../.tool-versions): Stores Docker image versions - - [hadolint.yaml](../../scripts/config/hadolint.yaml): Dockerfile linter configuration file - - [Dockerfile.metadata](../../scripts/docker/Dockerfile.metadata): Labels added to image definition as specified by the spec -- Test suite - - [docker.test.sh](../../scripts/docker/tests/docker.test.sh): Main file containing all the tests - - [Dockerfile](../../scripts/docker/tests/Dockerfile): Image definition for the test suite - - [VERSION](../../scripts/docker/tests/VERSION): Version patterns for the test suite -- Usage example - - Python-based example [hello_world](../../scripts/docker/examples/python) app showing a multi-staged build - - A set of [make targets](https://github.com/nhs-england-tools/repository-template/blob/main/scripts/docker/docker.mk#L18) to run the example - -## Usage - -### Quick start - -Run the test suite: - -```shell -$ make docker-test-suite-run - -test-docker-build PASS -test-docker-test PASS -test-docker-run PASS -test-docker-clean PASS -``` - -Run the example: - -```shell -$ make docker-example-build - -#0 building with "desktop-linux" instance using docker driver -... -#12 DONE 0.0s - -$ make docker-example-run - - * Serving Flask app 'app' - * Debug mode: off -WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. - * Running on all addresses (0.0.0.0) - * Running on http://127.0.0.1:8000 - * Running on http://172.17.0.2:8000 -Press CTRL+C to quit -``` - -### Your image implementation - -Always follow [Docker best practices](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/) while developing images. Start with creating your container definition for the service and store it in the `infrastructure/images` directory. - -Here is a step-by-step guide: - -1. Create `infrastructure/images/cypress/Dockerfile` - - ```Dockerfile - # hadolint ignore=DL3007 - FROM cypress/browsers:latest - ``` - -2. Add the following entry to the `.tool-versions` file. This will be used to replace the `latest` version placeholder in the Dockerfile. - - ```text - # docker/cypress/browsers node-20.5.0-chrome-114.0.5735.133-1-ff-114.0.2-edge-114.0.1823.51-1@sha256:8b899d0292e700c80629d13a98ae309295e719f5b4f9aa50a98c6cdd2b6c5215 - ``` - -3. Create `infrastructure/images/cypress/VERSION` - - ```text - ${yyyy}${mm}${dd}-${hash} - ``` - -4. Add make target to the `Makefile` - - ```text - build-cypress-image: # Build Cypress Docker image - docker_image=ghcr.io/nhs-england-tools/cypress \ - docker_title="Browser testing" \ - make docker-build dir=infrastructure/images/cypress - - ${VERBOSE}.SILENT: \ - build-cypress-image \ - ``` - -5. Run the build - - ```text - $ make build-cypress-image - #0 building with "desktop-linux" instance using docker driver - ... - #5 exporting to image - #5 exporting layers done - #5 writing image sha256:7440a1a25110cf51f9a1c8a2e0b446e9770ac0db027e55a7d31f2e217f2ff0c7 done - #5 naming to ghcr.io/nhs-england-tools/cypress:20230828-eade960 done - #5 DONE 0.0s - - $ docker images - REPOSITORY TAG IMAGE ID CREATED SIZE - ghcr.io/nhs-england-tools/cypress 20230828-eade960 7440a1a25110 2 weeks ago 608MB - ghcr.io/nhs-england-tools/cypress latest 7440a1a25110 2 weeks ago 608MB - ``` - -6. Commit all changes to these files - -- `infrastructure/images/cypress/Dockerfile` -- `infrastructure/images/cypress/Dockerfile.effective` -- `infrastructure/images/cypress/VERSION` -- `.tool-versions` - -## Conventions - -### Versioning - -You can specify the version tags that the automated build process applies to your images with a `VERSION` file. This file must be located adjacent to the `Dockerfile` where each image is defined. - -It may be a "_statically defined_" version, such as `1.2.3`, `20230601`, etc., or a "_dynamic pattern_" based on the current time and commit hash, e.g. `${yyyy}${mm}${dd}${HH}${MM}${SS}-${hash}`. This pattern will be substituted during the build process to create a `.version` file in the same directory, containing effective content like `20230601153000-123abcd`. See [this function](https://github.com/nhs-england-tools/repository-template/blob/main/scripts/docker/docker.lib.sh#L118) for what template substitutions are available. - -This file is then used by functions defined in [docker.lib.sh](../../scripts/docker/docker.lib.sh) but is ignored by Git, and is not checked in with other files. - -Support for multiple version entries is provided. For instance, if the `VERSION` file contains: - -```text -${yyyy}${mm}${dd} -${yyyy}${mm}${dd}${HH}${MM} -${yyyy}${mm}${dd}-${hash} -squirrel -``` - -The corresponding `.version` file generated by the `docker-build` function may appear as: - -```text -20230601 -20230601-123abcd -squirrel -``` - -In this case, the image is automatically tagged as `20230601`, `20230601-123abcd`, `squirrel` and `latest`, which can be then pushed to a registry by running the `docker-push` function. This versioning approach is particularly useful for projects with multiple deployments per day. - -> [!NOTE]
-> The preferred pattern for versioning is `${yyyy}${mm}${dd}${HH}${MM}` or/and `${yyyy}${mm}${dd}-${hash}` for projects with a cadence of multiple deployments per day. This is compatible with the [Calendar Versioning / CalVer](https://calver.org/) convention. - -Base image versions are maintained in the [.tool-versions](../../.tool-versions) file located in the project's top-level directory. The format is as follows: - -```text -# docker/image/name 1.0.0@sha256:1234567890...abcdef -``` - -This method facilitates dependency management through a single file. The `docker-build` function will replace any instance of `FROM image/name:latest` with `FROM image/name:1.0.0@sha256:1234567890...abcdef`. Additionally, the [Dockerfile.metadata](../../scripts/docker/Dockerfile.metadata) file will be appended to the end of the `Dockerfile.effective` created by the process. - -The reason we do this is so that the deployment version is source-controlled, but the tooling does not interfere with using a more recent Docker image during local development before the new version can be added to the `.tool-versions` file. It also serves as a clean way of templating Docker image definition. - -### Variables - -Set the `docker_image` or `DOCKER_IMAGE` variable for your image. Alternatively, you can use their shorthand versions, `image` or `IMAGE`. To emphasize that it is a global variable, using the uppercase version is recommended, depending on your implementation. - -### Platform architecture - -For cross-platform image support, the `--platform linux/amd64` flag is used to build Docker images, enabling containers to run without any changes on both `amd64` and `arm64` architectures (via emulation). - -## FAQ - -1. _We built our serverless workloads based on AWS Lambda and package them as `.zip` archives. Why do we need Docker?_ - - The primary use case for Docker and the thing it was invented for, is as a tool for aligning development environments. If you have no need for containers as a deployment artefact it is still worth using Docker as a development tool to ensure that everyone working on the project has the same versions of all dependencies, no matter what is installed on your individual machine. - -2. _Should we use custom images for AWS Lambdas?_ - - There should be few cases where this is necessary. Using the AWS-provided images should be the first preference, to minimise the amount of code and infrastructure effort we need to exert. However, there will be cases where the provided images do not work for you. If you think this applies - for instance, if you have inherited a deployable that requires an unsupported runtime - speak to Engineering so that we have awareness of the impact to you and your project and can try to help. See [Working with Lambda container images](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html). diff --git a/docs/developer-guides/Scripting_Terraform.md b/docs/developer-guides/Scripting_Terraform.md deleted file mode 100644 index 9447837..0000000 --- a/docs/developer-guides/Scripting_Terraform.md +++ /dev/null @@ -1,174 +0,0 @@ -# Developer Guide: Scripting Terraform - -- [Developer Guide: Scripting Terraform](#developer-guide-scripting-terraform) - - [Overview](#overview) - - [Features](#features) - - [Key files](#key-files) - - [Usage](#usage) - - [Quick start](#quick-start) - - [Your stack implementation](#your-stack-implementation) - - [Conventions](#conventions) - - [Secrets](#secrets) - - [Variables](#variables) - - [IaC directory](#iac-directory) - - [FAQ](#faq) - -## Overview - -Terraform is an open-source infrastructure as code (IaC) tool. It allows you to define, provision and manage infrastructure in a declarative way, using a configuration language called HCL. Terraform can manage a wide variety of resources, such as virtual machines, databases, networking components and many more, across multiple cloud providers like AWS and Azure. - -Some advantages of using Terraform are as outlined below: - -- **Declarative configuration**: Terraform enables the precise definition of the desired state of infrastructure, streamlining its creation through a readable and understandable codebase. -- **Version control**: The infrastructure code may be subject to version control, thereby providing an auditable record of environmental changes. -- **Modularisation and reusability**: Terraform facilitates the packaging of infrastructure into modular components, enhancing both reusability and ease of sharing across organisational teams. -- **State management**: Terraform's state management capabilities ensure an accurate representation of real-world resources, enabling features such as resource dependencies and idempotency. -- **Collaboration and workflow**: The platform supports collaboration through features like remote backends and state locking, thereby fostering collective work on infrastructure projects. -- **Community and ecosystem**: A robust community actively contributes to the Terraform ecosystem, providing a wealth of modules and examples that expedite infrastructure development. - -## Features - -Here are some key features built into this repository's Terraform module: - -- Provides Make targets for frequently-used Terraform commands for streamlined execution -- Offers code completion and command signature assistance via Make for enhanced CLI usability -- Supports named arguments with default values for an improved coding experience -- Allows the working directory to be controlled by either arguments or a predefined constant for flexible stack management -- Features a command wrapper to improve the onboarding experience and ensure environmental consistency -- Incorporates both a Git hook and a GitHub action to enforce code quality standards -- Comes with the CI/CD pipeline workflow integration -- Includes a file cleanup routine to efficiently remove temporary resources -- Incorporates a ready-to-run example to demonstrate the module's capabilities -- Integrates a code linting routine to ensure scripts are free from unintended side effects -- Includes a verbose mode for in-depth troubleshooting and debugging -- Incorporates a best practice guide - -## Key files - -- Scripts - - [terraform.lib.sh](../../scripts/terraform/terraform.lib.sh) A library code loaded by custom make targets and CLI scripts - - [terraform.mk](../../scripts/terraform/terraform.mk): Customised implementation of the Terraform routines loaded by the `scripts/init.mk` file - - [terraform.sh](../../scripts/terraform/terraform.sh): Terraform command wrapper -- Configuration - - [.tool-versions](../../.tool-versions): Stores Terraform version to be used -- Code quality gates - - [lint-terraform/action.yaml](../../.github/actions/lint-terraform/action.yaml): GitHub action - - [check-terraform-format.sh](../../scripts/githooks/check-terraform-format.sh): Git hook -- Usage example - - Declarative infrastructure definition example [terraform-state-aws-s3](../../scripts/terraform/examples/terraform-state-aws-s3) to store Terraform state - - A set of [make targets](https://github.com/nhs-england-tools/repository-template/blob/main/scripts/terraform/terraform.mk#L44) to run the example - -## Usage - -### Quick start - -Run the example: - -```shell -# AWS console access setup -export AWS_ACCESS_KEY_ID="..." -export AWS_SECRET_ACCESS_KEY="..." -export AWS_SESSION_TOKEN="..." -``` - -```shell -$ make terraform-example-provision-aws-infrastructure - -Initializing the backend.. -... -Plan: 5 to add, 0 to change, 0 to destroy. -Saved the plan to: terraform.tfplan -To perform exactly these actions, run the following command to apply: - terraform apply "terraform.tfplan" -... -Apply complete! Resources: 5 added, 0 changed, 0 destroyed. - -$ make terraform-example-destroy-aws-infrastructure - -... -Plan: 0 to add, 0 to change, 5 to destroy. -... -Apply complete! Resources: 0 added, 0 changed, 5 destroyed. -``` - -### Your stack implementation - -Always follow [best practices for using Terraform](https://cloud.google.com/docs/terraform/best-practices-for-terraform) while providing infrastructure as code (IaC) for your service. - -Directory structure: - -```shell -service-repository/ -├─ ... -└─ infrastructure/ - ├─ modules/ - │ ├─ service-module-name/ - │ │ ├─ main.tf - │ │ ├─ outputs.tf - │ │ ├─ variables.tf - │ │ ├─ versions.tf - │ │ └─ README.md - │ ... - ├─ environments/ - │ ├─ dev/ # This is where your ephemeral environments live - │ │ ├─ backend.tf - │ │ ├─ main.tf - │ │ ├─ provider.tf - │ │ └─ terraform.tfvars - │ ├─ nonprod/ - | │ ├─ ... - │ └─ prod/ - | ├─ ... - └─ .gitignore -``` - -At its core, the structure of the Terraform setup consists of two main parts. The `modules` section is designed to house the shared or common configurations for a service. Meanwhile, the individual folders for each environment, like `dev` (ephemeral environments), `nonprod`, `prod` and so on, invoke these shared modules while also defining their unique variables and parameters. By arranging resources in distinct Terraform directories for every component, we ensure clarity and promote cohesion. Each environment directory not only references shared code from the `modules` section but also represents a default Terraform workspace as a deployment of the service to the designated environment. - -Stack management: - -```shell -export STACK=infrastructure/environments/dev # or use 'dir' argument on each command -make terraform-init -make terraform-plan opts="-out=terraform.tfplan" -make terraform-apply opts="-auto-approve terraform.tfplan" -make terraform-destroy opts="-auto-approve" -``` - -Plugging it in to the CI/CD pipeline lifecycle: - -```shell -deploy: # Deploy the project artefact to the target environment - # The value assigned to this variable should be driven by the GitHub environments setup - STACK=infrastructure/environments/security-test \ - make environment-set-up - # Prepare datastore - # Deploy artefact - -environment-set-up: # Use for all environment types - STACK=[path to your stack] - make terraform-init - make terraform-plan opts="-out=terraform.tfplan" - make terraform-apply opts="-auto-approve terraform.tfplan" - -environment-tear-down: # Use only for ephemeral environments, e.g. dev and test automation - STACK=[path to your stack] - make terraform-destroy opts="-auto-approve" -``` - -## Conventions - -### Secrets - -GitHub secrets for Terraform must be granular to avoid appearing in logs. For example, use `arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ASSUME_ROLE_NAME }}`. It has been proven that if a role ARN is defined as `AWS_ROLE_ARN`, details such as the account number are not redacted from the output and are visible in plain text. While this information may not be considered sensitive on its own, it could contribute to a vector attack and therefore be used to exploit the service. - -### Variables - -To specify the location of your Terraform [root module](https://developer.hashicorp.com/terraform/language/modules#the-root-module) set the `terraform_stack` or `TERRAFORM_STACK` variable. Alternatively, you can use their shorthand versions, `stack` or `STACK`. To emphasize that it is a global variable, using the uppercase version is recommended, depending on your implementation. All environment stacks must be root modules and should be located in the `infrastructure/environments` directory. - -### IaC directory - -The `infrastructure` directory is used to store IaC, as it is the most descriptive and portable name. This approach enables the use of supporting technologies, CDKs and solutions specific to the cloud providers like AWS and Azure. - -## FAQ - -1. _What are the advantages of using this module over directly invoking Terraform commands?_ - - The primary purpose of this module is to integrate best practices for CI/CD pipeline workflows with infrastructure as code (IaC), offering a well-defined structural framework that encourages modularisation and reusability of components. Additionally, it enhances the onboarding experience and increases the portability of the provisioning process. diff --git a/docs/developer-guides/assets/make_help.png b/docs/developer-guides/assets/make_help.png deleted file mode 100644 index de5ce76387d2aad23f5888ad48b3610ee57dabb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676180 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

9=@4EW`aV=0&x1AJ#Wk;!?wdahsTY$M-UmIH+& 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%0A|TI`B^ATW=- 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

bYz+F6-ekIn#c2YXHPQ7N9*IK>(L_FG9z28A-xs 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

Z>YuLg4km+b@fMFwK}dWEjRZ#~%e{`{8tq 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

5ur3c@z}t(RsK~!kB%oGL5Cw$VkyB4hEt{ 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Μm|)gnR~aP?bMhRSw{(l#`@$+2GayH5 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

eYp1_e!)%NT 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 diff --git a/docs/diagrams/.gitignore b/docs/diagrams/.gitignore deleted file mode 100644 index 57b2098..0000000 --- a/docs/diagrams/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.bkp -*.dtmp diff --git a/docs/diagrams/CD_Pipeline_Structure.drawio b/docs/diagrams/CD_Pipeline_Structure.drawio deleted file mode 100644 index e8da508..0000000 --- a/docs/diagrams/CD_Pipeline_Structure.drawio +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/diagrams/CD_Pipeline_Structure.png b/docs/diagrams/CD_Pipeline_Structure.png deleted file mode 100644 index 810249de49c54cc2f46c89ec3ede1958587c3850..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106576 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 i>BzO%*I(EC`t+Zbab|Rmz - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/diagrams/Repository_Template_GitHub_Generic.png b/docs/diagrams/Repository_Template_GitHub_Generic.png deleted file mode 100644 index c2170fb2a6c1792f7af8f91c58d610a254a805a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242906 zcmd?RcT`kc^DPPpNDw3lNJcu(PVXHfCdtiMn*ST!+Sa%Sz2wywf3xux?<-?{ggpT9)8{~|ZyAuZM>xEa> z*51R+dlH3)lAK*!+!{6~Yt&oY+HU9Nk!sY~=ik>TOr9+sSQo|Y7KXJ`J51c#U+%fS z5M`ZJQ!@@*uFoCJeX5}F!lQ4RIVxz`0WN=WZ`cQh=E}Xy2p^_maWr~IQp?eXqZ|7Y z1NyDVTYX8Rtb^q|o?-|rYz5&Z&hq5kg<`?mC(1eTKmGnIO)NHfGf{kMI~~8Tko%@K zH&3%9GgnNiZYP;Gcg|PWpurS{N=>bEbF55m>09i4vH)BUHj#~7Ea_Vk-Z+B{-fAb+ z9#g9$J7pOAQ4rV*-23uoVdRMHc{Rn=IhZ)9`+fI!6&|f+gou*Zi>HEE(17DQDt)SN z+q?mFpLGqOh3X4Q`{Y^rNku&guaa2uOl+{i=CrT1#KumQ*&Ak7I25K{kfvP}dwU`} zanRHVD)SvCG%}CvKTS6FG$|M|6#?I6-wn1&?r#;Vj{%4O1!}Z;YYeAvR~SmGoGoZ5 z@4i!EOs<_n(~_pADj5XTVvPsd`*t5j*DL%b5Pyqh93(XVL>MZ5K%et z=+ypBt3${4mslVyke`5082SxV>c2rp^9uht)gOp2hVfw?obdgE(V-2&7!r?PSzGtP zvLGqmm~Lt)u|4(rnL&R%hF=fTEJ_^<#F#828sSNgDv6exhn>y4i{+8#hQRbDLty@f zR57v3k4qDbP1xHlHGpgXj!3&&d7=<3P)NgH*rfFc^dSEO^M*&+fo0LXL;d{>QBPW8 z-VBonJKH%poVi2PARG@L-ZC&MYg}2$zJ`y_tsU)5-QG9~MU~urQpIULl-H+?lSWoSJ-nf^89SJiNIL=E(O`}v0wJr2zwO&qk+-|^o zteJQ#yc3-?t+?BAqXe3&NDjVrdYAn96*x6EuO+oO<9u!Vv2RVjEFDl2kkg3NS)AmIs5o z94TNv@u&OCXRZ$CRP2n%hqYEg{C3FE)5Gr)i!`?bJJ0Vu+hDXO5(rFaRv5Cs)9j(p zV>mUXdaCHu+Jk7+iIoZU>XCL z-x%t6P6b?uLzu9+vazyPb{-AEIgbWFyiT-{w;h0n7M7^)fa@(3dj_`}uU`M&J9Tw+ z^{c|*)+e~H7Iz{&>3iuep+6^0bI1MFBmC!i2*+R=ZQ@54``xX1jS8Q9M1YYO!dxXf54a9x4crr zhdO8^B^wG2J73_!+ez9@3Z4`Bam8Dur)pfUs|+JhKcJT0y<(zm^;m@C`a3Mfu1iuR zLHbjOPlylJ!(RXwNh!gp=G=aJ?xoiPKK=vb7Jg5X#eQRU2}PXpa+5AMN|X2*c#e=b zs6!+r;Dk)%>Q7|lxxc$z>IaI-QV7>oYIqCJTx@M^eWkBY_aG43lc{U$iD3+tAa8*j zt`Bz-N>dSbK%QjK!=Q*UW_cU4P^Au8Uty~pYRRquI8C-Jl2IHv)&()h` zKd|?Jt*c7%|@9JR0pnZN+HyOAWzAKA-sSt>hqtX==PCw~y=u z9~#yttWR!kZYks4a|Ck)q%F5XO6e}y%gf`+_e$MYEYUNXBeDzII7G2vW??Azqo5+n3CUX$6!th->HSDooJbRGG z;71R?@SvZZ;pY)m?qP%t5)u-6o}=RW_2}zY*>%gw$;tX@q^fxOR7OLS^#MOWvyYDt zUQCAWRSv5ob5W(*=Ud-CJ!09ZP0z`>w{8G)foCY>{r`&AO#oUKGb;O>oo|`i(aP$T zrE6*9ZG(5+j4sh5?_Z~ES;ni!v$y0PxsxbEYI=IjU|&S zDk=;t9w0uQrJii!tHpm`S~CMT-=sBWSFSMXFbgy9W&@*z-c|T)yqzq1aR?*PJk(pu zxZsYwn|#sdL3V#7zU0M@4WPunp7=5&d7UW~_oOET7YPdpt%G~gRPbcur3a6M9sH`ACb0-b+=*9`&u>J&#V%l6BM-az8~nzf zndaTs=Y_>70mKEYi21`5V~F2^l)RfvCuf>(zl?PvC`48uW%V4|I(WuiHI8 zpFIBX-hm#Bect;EDohD4n3wX$lYUV`dBUeFa;JNVAnW5e)drww{-*x_2jQjqqSjC{ zj)hGcY~L85ynNW5_xj*rf6b5r7=)e_+_anrBRuR2`xwy~qFup7$dmbsZ_D9R-RGXB zpVY1Pw34sabe?Xy^HNzL)dhf#rb;SFn*AxH<-MW)Iux}7B{UUgm!Sm7Y{EC?wumqVK;dkkj!rwj? zi&t!SR6*cl=9NK)M4GT6#$YGDMeHx)uJ|grVrG zWAi0GyxqMUimswvjE_o&S`k+HjUF}7e81jv^1<(~_EyJN`^gvGlVey3aMA^zc~V~h>||Jqt^K<}q?W$`l}ye%qvNPhFC%!=t!Sc>ld zlj{4w68I$c%in^^Uzgu4GIqg?8pKH}uMcFVtXK$luIs|?ek8at=uvH$?>_hmv84N5 zt-(y*qu)b`g{!H`zoY<>cERsP;IgPs*oN1N@kbV;N&^V6`9qIco1#;yWzOFEQfRBu z0=bzW9sX_n+j?XTQS?sYd%i#pf4o?~%d?Y2;x#ojMG--xmU#5dBThzW(-pIxk4&lR#hvBCoXM&}v< zJ=L-_uawD`>Biq!iI3V?AisG`{u`YSe~NuTnwJFA->*xOy3Ka_jWhw@ZLY9S0Gsg_ z(yjoj{+ZY?&PsjGr^4o$OFMu1iXOkE0m#QM@npQ=$FeS+9p%%ksP=<^!hph&;o-K9 zX;TV1px#mS!)URd&aIc^3}c@(j*fe!IhMJ@o%!Yh7{r}ab5tH*4C)P<4Z@U1EMWq! z_RrETK7ok@RyR$R$`k$>_-_NL?oAJ$cx{;FLl`@P6CQ(L@dhd%5$d;~M6YqbUWvSF z@qtpa)#$|T#4Z$O7u}orSt7hB*gE`xhvd%ZjNS*ej5n=IME(P3=j#W7uNh&$pB2+;tBRVQ58+&oc=Tc9>k)sGw^bUz|M`3E$bD%5$Ow;7<$iyzIS{XzGD25Ld2 zD%qeesZ4*ugrlg5t*bd0e7W#eN8g_}K)OskS217lD~YWF_AMM3Nl6d%vaTCKsqW8J zHdX5Xu|*vWfPL2@*j?GUljdD9$6}5KD?u?Y?S7a7B&I|zUerfIqzi)`1|5d3 zaMd&&8}fXTeTK}WaY;)rLT&q zY`)@$V6&%bDLO z^^oM-6`p7R8!WXg7|o;~|H`2~>?87@89y*>X>5(^;)sx=ll_U<9#Ntcyi1;VnY3>T zNavq9KENFWJ_N)u>+>eeSuxE9s^ztJ|8gm08m*@{W2Q!x-fb7o-*s!jMf1B9S}ZyT z_A8=x#&B7>NYOi9RLjIfw1l)^U#~By=f*!!vHi>4e#yJnV9&-_0DNbSu_Pe$4fKr= zX)N7enBu|!;{bSa1jhMHkNjX8|6H@=wY;iWt_pMgE0?ktWeC!vIQ;Yfk43q$f5;W7 ziH&=8oRHXS-wq1Ol(jF5D|`_5$8`q`ujz{nKeNg=hu+hCcb4!Pu;{`c#T4M4E%0r} zc-xOT@c%+_u>hNNL|ZKna?iD-i|x`~&Oe=6qEY<~@kdvIbn)*ci~mqh)*?LlRg@+e zExIfrs=w`ZaHj&_;(~l5{}8d;rJLndMUMU*?S2+CoP&FM}P zCZBVvGnYws1vinV9@B40Awl4dc9#0#*{hr8!uIpae-eC9D`a;UtXW}^FyXRYH`ILc z1z+GP&1t)I_d;%f#O``~Tm+9q8{yY^UK4DPm@I@5!OhKm=gO5UvVyrO#?LGztRA`9 z5LyWzPuQ?t%|P_Ue!fa=8!iZ6RgB3JKFpE2d1KZkRJeKP&hhb-!?fF8ISpcyLs`QZkHT^0Oj{EFqXn%xgs zf-S|=%mi&ZGgNP%aWweYaPYPYVZ_f9JXvzEQowAh%<{CM690OR-~Dyw=J5@ycM^AF zrWy1`ht_XT*Fd|pl{Q?#5`uNOqJ6jX}azW;E>ztebSQIg#`LJ;;nEb-Jv zB{B26^L#zSn!~Y+$=*dfL)e=|uzVC~`M6py+&Rvyz#rGk=1ce^Rh0NR?=EE%a-N&(a6kX?ty~N`vo7x1I9`5C;*LA!| zATJXyi3IBw8Ty@XUm&0u<9y5UFY|?!^PX<{*PKfW?-BAXgiGWVTe_`lv8I3;;75^) z9B(J zMb+Nrup|lol&xxkC`rivVm4vhH48YaYz&fMuRk$7ZMZlSSvT%-%eiT+w|QVQahk|e zzZ;rbWS#aB=ZO4_D*9#f^n+zgcsmuO)Ukye#I{Z=Eu&LUU9MLu>@V~!!BYqaq6W5D z*mxi2aXxQ7tmB}`UjAm3LyoTRalbzvl|8Dt%zFS?-Qv5}d_Wa{+A0!kBC8+*|F8 zkoWC4q{joXZ#@pG(Bu(3{i;}gk}LZLKK|*E`Rh-sc_rP&?k}~iKH@^hIPtx0s=yY_ zJw+}_W7*mH7Kc3Ww@E&AI8R(NRx4gYJ3vqqy|H22xeSoYoFUbmnB{wdvyGYW*t^?W zQ+uRxqWyCF%GJ*D4O$qLaTe8IVKo-FPQ9+XHg=@BZo5p!eeHK$Q%>5$0&SM|Y`ONt zOPth6$yt1*z@@ajouG3LSMPr2BunYleSLIq|>J?s8GzsV7>FyLv6bt-SauJo(~tTJoUG( z3!fybE)7E6%MOp(-B#t)I5w2RoIjM+W$>$xmxD^;^AVSkehFDSXyK|=Q+JftT-1G;X8hg!>6x-loN{h-S zep>l$r-^wQW4Hb9(zLA8r`-%E!Gr+87<$f5*3U zQ)%~k1zt8gbUKAI{st`^u{mDR*>simO+Is}Q-+r8&^%O2O?a8FC*sR>5m%{e@S$|8 zGTC3f02TE{QN#R)+YPWmXdZV-gTdGLw}%9p`Rp|JsuJ)E;}{1h6K{fXL6#n8e*NW|xV$Y@vBhXbo^k(+-4XS?1 z9+ESjT1hT2=FAyUZD1;&N>k{nnL1>X^X!wuV6Ed>=@ZlKp;OjfB@Hb9l5RH^gV0I1 ztz&8|aI2a+K}Q`fu;S*tIa2gRd2ux>i7hL^{?lOv3$*q*TirolqXYl`H_k;_Md$a2 zpri6on7r6@?((x7pT$H~BN3IzofqzdxvE3CrO9#$>?GHHIv{i@i<{FbC@0Vh82kD| z=I7brH~lXJrgri9jz(VQyKL?mOz-3w3w07P$vgV(sF=6#=J7WvNMVC0Zk%s9G?WxN zH{t5)W2-T@u4d3z2EBAP?M;S=P|lVF3MqY;lRW5TtGQns#*(BeSW)4c-=OKY6H|YX zF_bjPNwB`%kFt83-6@ce=im--fE*CJX&8Fu><4NgqmQI82;BnJ=e!!!wjIdCr&Hp-g}V|+#jpTZ?nb&?B7$Z)#(A*5IK6Iuf}N0=NR1C;*_07P7JL4V~a8}_O;G>nzF_`3=t-u6K zxPV31E;DU1O!ufbMia7V+v9=fJ0QHmh)RMv4c~I;naJYAvy+4t+_egNDbPS;-78`QJOVuBA*>!R1Q2vNR?lCkLwa=bbopvzs_h@&yeNm*l_*pC~W>Td1~f-MRpQ~!QDP|c$@H1 zQ7pN9(%Hmv-v03CZW9RE*aT|fTO$o<6OtA@m{kBnO>0vt>e{p>))PA)hU9a3p7-gF4jfDTivZxc?- zuV?Eg0l~Vq9PF1XQ|I(16NyqnT@~DtR(;Q-&f-pWuZE^?mfY)(?j>EgKZ30epU$5C z;@)rl>07^>hYy=T1nm*!q4QVNZhRVN(igpZPH`pGeP4x@WiS|B{ClKDU`p!~56^h& zrr|Y-4Vf&TH&{ni();qSZpx`QtkR4)uSSE%?o3}Gj`J^|-F_BIH*HM~wbjd42dAe+ zN`}i39wZwZxA*P)rbrhzTn^!bUyIa(R_!gTVNapg-Bu*5FW|>o7y0<39Z@XCgicG2O*fzM(%^bhj>rmPy1H13ouqH0WJBcyb_n$V&8Etp z!Zv9RuL+VcPAuBFpy`-q0+A&9BS7{J4QG?Fpq(2YB%BkAhjnji2oLa-xUae_8d+qG z8D!zsQFVzaYta1wt?59M@{Zbn_*_- zwwWn)`3W@*mD`jwH09l%ww4~!B71#kB5h4+{hR)A>`f53N-)dsOEZV)(`ZWD{6s@%aCSo0=Lh;)c_sC8PTqg{{CaXV|pgdw$gYN{4| zD1@S6RYC3(19;h#YdRw)K{+=}akFIVATfL5!_r$@v?{$csX z6Sn>G92^{ms@Zbec84F`R+%52)iUU?W-hWfoLjFOCupXz412>Ori_{924jn2>dg6s zdex>iE8GWI@elhJ&&%i2j?F~+EQd%~oL4t!gf5awm!c*c*3X__@`R2K1Wo;!2>0eZbEzq< za!txr^_^)p{THFHD=&CSz*M78) zfDJdifVA3gj2OV>nH0=*rEOH42j1#ZjGKmJ{VM{7!jO3n?3R`+B)~XB1XAPP>L;_`?$5)a0wxKp2KnT3NivUg#i^StBuv>^6 zqZ@~r0&SD818f#II7A-$Cg(<(-9ihQ-u+=ckGjKA{(WhTbP>dE80UEY>V2x?Xe;Ka zm2dQQ2jOFrH4dGp%So1S51reYXdjOlCY8_DAkcC|0iJ>6?|3M}?20XJP@#Kz zZSm$~xL053&L~JxlyT!LHBKVmvnnQ@fg3%~*1c zyR=+6c{|^&4S(gJzTpDCJro_oGwoWkEW8ame;ObN5W3~> z4vrLoqB4$vriFm)SzrAEv|X=Cx|$>8jNbr;t9RmksCndcWbZC8GcK)qk&=xat3dgT zLRJ)r&cq75O`k~8u|e{TmLr7*nTK{#;RPt)r)_u2*(dq;cEdbs%Y;%l2eNmE>T(aS zF=$N`sT=3$A9q>0+q@=8D7ev2&c{5rTK>U#^}P#V74PNPil!u>>AvMi=`>^yc3#bm z8?M{3i`K{$kF^j;j_H2zJR(;!MP40s4KWNuREt#TLftma^DX-x*SobQAcSO0`WNc? z-vw#H$wAdm6p}2x8-lRxoqV}1#q+Ou`5y<5tv_JAUHa(rva?GnMCZ}T_j+?n56IEu z3X`(4N{i4Gml<=t-0k^lddtJLLDG=w!8{szA(x{!<}ML>K$1N)ty-$yG(8oqw%tD( zb0G_Uc+?#}ZQ795Jhkd! zPSSSK^q2Gkn;xNI=eh^rUM@t-W%qi50aHnFPv#+gX;nB-hm#T=mO*<${8cP964RoM z$|mH#W^wb_ky2z=d2eQ`CUrEjU?Y67)WYswv^>FWXHgH|wA30es)D`@6B;7&Dy3PB zn#x)hu9}vNnO;9asRqTljMi`JuQ(YyW5)4ctA;6D|2Vj=3U!Vu6PF~uQQcz)=MH1G zUoHQ5q&s=!vdUcS0U!1#TeHRmIU_z4RF<$$zOx1jJwwdoc6kSV*W{#FE%Hxl+Ze_ z+%h+MQ8x)b2Is5yJQ)zqJ+5I-2s{C@v=^ncYZ)x&K3o0nImfF<70%zo&Tp{;jj9pA zMgp~x5+Y=+q)2^)1#lidyfb7ptfh}wr!nZ?;jyTk#bhBfOmeXt&YA$kR&>9j$Rxjr z_DktWG0BRM(tWNlw~d$iFXh&3o&fx@oLiXzS=fL8Wf0<_M+m%N#YZujhbHwbclBO1 zyp0~No^X0FY4N-wDWub9lVI-;L`b}YK+&~Rz=XK}jbzlREA#CgN(s!k#P1Mnz z`0-3;%2T6EB9y3!?C!3yKk8egCkZQ77|Zn+LQt~M z68H_OL(|U^KIN-ZQ?-aC<**D6jP|>yfl|@p?kuIjBKW;wit25Z(^i1YAb_!wNH3kU5lbrsvKtF7;> z`dk+tS@W=2`nDV2Wj0-5+J6UEW7E=kDPAD9H*fL*;p&V{(Fqk7z7$AH`iy(1esj-e zZ9L+~Dcp&=DO0$t=pkn7`#114Kfm38-R%B0hR_-=wtnpoh>E4KgCwET5@EJ}!O$^6 zA>A*+Spo&Lrf;$zrY6J%757jit=UIZ3j|qc<~%fdM!D*;5<3^>JdpN!N+Jp3ROqr* z)z(3_3TEjlhsvJI#TO6Hp*eBxy$(IXs1xb7XoNWG0_xL(DdVc<6Z=$rPr_U`|^F4q-4)y?|s3ZVcWPTnjpl-eg(R4+K2 z$m9D(QFJrBn2{nL!bRYzZkil~>}6rbL!VKl$Tmb;@RKX3j!~GoBP@;>&^}Q*Jl!tj z`S)sp&^Tvy9vVT}p}fjyC98k-upB$knQ8z<^pluho_ik$m0!*zAc9|{04-4Qc5!Gh zXg`pp+C%f zqhhu(WLWQn@}wuovu-n&GL-kvrd1TO;)?oaJtf81TrgN4BZ{F^VveCx|Y;tw!`s|EUEggE-~ynH$VN7{-(lN5AyV z8B4}x%kbYlP{?j5nW1UXpACuo7!Q$$(#MB~7(v}{ip;z5U_d$SXTerg$;q!*YA(2$ z4A~TpYze;|cVdVZC9)v>M_<+7t|wvg5>iKw-;9wWDX&fZvyqVWHqc1;<#LuvvPk^| zNp^tPbCFCn2&;_0M$FzRvP*Q4TZte+_8{i?mLt=#_I8y zkwxu#G@~11-2&T!Hu{ys=%Ofp{?L)22S_M;MZNVFH6>ix-i`qnGl4qRH;~rpA3MNjIPJXQ3e4uW)i)(DtRjZkCuS`s` zOMS3tG0{vJtU6gM+Gl2x?`zB?#i~l3)jA)Vy^$JApF5>PLHpx}zzYR@_W%Wzzy#f^ zD~=~PaWV%@sM=qKeBVxKOqr%3h6GeVqum-sVI+8;*G%rVi{$vuPT@)(CK~~YS1V!V zN^05NFV(j49}(P>`wyQqI&9|cX8PL%2sdXV51bpESe=Fqw!n1)*E;24$8msxi; ztwMUByEn>uUB@ScVuNx^ra~nlC zcY-)s#wf_`E6LC)q&-oxz~BD847y%HwC0qqm(sEXE058UCVKKk0oX83(!d%)Lb2eZD=BT@ely3vIbW5Ndj0E-^5*vf8A9t6>?RxQuhc}R4!L#eXn$t zsOCw=+2GdYeM>RDyi7LDc4F$|F zz)DIh3%|tGfe32^wfp^TIetTJ-iz~nBNLN$SlfU2W_Q30$HVv@d5cC67W$RWq+*NTvqof0C$GVv_2niXHygR4rplvyu6@h#VW5EcVGxWE4ZcN-ufP_}q# zL12Q9s%4^8{zfzV$g^NplsLvxy6xc?W@dIXY!EPH;gvcJbYiJ~LAKvU=0`?G5~-=- zBF}}a2b82A0aJ8!c(~oVIFok6I@Svj(wKW|TQ%Fju!@Ci>J6-KbjhgQsgl8rCX!m@ zoBMubx&ghI7l5<=;goa|=v??ZfCN2+BIxnE3JtO;(5-_!SxXa~*K$@U=$}gokY@xg z?7Fa~{Z37M|!9>8JjSR6EaY{buB`JyB zT{LuF>aiVH?tfa|D_<0_iBzL9E7px0fJ69lBc~mP+w_UuZiV{EA-$uDK3!H?)P!XP ztKFOo6BRA~GZzUv&Oc2sL)4SE^hQ^^w5RC!->ld#%1A*v@XM3!rxIRWHg#Aa5M@br zwgljwtG)iqCI8w&2H<&eq9vM%B`0Ii0Y1I>+@$}ueOLVVOm7X1QC`%$xo_forRt{M z-MC#EMYw!71@z`k2yrsTJ$F>WW~qH{HBmYPHWmcR@Qi5^un zg!V?`F6|QiV=W0m!0u<23r^#qb=}g(1!cus<5agE;Crv|;*%8jD!=wE2Yi?zqdr_$ z%?CYEf1Rq4lV8#?BF*EXIaxTH_{eoAOQgL!Bpkz8B)T5eRW z#dlyJK#~&XIGuW{F`8P^{NWVYpO%k;9ux}PNYQv$#Z@nRhQ^@?-RAF)iiaQFM_M{G zr|xOn<%qTWi-A!CC8PNOG2jUfnDREO3+H)=j z+J6NBKQZ9BJ&??rhHlv5Asyg*zQj6E;~+|5ZA-(3Vxrxn z7xj#!uN0*C=QTtd-vY5D{Z}jjT!&7v8WS1R3$RS-cZyQ;BMjcUh$Vvo+NWp>`RB6- zOreWGlxj@S{sX#~!ebPmGnX|+T+6}1VMaF-ASkuq)$PL=9D10GhGw0It*r{?)vJ_j z$T^dl4O-@{+I9kS8W@Fe&T%47nIsqL$Q|>#QGH zM{jTVVHobeZXg+sWkOZ$xNE3c{0bXvayFYKMR1o2t-RNMEhj70JV1j#RCk4!UUT){ zP!M2whrOf{yMWx^lj7 z?Q#4UwI|GK%%4L;LfQebad3QG@ut)X1PTdd$&zag{&_=$sxZ&|$$Py}v`=R9P$u*X=f8X?ARr zBfW`w)XHu(zq|Gir>A=+3S1m_#H5x3>s0`fwwu_^5*wcWu$@_7N#F8o(hqaDumHQ^ zPmMj5`6unS;{mi^Ws0MVj*jC6%)yGs(T8VYDE}bqR};*FAU5A}@eqgFS6%?o-uu5^ z0 z80=_hexgVVMxx6&kARetn3Qk~=i$`udkiT+wKRsdL45wyJf5Pcgmn0<`f0lzbm6zq zkgNXzmm`gvTs3c*|Bt^sp9Bb6)MzZg6nu`oot-Su18A3OR%Qlg-QbyAV$aKq9xpSG z`4-E`v{R*Ilr!x0v)jJ_41{nUv`tY@5|HkP z@8IHLFwmC~?;Ac!-1k`Hv59$`l_YgS2nwnKQ-$y}{-2hNg7!zW`w`+t({lPW9{2(6 zmeDNY^uQVd<|jM7feUE9c)$I3frb3+We8~R7a{g@tYUQRmr)s*7}qdHBBM5mRt>|sEKgAk~mn%IW;(P38^F`^PKQ9DKqihf(IaBv4 z>lB0&DGa{ZFGKznuUL@rN<7h7EcxRvVX(fs8i7=}ssLFIO;^{{xFHp8?8lGcg~c!Q z|0GPFBc<9G4eoUzzsZ2iCVeJfjP4~eQUjU|sO_aQwEE$)Rf_(XszIyXm9N@AAUW$5 zG)u#{G-EL5=WKa?+gsrn=kY5}G+=-rImNYHJ|(?)5(4ltGe4_#<%3=5x3o!(GBXl! ztvS}NEC0OJMk>@$iAR|7FVPsm*-iphOjtKCkPNh%9{Jp9QE)6&Mc5XW;%d3R@|w zxfr(10I(McD51-tp61V}K<9$oXv-^8Kuq`bbdjX2_P;dZAfT=G@bJ;?($KIlISoyC zDUj`Scw^wYx~a6J0UiF$$-3<63H~-8JZk`v?^{kE8dPh}MyPLjuFZ|h{;#|tLlTJO zrShF`y+oO@tfb<|)DCVyd!zl_eS4SY7=6DbhJ)$z>Tii_G0ziU$M7NtsF3c;KYhbf zQ~+QQ5YyNI23m_Wl78ebCrKhkAM44yoFzh<6%dO12noi5L~ib3oB~Y5G`;y{{GT2y zI!XXAkyh}Y5M4OiPbQ)#V#+Km{%mTCy47bc9@at-dhOrm|?d50`Vp3$l^J!6KMRM=`r9{Cu-7 zXj-A8Tc`zo^70I__b%%pC7mKG7IbfbV$q4rQ8lsrTYpR=M6gWCX$nI(DvR}$NCb#2 zi?1=x>Wb;XY!q)K(5%>D7sRTQ-O&G93Q7TKHfEh z!w#*R38m5Z%zz$4;JBFn%a<>G)6+?Q36|ywWN?e;?m{oLBf2oxjn^yMc@o_U1#J); z<#W$UsB3QhP0Hp%q#}M^eaI;! zJDzWP{9}E%zlBl4ceNZ9G{4Yn%s%84J}|YZs0FlNe~aT`fAB*~054auWckAHZJpci zTYikN4HK*s2%fz^$`7sG*Buq+yCvdwYOt4%+FbtXJLue$VkW!2+;Ml#-?u#Vr`ma> z5ZO+&z6I%Ea_5fNQ69hGB^fKA9B1wfOJJFHYf1?KZCau!hVC%WW8O7A+{sPHi`zAB zf`m{erw@LCyyw23^vDNLt5sh`5xEnaaV^86KNXQ7>E4Y;dg@&8cA_yD42FjNHQHad z$=uad`!g`nC$O1UnpYo_&p@qPzx%dD?_sK5n)rD1q{}M{MM*X{aziar{Gb|z@{RUt zj3B)Wz3u#tb%l2nIkwKGAPzJY<>0u)CkOVb>88jxTq|NV9ZuU_zE%3@9r^8A ztn`1JY{s`dz)TyeJAVF5Jk?B01@nyExK>HNy_Gi@g~!it6d%L&B2a7VS05sLvQTg z?;Hhj*I*fHm3K*dMzSJ|vV}}q5Br>i_J)i%BG-G)Ix}TY2Of#r{<`7MB2S{_P5`b&H^MlyHNMk7cHjm*LRbSMYHR@E4W3! za&L6~-Viy+)Xx9s*z@{sN>9erk!YfHJdfp6NUxeV=hzx~$jDHlFlaax^&O5PE*aa? z+BqP+szTImmENA{1NLvS@u_=rxv%WY9bQKx6ru{Q5R_W8n;bYd=}@58MCYRY0RqC4 zkn-}rl?={qO{NIG<3{-QPN>Oz4@++E>*~}lDc^I|`3aM9U!VwN+b7#4Okb=`vnj<) z%MX86Utwp<3Y-CF*xA{gCX!ZUq|~LdX6FgtHw$h+zSWD%FEI+UTi48g_lf#Nj*`CQ zxI2ecZ{AS8M3CZx(fR6n=lG}_l<8aFkDh)8l0AFi-C(UYjjWc?vn->#Iuz>UQWtw_Su< zF4^Q0(b$joqPdTam6;ngd1KVmjgOc?re2L{8i$7w|P3v0;p*ssE93PvX zDdcf?v0}4fz1%u-`oqn)BhkWXv#PM04u*I;xx`vRa7%yn)t3{2j~XEgZw|X*ujhKL zD|mhen>KQg?!b5DT5&B>7@>Gva3leTi+F2bAJARjcXidPq4Yt7Y?8M}6lUDs>C?Gh z*K)b%mZ~a9I(dFg2Em7nu0f)fme4TmJ1}ty+!$m@*IH60@||a|nrlk_C<*8&hN1lS zc5-EsjAtZUeZtPc=k7|2xsY<$5hM8rnlH11DSeZYd;F&UK%Z9>SJr{kZZl1WyZgzTTk<_J{!IS z-h`vI>sPL347{&zV|@H}OvCwu=JFv|Vm(u|cwf}b#x@fBJ09ZLQlPzML1$Xc-C7C4 zaiRqe1E(m!Jt(Cdqv%qA=sK0_x&_1T@rmhPkEj5;9~W5Ub^`M)T9({N9HaEV+(=L# zfh>FtpCQH-z@O8*-R^BI5(H4`rq<=daCiD^gt*)|%ulSuB^$^~^i0f+!q#Ew&cWmb zUf#pufjAdE(77sl;q7?Nx!=9_`~Tk< z?+wN{WXKVJW$(4-oNKMQFJ#@6Of5OruVw0W91}07Myn63Byz#Cp*{)j!`aR`{W$o} zQQgul^-5!-hoiaf^e&p?(-bCtGLaTOIXPKk(R|L8j!{j&*-Srgaj2pc-`{UVW4Xm< z%po5!wfnQ=I`e>HfP^TX%Z#=6{;g**3*J7VrSYkyUv7VyDq8FjzLqdbSigWtn4T@Z=4(D85=Y zYtjNU$%n0wrQt6X{_v_kymJQI&FTM`5Z3LNwvm5eG4|fD`L)qyC9P1L^!Dv`#RHVW z3R0}mfYn#!=v_%!_w|R@8C{npQk4rIbD76V#VE^__^QPb&8 zgwQv?YZK30DikY`KAL%_q2ADX*pR>8n)~bBfG->Xu4Sy&zkjt*uHrIkqLD4NtK!tA zA+_@P>5tF(W*MLjo?eUDx?nfh^CK0=+sJ&+kxa?fy3@Y4FFkHrFG3tOo@0y_j(`$z zFGp~Y-t+(UennNl`!$+mr>HQL!Q}cH;@&? z%E8y<0Ze1Zp>jKABz}wHl`U!D5Bo^-Zf-&9oX?DH5s`@(|GM^|i$Tf@jCc_s-+^n- z0N1Wg_yNifmiiDF$?LEGyKQ9^)u-&ut%506tw#B&RNF+Kx|P&u7AhDy(5FZ!g07;x zh#^VeC?#-DWDaFh&(+ZkqDb8)XrEhqoSE7x+tSnwuv`z5l%Wj~E z=JUUQ^}b`@q&&EQM!+Tmp;DqV61RcWDYs9Jbt&|3@-{Ei=k!>NTUfbkua(k9AK%}$ z#he0lCta%Jfl`~@X_14f$aeFNL0pzH3@$H1u9pm;XWoW`;(gmS;YwyAt=Y#0w4zdi z>~;Nuxc#cwI@%v#)wuXl(9Xl-&gEGJIXOBaEQkJ52?=Ed!xX&p8uNcMUv#kh%anqh zojq=R{OR1vibMMYw%j+9xdRfWNd0st)nzEw&%y|XF1UFwQ>>yuaJVfT6n>JW|B)WP zZNCI1i~kWHn)$}=9PdrfQzt06NMQ5$o;h$Qr+0qxjIFj$wUss-Opvsh)L9FWiHlZf ze8}iH4w+2-b#4IdIaCB)JKsARSQGiL_of<5Cm%y}o&YrW9@= zY|WkzfHppUMxnS=42;wv%JYU`YK1jbz-i%xssZRZVfE3;=lxMc= zRX$n@Rjx5&QfuG(Ea)?BDm+DcEo0jC$(Vo#V)qTZfyArw?UOf8N}m*~mi&6!EP32w z6nLqw20<-l8_FU7L1O1Cqd()31=yn;f1h>q8&BEj7UE0f!Ab6s*)Hs&kz5mr1R6`_%o7EA1(2C1aIZwp6zfoP^0pxfbw~{B>91f4#RCVV8GBrBXM= zw=5{tra-BeF@#H5VdXpz zTEAEM`jURSoP8tcQk%8(6{>it9PZq1QDuM7*JFSkJTjjDRzY+z+5y4haZ(U$LVdFv z%e!l9I>eSL{UM3|*aNSxA-bbx^`84d$t~iRBxE2gPfmL*^Qq1Dnk;x~riD1*DKLtPdVkV8apRNn? z-QU42`l&8igh%2py%dy0by%7FKx)t|p^EfAI4Mr2{%-6wNPFK!>#AJ5H?&9&5V`G& zQ`6+vIC}H7mqV3K4>WC30){K$RYU%x#GU)s0~H(%Ce$v}zxolOkj2<}d{VfuTk1ku z8$84D5oSuMA=e5!7fHZFkTsCFjG^Mel1EFQZ%V#fZApJ~pHn6BEBch>-q#Tu7PGQ! z4fejk8p-3RWf{<2f|8rjObUWtto~AG^TuZtb^lvQRfg-&P z<7H)#^L#sd+Ip4)IQ#xpAf~`vkh(={7e?jRhknllEHq(8icAYh=+Yqgk8f}G?G9Lz zf91P#il-uBu{4f&)i3eT%vTFB{c!HQpe7&Z+AMf0qGo+Bs>WE0Oin*FRT#dHlPS1( zft?v~rP?Ol4L}U(j`Y=d3Ml?p3zhD%-l>dRT<;V=d3g)$qGybP_aUoio~eY!Z@TmvR?Hy7TeH3%=)ESK(OE_b);F6bFfWHbVvr+QRVfi~h2pl)u4IrL zyrxkFC4L@mjmpvbOUQ*AcE~g)9|Cdt-5I0ZYK@Prh71F^$__6M;5IRTeFnZzvyH86t8U5hsQfd~!v;R@p+*)B6 zgZ#(*8X6jXDuouns!44*C$E#pdxAkz*?0PwbL%h@51&Zs#c3$#a*~h7ZJ}ea4G+zH zhiaY4?DRK2m%7+rzK$vMRJ9*Gf?03sQ{MncOh?yn>^WIP#HxMU+nOOq;zOpfp|OsE2vYT_AS!UP+@?$f zRNK4z3XFw8zBzrnM;lbzDQ1|2mLkOa)cNa~OG0cFT6y?)I0@y$_d^(1w}D^B$L-d4 zZOb2?FCDB5m+9b^*^_+S7vo4jy7g^3mY3sMI_8qPd8DhPF*%warR(pk$`4|b4(68&e#m&xz`}XO%&^WS$&OH? zBeV22wpqr`jnw1iGCeQVs$%`^jsIE9qV$k}KG&jX$V=l%q*B8-uYhUBYRMO>^4m`_ z@eM3K)883^1!BA!-)qnrRxlP-V{@X$we?*1rznR$ec^y!@6)k$>(5{yCnt(&^hX#r zJ?!x{?b;Ls-ZfkIarv9HzV`_}^J#Y6gL`~~^Gr5~NRN%CENXZPPilNQc~+S{;}P>v zig}+y*kJl$K;Ns<>Cay+%kURIUg}8X{s?Qlt@0(~$rVKBr+UAwB*OGN!lnt1IFOO+ z&ExVo$#+ciA{DHv9zC_Q6BF*%d}ZsNPD7$v7XfK1Hu2k4#_Gpii8V}{Um)a- zpSAlz!L)+d%R%0(zpMht@9l=~D=zTpYMB zuYaJTfz$3SH=}$f`w7!{Ld|HLR&c7{I+q-AoEqLxJ)cl|7q1d!X^pz;*~@H~$NI%g z=(Ge86($U@s8EzDGbU0hj^4d>!g(bEJ$!PUk}|#gbpr zkGuXZkX+;*|EFC@`;r*?Hx=Ta+E&t`NeWwj4-0%`K~&;Od!!7hjhAE87T!xtscL+& z9YQksFvZ1~AbhZjB)uCl*z=)w)E)hn7x4b#`NItk)2O#DaQYScIl*zqOQ_2}!XfFXbta*}G-2aqu`{zCH& zfdJ%%cLGyjihQ0uv~Zm78HJ0zqy}6}_usf!2mLv`nPbrz<$Q%f#_DMOMx1`cKfM5) z!}6EQ;pwp?_fO?tmTFCXrdy0_1YY`2#4zCVDJ(~DT+ax3u~5ZC0!v41K9$Jwe4**R z<)E@znO!$tj7bui?iJ73hahRz#0X&9s0CJ0a@kH_M}NFn^v66tgGv1+4HilpKZ9AM zQ<0Zu@jqmz?*E*k@&Ty~E{v-weEPQ|*sSvWh^=!8Yb6 zaXFW|MxIB%s{X|e{2iZfRYfc@UgD|*bA;$X^+QJR(q{&)@Q9t(V?m>`Qiztpp69A9U1R&E_S{u$I2 z)~8#$q&5GM0pBgmuYLTxs!47PS$RJaa+J=?Nvn}GDv@d7swUyj6mcDOsg z9b*MkIygEz3Xr$x(u=jn$q+?t zug@Bj_oCIh-yQ)l!tXS?Q=5!ha|hU8;*Zc8ea!ZrK#cp>v9grf&=ojGWpWVc?feV% z8#}`=u+t)F`Y8N_1V!DslWBZ8s5I%_)9PQn0XEF?bFXnywFjNAGqR!{pdoP%)e$Uk zr%ynBn6UHG|ayCy+_hMGKGT2vK_k*F* zvqeyCX4+~R9~QBQCzyAWtVEG?=5Sd|_^_|HWhsQ9{tTe@y>W#-;eUI59Ye@PjpQeJvGwIYW zu$ClqlDmz(9x-X!RU!Bu1fMcX-pD1lAEvT8jw5+BKqLG+9lq)d)iykkMHT=8mBxkE zKySSCu9dU4@%r1DxmQz|ceZrv&^2`eaDU)=ix%!!VM&jCi;437t%#GL$RL|U;$FT% z`UzzqBUGfjjR)7_NHbCNYOts^^FI6JH~j$tQ7eV5W@P~`>H5vOjAL)|)ueW~?p&=s zL~*CT%a9Df?f(YEh_#=Kw{~86cZ<8y?SqTo{u{r?T|h2LSSO?1zo2E$o!CE%$vW4+ zilWgq)B<9XO`^j6=`jd1W)<^pnycD|wSt%^cor@(vQ!8(W0!~opcJ&3b%k{re7zL& zXHMO15sj22t?YfZ2&!& z0LUdc*`rQU5P6#*x-a^?x}-8r_PXd4;h_XT-Hw16Ai$$$<8-Av6_f7@y5HD@`7MYc z*XO9I;dd3%+#8PFZM2hjaUap+X^+I6KYX#2NVD6&vd|aT9bS6paAi6lRvIfFf19IoTHuTlH1wveX!K~p8dZ|_?ksmUqa%|p>0L?haI zwBsV>iStkfDBS-Zpm=}20-(0IjJ! zYPj}*b`(kizA8Z?Auul$WVRREgzOfKF*>!;xm0# z|ImAWe{j9{;UpBRblr@lOy6g_@`j+OOjfCni1Prs^h3a5;Q;+^J&Opo7l*(ub?3Ng z5yta@$+p>EJ$hi-!u1%qd~HqZ)r(*+a(sB*wFKxFJLAXt8;s$spV!WqrR^h+o!b>X z_T~K07tpL33qZyEbD!;&ot@8{TPLDiy{$y7um#}!8GLWA5KG%kk7@7RvDe^01feK^ z&F}xMk01YA9ly*9M3Z~WnE%wr>jDkMiDL7)pP{d3X~mc_;Zr!Lihcdb^?GsckyaOO z*&MyQ3WfS%yu)m}_X9G3!vz#;8ro?&{^@8t7&`cwp;8ALa(dCw)_+<77Byo%v?@fK4ymf&qqqwHR+JjuyZp8{vOj;eKT?Kq_h%kSAR;2-J6g27e=~NDC16$e1HW0t zerU&)a44Qo3~i9X@S6>aIu=8vo;<^x8)G51oDv|490e5amy0Wtr=$~%if?9zaSF2^ ztwBafe<{goi{h=+CjMzt1b&1#%YG@b0z@RT8TS!qBW(byn))>CJSbKr<+p+r4Ip;f zc`Z*2#;Fs~;v*9lHaTlmGtze4dG8s=KD2eNtBl?~Ua{2OJ+u9t7LKWzJ(~PhQK?l?CE5?m)qB@DK3XMucn#_W*^t8{oM4mgM@Ksb;^finL8L0SCP^jJZ&cjud zn%Q7W`J?3XSK*7r(DB-{M3k2b!{MJ>c_;jYQ}HvZfsTXX#^_s)O6@*>jNjhx6Q$FWjG}n= z*U;%ZqdxDCnD^sF{kMcpH7VDOi{eK-c4aEY5yLzrV1BwJe0p%A;~ahra`g}(p99GV zsD6ryv9goV4z0-|gwA0RBD+!q9Upjti7x{jQd)5wvQgdg@Ky*8wD7F2sFOv`KLohI z<*!D}JKyA8uFR{-C(6rn3!N3Mk)k^x(*dSi<@ROQjJFL*3r*?ejv3bc*LzU_EO65L32vGQ-!Sz?vnM<{4 zKGRJ7c1dmYi3^K2ZwR~E#?q%%Vz`_-^Y5Yde@s_q-6==7E_Pe#6WB80VbE^l_`8$G zFq#~b$btaqbSd@c0d#~K`Wjeu^O^b4!2@V-6OKt>y84zvk=KB*@Y^#~_IgJ__g+<8 z9c^RmK4fF)ALr=}Lxzy=ji6sv<`jm>Rm*s|Oaw%R>1CST#SZuDD)B7ur+{V&Mfg~F z%%+f+MrgdIJyzBZ{DGaMh;U)lywU{Tk;@pwmX!t2&A#)@CLCsE_2>-y zf`UbN)7Qb$SH~cyfg-2-wMU2yO2FUv+j@^Ro1eIG3M@eD$j+JXXZ;!)1koonL1qLe zg7oEY?AcNdqk8C3uJW`%szCVvok#pnd(~)lnfT3StCQ4lw(r#NJ!`@8=vEB5R%aP6 z1BsQ8_GuHOPZ!cxs)SMkt)Xft4tks#j%LJP8T!98J~s0K)z_ns2Ci>@RY#ebG_pxF6AcgBiUZ8Lkmj(y5urM~tabIQnKlV|& zfMEgs!$z6=(IyJTy3>`RQy%7Byk6QVZ3wsRJIx0Q+b!wwFt}f-=Gjz&&@o2ilEKkJ zbwX=h>ENKV3rAf>o%p_DB5@Pt+XMPN{*)$e?}x6#ZWt68g?1)7>e&XZEvfi*KF=U~ zHE`{2&UK067yEZM!fp*JCBO5DU+r&HSstq}1qs+x^2UUn4C(U9ZXPYXN|89Xk+UKZ z1qAGK_z|bwVAe;(#AcB(e_FHe@treBzwC+aU8@Gs?_c2`nxX~TBkL*4PO0eVEfAx|yD;6zZ z2HYyocXm@_cciZ?&9JMlw|CmdXeeI8nElLu5F9;jaIR3>RkOKy6=~WuY}Ora7SW(` zaXp)amD-`(Fxz2Y=4~1gY|Wy=_H8R0?)}05Zetx0j{oQ^A+6sLiP+y%i}CZ`3mR-x zH(qymlqyWF62dMK2ZTd#MkK@Pk`S4+rw_`=I!yhasO+5{$L^=}d6u=Vv7sO#IP2?N zW^&{s#Fp2=QpA>b>yWA<=ux5#2k#<8u-bW0H1CUO`5(0UVAymAdZ(d}sQxVz9$sC* zLSd-(6ov{8ddai}Ew{2J&AR%$nW%sbYP76>o%ZqvQ1bNK7J0r;b!21`a*LEto6%sTgijFUkXcQ@bj{ zrSOOKP^N{sfuKW?x-T^X)hVj$ZdW1f4Hgt-rOw5ISFiL&Ie2msGwif9@`M9 z^ICcdJmNA7{F?y3@h}5Gc1|nB@5ac>PRpn2FPS>{mm{?6@0wJtc%M{HVT6zP4H{JV zTTb6EXkv2{#p&#Hv`TwFd1Viv>y3-mk@^71a{Oik5bzIO2H)4NSnr?p?3J}Ne8YFP zjcSY7n@8#TX8(39`Qn1P^O#dv8qm9?Bp;|p^UtRK-Z zd}__jW$W%rrCrqi{t7YCunbE2RZ2|yo)2U4>{Wz}y3MifdZhuPW8?V+gbqcjall+Q zDD%~jjYS%XSD=#y)vN-FwO+S3HZ?(lD?7Q1b{t~BR}Z|mm8BFl0FsYqxz_^}d~1eZ z$E^Tq6ieUVDyS_G40zeex==HKi1e|Qp-lA@oa8=w_e$tz{*y=VTqP4;(0haa^AvXY zh}R%%1$m`P(OAcyJrl0Y5D2wYMAa>%CD|7n=vMwv@|>my=;Id1RO*4xx$F=Rjc5T$ z$3CU71~SCub6FL$6Re8S!NCs@m#-=RA}$opqV&iRKUe(LNn67~8|K32^Q#}Xqn*lI zz3wO{W2r?TuA%mcg*1i%qi+_IozE6I*bj8*{xdJR=76~~ehC3e-EvKPC zgIFma-O)B6T(UVXyF2C@H#$M@q2FXI?o+=()1l~Hm`YmQQ6~2LT%7KsODKW=9ud$O z^V$wy>J~c9Ga~kb-R^Mbtf`kp0nBBw8=CG1DlV?mU1um2ggV_l=wH>J0qg9OVq)3M^wG(U?-*ccfh2gs1 zWG?j8%>e7=qzP+%)d?aJOOxaOziP*y{u-|=A#CqCOP0Kw5Y+nD^O^A9=_ub7kE$uQ z07Al~ge|!@-QNyV4V&XiCUA=52Gvt0rW;opZveM!0nDGFO^fj_p|xR`vTKZhx$hY| zI>W=y@oK6}Y7V#%nIFo@7YYMB`a^s-pb9U1OSqVh48eH(Rgu6_`S)PX5 zlQtnCGN*M@phVA{efb7eur>r*(7oMMh0#C)-MY7k99;%29=xZE|6mrDpK72QRQ>DK zZGd42<<~R7)WgNfL6ww!WE~yg6ODR*6+$%1P8}RI%|5AbQp?T#BlAA9!F{j$3$H1Y zRyQkigZ7NejF3eodo~Mw1qq<`e&V7{Hc%7GpHj|XJXwijMut}7rv_|Qvx?LqO=~wl9I358a;Ygd)dG24!Krl z_r@>Qi^w=Aw-gP+vN*izG)_1K`6tSP0FUMgH zoWpZ3J?OKYjZ<2GC)^fy?Dt81$6qV{B>m;GBN8H*pHwh(FSOcu27zD9%BDns5?W1{# z4%bq0mXtS!4yHQ~zJ%h+@0^A&tD9@UO2=M8$1RVTNjnIDM#Dea7Wf_nwFWJr_$V8a zEf9-TW|s2f_90jCAP`vb8|!!%KVP`{-wMkgt~gnnC5pEZ-W>o|gojz`#yd8JQU0ZR zg*633>V#V{%Lz$J%IdHxs~AOx@7nbCk)sYHT($U5yP0*KLNtz%{gz%n&w=DME({tn ziuHxLq@cBq+Mc|GYi7tBejTFi(@RzHo*9_hsUw5J&uj_hfKrvG0jfb~>b2RFegP%1 zDK!T1+yE+Z9^Ic{`-&BR{#5W<1CU{5DYa!UB6IcyC)hQ7-eCEK0G8KWyJ$;xp`gDB z)Sk=OpRUP>f9sl@VZqObe~`^wT31<04s$1(g$7M(!sO`LA>e9jEwHz5; zI~ox6C%rv9690RjWl1xZBn_I9o`rN0$Cgp4KEv+p!;;7ij4gSKr`9~FdLhJ5t3!pt zm#dZ?Mwa~Q{2K#Hm^0gqx<0+K-FAESnvys2bYFlRmxG1^w~=x0b6YN+&4oCk>23x_1-j^BBF>mPq>ZWkZcdX?`_#Z0GBucm61PQMN<6-+r0JM@du zhmmGn&Z>i>e>_=kb9?r_6AA?~zVyixNn!s2*1V{}9!;)ybjwR9Bq*_317KZD|7Q{g zGz^c_oD)jSthdC}&lrM(xm?)He`L)_=rqVj@~RBG4a?WqG9H2H4j zDD)g|`1F>KqNjU(wou^oWz@=n@3RYA%j^Ez)h-=!bw1172S5G#UYO2^XZDYp$ME4F zk!G5$Noy-POTRsqaLF>`1nn2MB?)W~aay1*OXqZKCYpK@}<@(V@m@YrTB zGKMPDt5dcZGeP-^Hup|VeE@S(1aK@a-I+5zIxbe9ksmX}+hC+dIiwVRXkp5Ew<^KC zV>ZCJZgVTb`MPL!i>}#SO#%&Dk|p+Fg4+U1b45-T%xRT%b#L|;4V=mZRC(kZW?s+-0W+>}7OD(Y6l2f9)Vd9?;M7-O{j8?7i@?)se4O3bJV3Ml~_w0M5#h7+a%d>qEBwHH%&2|B| zX$h{neo{P{Ha>9ez53g}?`f#x> zDrkmFF1OcJg&xs79d;3P-;n8glf+@kK`Gzl6;6BMaWKxT%j2MPa9i7$D=&9BIpY<> zuFW_%TtHLVLtykVbG*aBya9>Gtw76DHQOtI?_6ktyx9ynM3{s=4>sY4HZy|tT7T9r z6nwVk>*Rn>gyR|&g}8;*&=yUMb&(hGZ@Nxmp7tTuDh(!M6tfEI>Qv%X4JxhfWHh9C zj9BX>Ub(z0khOdmdG5@fSO|qAA!Gu`;jIktepRfNkwiJzEpSV+qg z7KW$d&=&CzD_ETYfZuXpQo)knTIOj@K$|UtcOciha5lXno^+;kSfBD!2Il5-7l$v2 zpXB+GRC+02Wc*AQ>y8;?(~f%YPkM%|wu~IB{r;LyDb3D_DI^m9#+3`%Vqg5@GS}Cm zmc{Gu$d0T-EeNVuAu0bnNW@F3e#~JDk?H_Dv3kOtjNWa`vX~Y#2eCk{#(xb>Ut}eA zA^VQATRRlDAk!}A8;id5s^xHbN+h7kl}BYtB<9XNbIPC2Pqoa6j+dYGg9t#+X0Yg7 zDcWdWL@j&3P3dULkPcC@}L?*2^F86=Vo$-}*C8zDn4&y{+KW@7u& zar<@ZxG&j)ET74Wn#RnoJp7Vi^w)h2y&VpdDlKt#`$k1l478mRITyHksuSAWpkWTV z44p+k{t{*aJ`6ycAXknXP4e$|_Px#dkbS`)c}8vm$^btbnEO_)T6@EbE(m#B9+ z6t)pcw9cq5xA?x>$C)jK_pgJ;9JqGdliCv53B?MYLarsDb$FvwE8TFtv-8C-qP*d2 zfg7j-vyBbOM+kEz!(Z(MD~caxaD>dGT&eDFzt7YLQ}tT~7$)oZ%Ml}f44$|afm<0V zCfHY4;bq{2?$xA$s=C&6?5LuG_tThz!Fw)}P3;HkHA0#Md_of};VK`rS%qc_VIc?v_+B zH|m}QDtS0fHsf6C@?Yb0tmt=IC(F-fwIzTsw3{ zI+L+(qtijk$)()jufbpYN9A86k*{zDE-s6gZkX-J`t&9Ea7O+vF!mrgp@nt#st-){ z?Pg_5@a$*r8d!aDYutLs2!|@&yE-8{IA|i zOA_8DUw^EBk{Gq^ckso&A9WK}X+Vr4WHbunqXeB<5Zun8CPF$#Ds+!2Y_fpQ9|Kiw zv9EaX92;+3-+aTw^Xu%>X3=F8Q0B7rj`K%-d)D6=&FR8n2TdZTu_c;_2YfIYaCr9M z>pW@%oPGfZCwILd6g*1u_iG9{AsK}GyU_;DxUmHOK+OiltSGl{!nos- z+LgDH3Sx8^;7JE|IerU$c|WVC=Q`dw{7^2a%baZH6iMJQ^KZP9G)xvpAbK>L8YqMN zf6P!Si=KWx3H$|#GEllH8YK)}nAfbMSH-7`*(Z-QW7PfxeJ(4AS+C|v)XiOHH4UZmNC z$hyy>jX*YnoK@R|6gY?aA-NhFd%n@b&$PGAhweZmr(T(dPJYT3%=z@m&efIKOe2S; zVe%)9Ug-|AB%W&2mNmIE7kiIRC0a_WbVx!+XHVT{=f}!r`TeU_H&Ux|pJ^NSMc||m z$qu3jo9kUNFGR(AxZ$DUIwNcS7FfBgJ7F!Ll|%2!JNKRhG!zpC)3e+N@7tUEX0Nb- zf}hyC#STa7pA|0UO>P-9H`|R}^2%=yzBMqUMsg+Sq^M$R#zm64W)^ZJ(wzC&L1KzU zhy1bwk%do_vIVbEH9=@QGch7BTjbxGOgui7@Vvk2ods6<+*0GV7TAe1<@Q4UEMZ(8 zSQde9#F{)~-ob&`n=ah*9|#jsI@#9a_i`A`+PuvpWX$7~-4L*i!zIFR17-PjLb?9n zUWVo5Y!f+MdqD{CRKRH*F`vKgBpn`S5`t>c>kav}Q_-PU(&ycwdsQRAtQhCVi}q2k(joqaDmF^wEww zgkv$vmTZTf;ls`z8^MDCPM#TQ2dO8T^P@Rzn(ukdg);G&sqOo3_v@oFdx?3G!QIL( zgZVdho4>tDb9zCZy_u7t8DZk;Je}XQa^PNGu-k>Oq^o*A>QO!GgxfD_w5RGk(q7>l z<+p&)IlY-c9cM)!Hd>QRQ_pdgy16$Qs(iJ4mf*8~ zEIL6gDi00JYi3k^WIS}eokMGNFB;DROa$_Z1uaQL&OW*jY;D*#P697TaGsO|2evi? zrzah6jO@NT2aP5J{AjW!CB-=@ACHg;NVmxSi5zTg%!-gv3h2=AS^T7Oo8YjLQk>S^ z%t|t{;VydL%F5gGTriwCkV$Gof6UW#3y{*odeI0Lx+V|Pbj@T21}EIi&t+DvKM@o( zniPSPX4FhcPqN?JQtFo3{n41gU-7?6i|;9J~X-yJaf!%D6AhRLsho|Uu%+LIaJp#$}{JD%Uh+4%53^9@zI9P*y&X#fM> zGa#jZ@6=flPky^{DI5O2*dtv?itQa#FRUd>V!%Z5<(&W@*v3g@X1bH3*4*xl(DI?Hgjj4w(N_aAx_k;aRa1m4S@i_RwsPj&r&1ATwL5lZ5typig#q^>>! z!PeB&<&R_9NS{1AOzyHPy|L%ZmL=wVGA(l=qca0T1>lX^*>*4k0e5x9 z9&dH;=>Wbf#bEwrh5n;5^(9BYc@_fgCX=SIqMhl>Yq=TXK5cr7l&d8b5lv)1cK&d9oM$d0Mgycz@C1?;Ox;aj2lnV2v4HOz(LE^R`XZ3dwC zsY4GDwYmsXLEA{!S9yNIv^7j9Fqaz_b}0E>VJb%myCA-ZRvpY2f>QliC7RmCGA2F&!Q4pk2J^ za`A$UveEl~Ob7_R8ijvjUM__x+6rC75diGn0c8ZAj|KL@0Kk`?xjc6X>=_LNWzRIc zmhq&M+Icgxaha#9Z*U>F#Y+Xywm~Wc#O*tvPKrPBQ)}cVJ9rzkj6UEHb~q zo~Xqj!CqQ0)6h2VaZPorki_#`?$n2-yT>YpXA8pb7FzZzJgr#21m4W2O`kxMwux|) z={OJ)#HBVNTzTq+BAFp3-xD&O^}Y65h9Qx)A}^^)DD8?bwYq1Y1lvr6%TUi=bkhLI zZIuEuClNSxI}qMHQ`M_~jY;$2sm=?=DxWvJ$jXo3_cFSa)pml*>X6JEfxEe&71nZ^ zyNk8n;apbR*R!XDAB1@FQ3dkKWr?l&)o^8rB@SJx-?_s^{qFmU2%rE8QzD7fNIz;y z5(4@}yx>cKuDJJT!RKG9@1^koMMQh)%Ig9e6)Wg}qHBgBBC_|Z?e&cQm#|=1DVP8{ zSHQBhhEnJF>5%FVE@w`DQ{^I+rZM?UGjHm)g(O~Jk&RtMVy9XX?>b|t%yiFcX!yWh z63>T^XRqrK(NqmwNRX()jFHZD;mD69@qj!1Y+b=Qj4Ut1S^*}=@W09qFV!?QD;!D& zWM0LYvfOijUXg&7CdZdjnD|&H^xE-DQ;eIC7wX5se#Uh|ou*p0&5JM-&Fp(3Ja^mt zX|oCjrDE+5!FC?k`wJ_&-F+4U?jRVZhwFQh)t3O6>uNlXR~@U>9(@M+yMqyI&}~($ z*TDFgW+Vf>Cg1z|ty?ETZYEu3*c1W}dQeV-9nQl)VP3lnu$-Lw)Q8rU?)C@@k-HhU z&hs__z2AP0US+C97(cVwdj*6br1SJ9a(YoTr}$bu>b2Aw1M@PJ!ddjN2%8=pjk~jb4kPS zer86vxsqRfdR1;+nc0QVE&*t>npWYLVhx~HO;Phft)GO~{-s>OqGi@JjGw2+BjPEj zGQwO9tA;H*-v!R1H#M-)>dAdXao+4rdHc4gp~faY0M)lC#%EjhXvkhZ}EwjDvcX$tl$->+G7)=W<1#P`3 zu2ch4HZX_+(4LhVd3?r{h|;q>)?W&*o5=NB{M8M@X3!p1Zv}^T2>7h3;url|hF(U$ zP;(6RGyP?RiPo)0Gd>4ujvd?4h`3lLEh3X<5x6fuvs?8g0u~*Z!rl&wn`i&bCQz}%K-IjBjFuFNLyJtcESdajd@0ol zRY$m8HS+(G{)GF?-!Zq71H6cT-&diNGn5FqeqQa$UdgX3X2(GEt`UfBV{4M-rP54M z(br#%z^PtPNGi<$kJU&5&*=JE2Rlu>>NCbGC;wpVUolIylZJ;vt(Xw_lzO)_%|J-w zELVE)KBHD`46o6iAQ}T(c=z>GMI`?tOBrD(BJ=0;A}7P=TA&k5&^+jRIEx1A+MY<< zW5B<_!l8hr(|}%9Y4?G|Z~-5^LIDpyUx7d%cRcIa%qmCQZ;+n&@J)Y*)uRIV$jAts zReYC$lfS>)inzjzRElo;Aeo19f0Ap~<@~{ekO|IZMx>@m;KP{!>#B%_w@{4E3`wPwHpKmuU9*P34Uj`d#KJH9l|cDgQ28Z0*qR z^9P)IkUYUX!1`G#dxz0q;`{H+ZRLtkOO=|;mIlL0*Su&1!u?xik!2glKLSPl;ZRwt zSuNRY^I_WN#*GfeZ|MQ&J+NNRTOWNkpohh^z59NC8&{@uIXaq=-TqBb_$b?+h{Ub$ z&Y`~3j5qiE_@PGufI)d3xR9kl#iOb&y$9&jIILiAum~~-*yQR-%+`cEBGziWPfJ5Sg}{`<-^}dNtZW-|_d=1uA!BqN0cE z6bgbq#|U5LSmmIU6&SIX#6O)gKiS3llIdA->~0(COCU_N=V-s((9;`36a1L6NHBTcFj!+o`GvnNo-yBB44q5?%*7#|*oUf*eJ?oGVx<0!m`GP(?i%2cFV zkx|@wx(>ihnn6tWX#hv*-79;=Yov0e6n}0FJtd{Fk78Dcz^UIJlYZA>tBO5gaW2rV zR#m&Wk%M2;cs(@v9UsFfAZp8AT08T<%?E23>gfyE;<3l5(gKfYa%!e9%q}d5GVW0L zxA1XwfWuzs{-p_}6+c-|Y|}V$D#vS}Tk5}m6ELLR$xM@7sFtF>pmPL>rgT|tKeL*c zC0qCDg=j^Ul20B>nFcsMUP8U+c%Urx*w{CK7XfK+WbMZvL0u?GdW92=JGM+vQizP&G4Bctk5Gh&fF* zns|7Wy8(c8(_K7igA9yRUnqt4LTb_!Jn;Lw8?88FfUx#rX-+$eGiT~Lm-&(0tALRz zaOM7a^5n^QTU(nT)l-6er>uZ|JgbD+5aYrZaGbQ=AEdx1Nksoh;;bFfnw+_1`J4#|H!Q@h?LSa7EBb~o3%LZ z=qT?+^z!&`|KI<3Oq6%^=j-uM4dE-FwT-Z*v8Y7w>lzlys}41M_WHl=hdY(2$HH+P zChHgZI;sCG6q|9jUpGzG5s1a5rLw}p!gz-#mX?jAa^S8UKk8hOdPiU1_^~Nu0BfB< zM@I)SrKt4v6_2E$@#yB}TfpwN9N4UJo<9!@G0UN6fGHfG8oOdz*`uwaqwvi1aj9iA z9X-8Iz@`7bkRw#lI!9EnYj3*+sj-q&|Eetim4+g4SY_0!S2UblT({A?o$hnx*J7<0 zL1m*{9V>0QH}^4`F*aE6m$ik(hh>Lkt(s#01Mdi2Wyf{8p#L@+_C3C;G5P#^0=NK6 z@UIj<(-LvCxaN;+iE5W=A@w1aO|*^UtA2t1R#b8reH0{%^hQ@Iy!JmW%#*s|d5NU2 z8~7TBXE`S3Dns>m{q`m7PyN=aRl$M&KNnvok&9I*epEjHadyQM@9aU;>YsUa zong#w|N6a;cm8J;$-(uMG-+INNPfnb5u|e zN}x*k~7~f?C!Upe(wG6{m1u> z)5C#15Kf)5_gZtWHP@W}KL}M{;(c3q`VoR) zrF>40JWs)P3~`9vSwx0ofY*4phLgI4k*ZbRvyRP$z9N_-DuVf9C9=Ry2-G(AqPF%a z0?N;|UQQ>Gk0DeJC|}kti>+HV+rgPaTFaU7F9{Ulj5l}EIVExqTCK8+9T!xfKR;i< zX>FDZB7OzmM#&Dkv%Ku5~*mUy5(R)8>Q;CtezCg3XwhUqj=fCeJNw7 z(6z3M0erV_8yj@p`}7d|sfoCY{#C`eOFX}E{aCNWuEAk5r{s@NRoH%4tmia&@`tKl z<^8WH;`b`N4@D2bLpKsy9d0<;-Vr?A5KLm!4EI&lBB8KEGJvf$bfINy^m~a}@G)>W z%rNx8mfwz)0QnQyc1&T+edM>o1+v?~tGaV2B3bAUcU zh-#WY6m?xz|3`BZs8rty1{I+z?QD1>o<1R)%=b{54ZaMnWA-~zr<+nc8?gi4aQZ6EKr^hsIU(j;gxJo518;-DhCgmUmOe+oNvShhs0JB0%+;>z9EA%m zv`~uOVBw#AeRqbY@6$SBw?-4o;JKndxxD13Z(BDw0BbolByMLsnj&ynEpEerkMRQM zSiiu4j`-4V+waYTGqqm9=N-*3a30ij*%>h(HJ99^QU4nHIOtWRdVzf(VyCq0J_=}7 z9Ja$GAG_{-NUoN_I9wA?Q*J~K*UsPO7e!neyK_+h7?652(M?Q^%-Fhh>01M`r^}?* z?#OWc&TU)eK|Nlmgw+VV0XVbaa?%y?>TOM{2J2UPcppP$B;zHHfs^5ub$+}}bw?>2 zrKTW)2CMdp;3qF&pggLce4x?SnhSHGlhhTNOCg87Vf=Wkd%EA}y#~+L;9C;wa|^2& zQR7TJp5>G(2IdPdPYXjQVhvqJ=xKJey|=Y@fNSkI;$R^8V|$5%$c7xX;cSE}aJ%%t z0yk|{T_%Rz$~L!CBYyNw?Se!f>;4PfSex2k@*XX`MmI$T3LGDZh{t&BKJzRQ#2=vn zh~$UCpACrqJIthM{7jLTO*ip{df%QyYaOS}2Z)F*W6UV{Ja$%p;guO5FKc6wjK|s3 z-)uA*bF3)(2e6g8Tu8^Ju{@o=IZvv`H(!aO>N59Mn z`h#TSMQ$6p0hc`vf`VajAGr~aL8>Fa7i4)yfHT1?`IAGVa5X~}u@UJAIa-8CmGpU^Y#I&4yL_+TYZ2V(-}i%Zx?(YN zG-{Y1n~Ce5ZAm+*tdT25Kk)=V6`rmK2|d&*GQ#2$tyL{Bc${n|+h!#rs$&UfKv|Ws z#rSmF*aP}z2V*5@YoPcmws@z!qONBYk~gD{B3HCL#2NTvo5@xA&aw4=$b)?ORn)eK3ZN48hN0Sc@7e4WlIe0Fs!|NzrLgyON zet(mU3x-|yBZ!6@;!d?=(+7~1+Q9P`_3@B7Nb_!^SIG{S=}Yt6isQ3 zobS4yLALnb)m&dyMJ0y5DnH*E!kq0Eov$HW)O!*`td?21>NYYcE@T9Qwnej>4R=t* zju*HmAFrC%)gu)6coMen^r#PedfafTZP#o{ zpPWxiGf*0RFkTLiHy`Z?BYYnIFs2NlSUxWQXo+V;vvbW8Z27hQHzi$cqT<+lG+r!e zbETJ@Gh0bB7QUG3xL8E>7MMxq=>LYOgNs>$l~Z`@HBt4$YVYQPN{Y(J)U~fxet*BJ zXSTR}sFkTN#>nwNUf-YwV}>&H+8*3tJpIKukxA7O86|eq>sl}DKt2y#0vGo^`ZdAA zIbCYWi|W{&JUyOdCtXY$+y&V>X}nPRYRRTkZcq}*CW$ZLiQKy>3?bti&%E=&DcQ-= z?n2(rDDT_><=H%(E&6UNYlCd{AiO_dgO`pUw!KOM+P%uS=Hl~Tv_|qclM-FA;S>#? zV}_mhWp0bYL(NV~P+E2~{ap3vK2L{#Qq*RuT%iG47wv#?dL8(u|e=&QObn9~dqc2J`^|06r4F67H}f7pRy4f;1( za__PR%MFU=2w|o~W?w_;>t^u}T-*0APjIKLpXyH@#JEPitv|jMAhJOJAnWJ{iT6*V z4OQ=h$O^4HUhD))KDLx%aEwMu8dIzYi2~q5j46QBH|!EXwab=w)FtWfp}tY~DxzI=;pyfy8J*n$3eJNzdUFCVK-J@ARY(`Vu6 z3u?4cTbhp;a}38r)26PLtF5$$TEmwdmoAUYiSv{^4z$`_zQa?{q-Pv1Hvfk$zZ!a8 z3^L=q*(2Kao;_6Af{u+Kt^@V6U}hu&UKS!>nput__xc@^5^dr zm=`YI8MG>_YArp_))#db?~6=%gn}}ej(u>w$2bj}KI~;DA|e!7Mg7aAo%!uc<(6L^ zxoC*maVKZ&m_kM1YQH@D{wk3}9+w5buU5;FQbZTVlYPYDBxRNHINnrCuFrx$3_5g! zX6UA~n!DH<{Z9kzWrd0kg6JMYgP$^1Z52aQs4AFbkW+<-PBZ@+vC#gbSObR#x^!ZM zK+>TwCV9c>ty7Sx(#2@&-8o;h9HrzFe(r4lw%$U5N zdVb+PArY(H8_@aQp97Rt3^%#c*qaO&`i_*rX}-5|z3=FmvEorC9Gqihx)^q(;dg;| zTpQR|7l?nl>;(LDsIjHkLlu6 ztgpr?ZRDEK!58ZKsZh0=qv(;;L~)EJrE9nD&C4Zsi5I3Wh6^~%z+uPvkP=e(;KOv* z8?v9QL~DY!KDprYDx{|r2i0te7qV(xL36-lp%sQ|tpy6)W=S0#`=1FUr|^$8C|*<1 zq;>0Z^zL4M;rmaof4{X#Hj!$0%mRBBEr{u9R zl|hxORope9baPA&TMDQ#aj`*K?X@rwvt+`77pC_&SYZ0+mBlJc-mnW|yowMMV;bC| zQiBKry|;2>mi&XK;k;7l_Mft>q+Ec?s>yc$zPNfrPQX3QPv5b`;hRbZY1c-x$x029 zB~5Kt(h0Opi+BTalynP9^^gXE&>|I;^jIg_*LcoE^>wrCg1;_*z~zNZXCY$C6$PSD zX_uOz$0LC@kp@3CLZ*?dhL>dDof~Ssw0}X*oH858gBy9hvi8%8;?E9|DcIj|oTk8k zXLf<|&{R*#^sqha`VZP+&R|{>`$Om1Bv#F6{Am%_OMZJ^z~NS0LJFEMaJ>=&j>_ve6J8;&7~lJ z5FHj4RhPG&YG5A^8Hd2_u`d7{K|}qnCE&+RaHtk|vt;|mS9EQ!EJGW#XkG*r;ENJv zC((r;T{QE|s~kWYbmxuLP=n%g+QsmY7#j^GWpUMNgRHVjcRkm#ACE7l)NmTE)D7ts z6xknjqD(okE)aC)A?C+z9?p%=Gf|2rw6&D3D11APmVN@HE_aOm!Q5i|ax4!FrI|}J z7R~nlA*^mm$c0R=aIum{tXY6p_VhT^*0X6eqSAAJqiSLHYX{+DqMF_kE&Ue**dZ4Z zo(uP`JiCd`gj9%k_E4ICy69Tl`8hJxwUx&FW$WXyo7&+<3xiYbVZHI2Y__YHLlm9; z%!k{YU%z0+@Px`iS2AQ|^8-koV3v2@b__;0ZJq2kOb&1powPrVa7;4{ZyZMuT?(wt z^S2lfSi5r^G&bOmC#K-=iNbTRvP@dqhXwyhS@HQaem#eo_M8%mnaQk9zPpE?htXt0JbBa_B?A@N-u7VnVwvr+y0}m34Ov(rDjC z%ZBk4qK7TW|L9xamH~wogia>8bY=<~R+-dGlEb1pOHoBy=(T#!Cph>fV#O*Ds}bfcNJlS+dN9=@xJrD)_;aWOcNqK5GNGTCZAEhy^U zo_sJlME1u4u~~NwOV<5f9~b5t*5}*$tN|jSawcku^AI zeb26KlE+bjILd{%Ga^EUobNys&XDbI;j#DQ?LwGh?zbYB<1R8sSVIT8Kl9>vTY7`x z&J9_8)E0{(`(kSkk=5bd&>>o(< zk3bX|h;Fyuia%D6HltkP+lAM#ZcpDOkF{tLQS|U1urihwhnVxlD{-o1-+2uD-W1n6 zY=-UC1%$I-HrtzZL{RiTcf~d{W47|w8Y3jN?mhN-5X-+Ngc^`3+149UGww_ozRT+; zu43P2*Hy$T8S%v|rM;eP&EB)5Qiub{Iekbwz^<%phG|EhL@FunE(MW6p5|UP?(kW? z9bqjlpsvfQQjW4zm(1W@BZhJY+qdOL8nAh^;8s{`+=V32=-*4-ZoFBbMW32!bo`a{je~hXdwyx(rGxM1QTUenD)nq z(RXV@w=0tT$H(U}!7P~cNT)ABo^ld&eErEAIpgRbVHP#m@=+p{NXIsLsMPH+>h$ahCxBi=rxN0;{BO$sR_sFXq!UwabNy4 z{y(@#cKDttxAiRQ&{03pc%;{MVR6!#F`gBZ;HRyGTB_o_`-7032HxTtb|+1lc=+jC z$ow_r2a90n^H{G(5S$mq>f= zcJ)GwTFi$OXk<{S$F^tj1@eVsidl!oUd3a@)i24h~Q4o zmK8H=#Z5(Z_vFr=3JX7q`!k$PaJSxuT*)ArHONAp>SMbUL?Wkq{)v5?Qca#gLZLwY zh4K9yJ!*;p^}r3@Qhv7|NIzi4cPXu>4XNu%MDtIQYWZ^PXGPg~JxAA~Dri8|ekMfR z!QCle=~F=a(A^F(E&sPdvJ^L{9%PLN@l+=(t3p7>tGm5E;=z?h*+qr}ab}2#hMknPGGd*A$4&Fg&BOt{1qt zkbLAzcOY|=d=3JXY=XTOd0Png$vej{gd=>lh|(;DeS`2!SRB$HCWgJX2#y)6bfDGd zU=t?N<5|o{elprhqjvMNbIdzs1jAB0&_^})ZHqz-f5#Mxds?r?@Fi|#bzTxXTrI6j z<$9EcoJdO|vn=wE3lcqF$@+~R?GKOIxjLNXXnlr0v9>~o!}SQ$~E zIl8~8{M1n#E`l!iw=99f=zfm4xDW^_kJvsM0XnlC(bR3vyVF0fShBs4{;L((x=+f4 z$u;f*-%j>STyWBm2P=>*Kr8@#3-b^1jU}30oOnAmPI3^2x&Ui?4*zGoG9=5i zYTbjmzOGDrRY9ME!~Bj8W03QWtYS_EDbSA{WN`aQL6rugTRC2?w+iXv!%q8uMXa4% zU&!WulF@Cf$c;DHZV5^=<$(g;g7w~wJ<3%`R=-VhZIz&P9w%EW^AK?x|Mx)DEKmgE zlSzI)$Zw%jo@_tWu$zTBElKT@{O*jRYgGzrRWNpNIsiZ&>vrjHTw|@mOC<2AuVa^j z+jT}dS(>*_XL?u6r4DsHc55aL?bu>O@VRbeD+v`C6WwWz$j}QEsSA(v#%JE{U0eIW z@~N(THG4T7+?wAuGs%I=Ga%J3M%Z5ebuW33sx;))pULs zb)p$8xs|Ix4`jjk{;s!@{Tc*psNq5vS^b}D4_g?@>>uyMsz}j5ApAZpOPp{g z&yI&ik2h+pv|lG!3nkXGSx2SjDczy0@P|qm^m<>Jc$#(f$r61TvaCPxMuw8~c2-Yp zwcx=Ls1g{++v>>25AB1|{FV*g$WGbP6=@V@@3}uA&+RnjSe}|-T0ix465WiftgPA5 zh={@()i2ArzEODs5&{BhV2BXLN5pF<(5!f+#`gtaT~8D~P-O7oO2ZZ3C+g${Bn)fx zo!QbK_sn^6eab6Mn>%XH8L&V97FM#@BDW_L6mBE8qq?qrYEWyjOX*utTkXy~JDc03Gf=a-s8{+vw=Tb0MR$ zz|Ugu!YqOh5%ves%9&Fi6L^;%Eh!b)620rF>Q{TvN&1cKJyE%38?tpiEFnZH7<+1Z z+kw{HW;S2ZpZ(!`6S3NASkL$XlWcTinu$eckE($fAuDD&q&Q)G;zT&HN0g5PV_+xu zI!EQ=ch^a;Iu9Gly$F7GJe3XBFAe>|{bVXx+*cIaT)IRYUEKiBXOt`6LCr?PX7gja z2)+R2J#`o4Ru`Zr*74{iN9~il8kxm{5s9p#ZdZP1D5}!C-6<fL})pATwA(Un4i=mvNa-3anN`C{yvHRwPS#hV4`n&ID9UW>K5*aHsX-apnsKGsf z`n_j;ZW@;!{6a?%v2a(Cc5|t@p8(Z!oNqb@Qi;9y1Kp-G%0*B}M^2n@(mj@M`5H|w zfOvhVn!5)Hj=jIaE(GzgWIIt5_hmeu9Tm|_j&{o_= zUOgxFpoQj1qj{nq`vNTfl173fm8S|;L9}XohPEOAxZM5-3Mh~Zrg9^W1go&#cnsma z-(~C`7GL7$$9@L^3CtOf?o_(`{IOh*9Oto7K|*T;VMqK>;netj#)GeKt$|OLV_Pqm zW62n(hDRzoFq(%X-fGiDXv0uq4hBBY;Y!za8Tp9PEsQesr|%-Gi4+=^HH$uu=BHf4 z>(6-)*-llz@F}!}5Awz&vi{K%Wtz|yIXVf{4;i+2UVFF^_S@ji(2^!Yw0PF%52pl+g_r4q1{^Gu*3w^!fuY=8v>(i)61I?xo&{=PkuK zQ-1xrnC6r;Wq#0*-W7?2(seIAg^xw`YH{zbh23xjCA>@%@$uunLRB*N63SV}>`He5 z|Ai#S>YAmOzX15HaldS&tM4z&HZ9ohwt5?rB_?sA(AWd#9^w-=(;$L$Ud}nhL z_!3Hmrfd(n@1X_@|1h}nMI*SJ%9DnX#RwIjS!vOhPi2pfH%7CAG307`*l1yXSs|tj zs@58TdB3T>e%-Zud#xf7;|L`z+svs%ArTzNg5v(X&k-)VR-k7d{+xPA5Z^657BwKg z`Z9%p(eo?oDeA{Pcjecy^fzFrs@(t(LJu`l9#n7PN`ZI}TShQ8SoP;uT^$EuAE$dm zXQfv@mfSX=iW50fQdV{oO1my1Wk1KZ8af?TEE(`sv5xFfiq6G=tuPVxP6SV{Y{+Ja zHUCIUN$FUk%3Ny@Tw|R^sYs&ZwW-WXy7f9xXLhe{7;+nw7d?)s#Sdq8!nQ_dRN4xR zb9r$I^>vibK05y(*0Asu8$0cJ_}Du^Anqw5SaW~nq0W(9qpq3FQut~d7^#evNaQM1 zrP6k7#)=-mBc;dyj+1CcS9QQ(J(Zvt-YUmK*SA!IjyR~cQj5O{Y$~6Tr-EA5LrTA+n-`=G*OpztWIb{-pV!c=1FhULs?ovu03H+$uOOlFu_h+=w6qU%Vil0^=Ph93K4G z0(fE4s5e66y6j-IBUjhuCDp}T7@%^wcW0yB05QmUB4M-jH??JuHHEcx;&5Wu-Bl{D zJ$6O_yKJ9+>9P|Zj^K5p3%EOfBRLP|u0@zhV;YCA0uJ%DG=6nFnz#1;7I~9tvJaUa z5uc~0pT)bFMpilHd!-hNadK4@UPFd5FslN)ZQOtNHpwcNGUIEZqfS>d*XG>O!A9SX zq;KMZ+g4(E#rUzq^64X{ce;NPz`FT@l$Zz6r;l(nqeK@|c3J)B!*?zXaR3$>szY{z z_TQYGuPiunP`m6+CDQiGcsRBb?qXlQ{H$2~85kO3<)v-1&vjnMi9o|Nj*gE#zUj zaLLb`Awx3vh-c>lf)rmru-QlJYLlkmOA%gU4n2Lxq6 zX8Liv`>JHdzNg}F7zFBYe08-%~lu)m=6pL z0J0RN2pnSy97{BZGmII9?3fOdvi{-%2xx9b&%OZSnZU2|PvW5-JoHH|(>ucdPl#x1 z77tgDAI}D88c`of;IRn03vN{Q6V=YVvic^O$wrtz&i|!iauV~mipinU0MoxYh0TEP zc1u$0E+HP%llg#h;B%ag2m9ZUm&N+SuGc<85OZ8M}7ih2EYMNCX@qSEX zipx?KsikCgP{LS#{UNdyFzJxUzg{cxpT89Z3~-n}p}&DgYQcWdmj-Zkpa10USy2Bi z3_^BBvwZ5j{o*ec;w&Adn?{aJ)RV8a%s5MLc05;L#6k)$K=B9-DY1MW+55f2|FtyX z!C>!>s_+Y5!pmX$42ID^eaWJ@4)2))Dhq#Bevt|~p@6p%y&Who{R9{3UZ4N>;=Gp< z0RoW7b@&0E&(PWGRKC2my&Zko5m!ZSX2+>kC=s4%ITUPD%SrXeFm&VOBDhUs_8Ao^wA_WRT@vX!zK@C)&`=kC4s}^rEjFkQ z)~VB9UtcPzJ6sv(!43w2^;>ZHG2?&VB`pXLdD3~#$?S;1YRA~J2pO>Za98vqdqB%_ zfE;L+7a0ybr=GlJ(onrnoL}Ht+_t$_SG{Vc+Bb5AIyUp5)#f$93hp-;{z(6?NO}&4 zuKbi4)t3!0F55j4nZe@7yh0C9APB}DGeixhKVI7XG^t_x?Aez~1OzgpnUi;KO&M^p zd_lf9P*zdFe0g)Ft8*}hU*Fo(a|{ToT0eP`LgQYa>V;TZ5Z-B0E_hfX_NiW?sz>0? zk8>Wsrt4^f7!#vmAV8vFjBr*~R(28;vR<#orQmoSSOv41vaj zbZQt!*-`s8h&EM-%Qw2{XY;kT&bWExXjd36c?vyBq64?u@VhEFQG6L#ACJiCoNgv-2&PotJ^2-tQg$b z2@xBNmg>3@j+E&iowSOo>HoN0PY+q@n$s`BjE9uvuXzPojFwwf@GoLZijvQdXt}=1 zvwp`4&Ak}X_OIUwLhXzDAhdDp2^q)jY0hV5&s}OqN4!zL6h7d|K=2o5>+w|&id3K( zQ!g7oakZpizx*1p%I3l=vOjbD-~82koXoEnF%zZZHnMcT^5(mE|A%JY`q$w7Z$2`Z zLDDx%!(J%*-gap>dH9I3=*#7kWBu^&tp&o4s+A!kyCm=6J&BU^3G>sc>;KxiOkXW= zS${VKlw5J^Eg|dJ<#*yQHTT!*)MF{_K7BMzs%m-TlkOUITETW;ISFEgtOkjP&J=xZ z{cx0x(3bK42e}<9u~MLjB5UX@G{Di~&$fvL*Y9moKE#Ph6T*zq-7ml0meSa0NxZg2 z^zU?$7zARAN1tcjb)ddb!W)abxqoDguDG}kM(oi4VKis!-=jGrhS!#Fm1y18kbF7L z>eA-*0|vYF!^b)=@{SY4Bv7numF=m4SHo-lK%TwPP4vZ zq-D(0@+{E=4R;#2jY@#=Z546InSPaqc+dYry~_20l^Tq;I;7mec~Iw!-kf3V&Eup^ z3kD;fe=y+wO>p+IwmWqzvwBORAK=(}+f+Y@oD_}v$MlO;Qa<{>h8Hg5_E?Oc7CTrt zX4(RN{}<^cnBt%5MHt8+Y)Tr#hL}LQ9ko%zo@YtQ2PGB@Gl?){)*#jkLuIvMO&~Uq7AEX zU4;{e>kf1hA)Sc?j_uGz`w#FP?a`_^(N(^#7t zEzyA{-~Vfqrr|c}Vsi_<%h^77rea6V@F)4-f>%v~GHxEX%3UF|*t7Fb#q5*g>&*1;xivj(;b(hOn+Z!*BXmR>{gv-m0{*CVO zBX;M8s_tYf!nAXt!ons%W8Ex1C|5t{G`o6BzcNgy!9IQDY86j&&R{)Kai?@5WFL;* z4?PHqGoGjRU=_TeHi@^R=}DI}I3&Gg3TTg$_hS|+)Q`S`Qv;C4dB#XL=56$CVf5Q% zpz&?Wlc2<4i};Tpg~+yk(z?+p;4^TB%K_bkLI~7l7UUR-FZq>r>8argG3$H}{d{^h z4&S5ayUf6A+`cnYtz#@*KG?UngbER%d7kg*w*Pe8e4ONv>a|kV2wji+q@qh$y&C>N z@P%auHi{eSXxoUD|))&}$Xzm)+ z*FvW7`?-$R@Dwwu3=tUPUw@a zt)B687?&1s6H|AbNa6KglRW0W(KiB+Op^G?c3yp5%5J==+^YOtS)#PidjdWNcvah1XYZq)4nG~1vnBHV6xP5U za82V^anSp`v)hP1&<3{=e0CessN&5k+2AMH8s^#eP+%&r1#f$ubJZ$X2+_LT&~qJb zvpSi}ioP_W6`z_07|<6@FSnDvKviTm?Mn>!4@keRC31b6ATgkfdV zLiZ?5^|55U4SJek@#YfB0Pgn#Fw-S&Bk#GBlL*hZnPKKa(sI(73q;MzV3^^rV%zOPU6}nUm_T zmN?Atlj&L3AF#b`{UJ_`T8x zITZiz@t=pZ_oR@?y1QO9pL;t@$jtImM3=KfU(eOLZRQ(%_UucNFoGS_RW5RA98ZAk zJv85z6e0y{cl6AEm-oM3(s^7}dVdWRiKmh_^bBZsoy-dJ69~7h} zyR@K~pq=6Tl@*gqJ@@i9uw}Ehv%4|TVBi96J zEZ*%ZlN&a`?Jg~x$%x)7Ln;6Lb@V#*nP>-2CT(!&t2U6gT;~F7K@*h^#wT03_Fl7M zfD@;hVao?qWU>jK=8OsU^(Jl@3CTuZqg_~dqtIzfIip(5H3n^)deP63fuwlw;0}}< ziQSG}0U8U%b8GA2C{px%Ya$1lW8||=j?JJW4bDH3HzxqG!>s0id4+5R4LC;+>m#{F zrl8Z%$ImUwc1lO1vqH+I^KTzhbz7_~zt^0iKF*Yi7J6LFx%u+fF;(uZEilO)SU(N^ z!F9Z+um}?=+_iuWRp|m@gi=rd2%#{jxbu7fLX%`(vLY+Cpo;=SZSU^JI`1Iq^AxGC zSuI*7IOntkAgR~96Nfd0 z34j}_HSKtR9iO%=bLzB}WJ4yP`R@pv=Mwch(zFD(Rb~Yk%gx|}f5vgKgaYVmf+5SO zd-7s_9|dr?)K~5F7WN6BB>ZSE@X-7utbEsNllicRD%s+&XXh<;hk!BENN(ll#a6{z z0l3|)E2J@5~ zqt<;U)n)w0zQvDeOaer<93LMi$PrL^TyV3w?dEUcN9qGELcJGi(zX&^2f-8fY*R$P z(y0%1xa?=G>H1tz*Xz}sC^cvR(2rCF<%UvJLLnACJ5A#J&Aq!ns}1 z9wPeu1JJ~kJg}gnq2XS7=bTFVp3AF6{14R%R`Bw6(giO>uhM(*f)SXBiPA!G6 z^1JhQ=g{&MP)(kF7rRpV{@${v*y>Z~+tGiWzps7M0_st3!USN(Kw{BPd!wtMa-pe+uO11HH`i6rnQ zNoD>%(-W%a!$Ng|*e(Amy-CI8$@<=gU%7`o%=lnN5Roi@yz60H9V@Z<&aF&e68;qrh%QF9i?@q^f8i=&_f2)h zy8#ph2vXiH48<-y-@mfe<=Pw(O|MJi)K$6i>DvQ2RS{!V7YsTA%=J_60{NCx1gM}s zsvvK8fdKkOe@$zJoyW<=4Ok5UrDv~$*<)dEr*scLI?=TfRYZmTZi(jf=Ol+G6<$C0 z_Tl#;2TzCq(h#Xa@;5-^u8E9%e==a{!xT_HPf*Xar$e9%t}fkgiRBEx>hocw;Pnh8 z%AY+Rtrr}S{{@8 zk#O&=V&7dZL=o!L17RCmAmJ>1%$H1MLzotN&Lpqk%0=JH7t11%=h6OmDRqc~*GSze3K!S>%y!x|J+3_bR5t z!qLzB|5P&VljReCY(~x{hp7MuY4`65L3KM z#PWE<7YpMvL>H;+q(Ae=pBEj%A9|yBP<0mCwyzzLHcT(JKMR~rmt>51UhpR(+csRG z#b6%H1(ZjUd`jiqy5&T_y=pyhLD*$<$kM~E&1BoUJcYl^3tIqvh&dIKjekpccFVYW zA*dKe`fzdLzb)J+HvC3!`I_|R@2jy4Qg{A*bM@CF=hU;`-f`dHZ&k3LT_4wD-DLG` zZHt_px$VpT5)M(PMfJ@&h)77lpE_&W4rD5e+`6UFZ=+#&u+1F&g(%@lF)r5p`ejc? zM_20O<71kqb7fH69@~UNhQg9_%Y5j{zmzQit=K5*|A*Axpc{X|Hk-vC781 z|NkQ{MG=6wzSx5@A25o*wM32$q>c>&H*;T?!cgpo-;h?yzqLcQ{G1WKh?T1r3XZzX zZYx6t5E!Z_af7eqZY&Uove=JJb(qi`m8bt@-XHp^Czrk0uv1jG%VfEB)Qg6u-aLu2J`!=U1zh73Hb9kt>Z5qKttX_*o#OWyu3hstA~w@36z4|*09j%O z1T5^v&Z_xnm}yg1dS8|uO#j>rmrO=~%i;@v;lkr{avx*cwTUjmCu*yJa0_{THj?!? z?TC*I9<09?R&JUJb1q9ro!%HRfCF{a>i}SNk+0lOz0f7DlWnE5OINz)O4|!k(GnZv zRL3*FCZK$Zj0y}VfurYm!yo0+g#gug?IR*Dn&JXcET8V<>6fzOuKp5%5+jq7eFsq9 zOZg2a2cwp*xQHZRGnd4Hpj1W`=#}N>hnXFl9mBT{a3E?P-!SN5ROweG&|mCHF3>hO z%Bt%22)FNw^ZN1a0y9vni-lJ7e2*_0oBuIqH!wMQ$79koMm2sAhoG#=oX@{aeB}nk z@BU}@hppdu`}qyHdd#D;s-8lFSJbk|K<)57ei%+7P3)q$nrbFbg6puiv~nRt3jQq(deSj}T15a*2gQjI2pMb7$h*$l0OK^rl=3^U7gbTp_B1L$KENup*?>qpnOD_ z6$qsUGhtW?fC`{(0xQPzs2(V;K84BadqAD;tac011dsIUytZgUs5Bv31%c=s?`1)7 z6{TGLByh{ya1j^hHBGZ~S1&Xd{gxR4@Yu(Lax{qcroq&L&kdhI5+ctJ zAs?6dCPucgDT;hr>91IMZBM%JY*gY!*r(B%KC%t^|J?WgEbj0q7K&JZf6~;{G?A>r z)m%hm4jK*E$AW3fbWAW@llu9wLn=`?IRqKd-}k_ccg^C8=Phju%y30F>g(iy*@C3E55E*2{RJ|3QN!v< zmC`*J%J9_xSZI@>hyF4RT=F3QiX@d}kF{lbKY$Y|0Ig5!m+JJ|U$hN20GTaiCb~4i)oHRiU(ihiArG)2CW_$&&IO&1+{QC@si!#TZC|p|z`tC^ z9S$G*D<o^vhh~DXps9V*9X#-a!bY_#V-!1SIjLLuin6&Vx zQBkD#I9?^lpQHK5F%bX9?@Kf3=Zm3e-ZNy#qsm1Fq7kqBxtcm>tP9Yt?!Wp&6Y^s) zpM()t{)_ee(fA&U8A^7ulS{*DyQ+@1)gN1IMCaqbIKe*LEjMStkc;%n(reoFs&MW8uom=Kzh zG2oEy77`p%et-2$fa&F5n5hW)KbYxL@BaxiVIG~I{EG|lPy95Csg`?DUwIY1lW{ps zxkv;t8g)G7T7xabdg#q6&s^L5bYXtvN>abM32a+CpD7KSFC;s92?(%?lEHsluc!fl z*(gTyM1n_?_q&*zQkv<7nnHw2;wLaAm=t}*V0|RgcwpPZp6q=3q}f1h>3%Wi|9SHc ztiQ3?V{VzKOc6Gz zkxLi7tkCdAh_Kh~E(&SHXwGSdssjyJ--?jA)&38FNb$`~!~=-_UaATHineridvwQ zrIPkJsk@7P(l%952BhToi@f!$^{mXKE)-%r!r*e8m{>fEK^@a3I5>L+M=q0P)a*Hk zKRE#OvGXBF`VK|v^jw-Xrk@umER8t8|E&L7|I?RXJ|InCr6gf)wWO4|IE&$Xyfyy% zJ3ZF`i^F~`5-QNwy&TnLbnUi#iX*A=U+j7sIa!faw_(OrG6cPgQ|xHGqYI_w_- z3++>sUkLMTz+Fp-2B6o!mW>OK9e6g)MQMTMnt58$|Vrw#3o#Eu_kz+eclnPpUH003}f{&J(~#>)CSNzYxDb8_c+ zLeEhEdE01zpeG5G>4<6s7FoFCIr2^<4~V=5xeszTafPA>+2D^ew~(^NAjc6rYOyiEHpe>g$)(65sbBSgfwv@^TZdxzzw5J#=gH|)Xf~S z>+hJE22{?|{6~!TB=uBpZRIy6(xLwQ3^jfCH=O9SMf5(aB|eKM{3Cj?fqH$1M;9ip z!3!6ent1^rTxg}?S({SO27{g97eUGZWKY^vPXP_Vi$s^1vdHfFgDyn>JKi&63h9@) z3*YRObL#%e{WB2ABBN=>h&vtQz~6kwxht-l)N8la6>&P$IFxjE_Xy6;+Z&CmG%-Y= zciJ_25iY|hWy#7mmvyr7ZwDE+MzPn{r22qmm6gXX!BShlYt78bxJzese+W-`ze z&WH&nUN0Tyi?_XU@TEfpds%!0Y*99o*yFtddI6<#Wy&Sm$zjjTJE=_hQtON~gXpgxCstgdyfTh=9QgN953sSc0+I%F`Fjq^sdTsUE zkn~XFjq$G`d$WHj2M-VeTZ|<>@`haH4G7w0%)af714(ny^vG*>qC+tTt?1PU;TDlH zMmB0W8fpz4Pf7CfQo+e)gow4_CkX{#Fnt^m|y^7Y*|GzB4e~sy`ha zcR`1{d^-aYbV(JTjrOAIzpB~PdRHXYmfu2RITt`u`YMYGG}W(mveZ3>JkS0l5EVqf z@`M4@&7XjN9Oz6Cdv^5NvsvGa0|z%*{i?~P9gJQm0A|>voRG{v( zxwQ&%kv2#Az8%^I4qjwA=-K7P-WGP`o#xZZ0;qHEz>Lr8puOajG< zSDE{XUtgw+`x)NiU<5l{X7kdvB4e{3J2&!?thFpdkkmgp3&8~)CY0Wcs3bC z*#lRFLAC5sjMu!Ruw#|=enZ2~0p|!Ar4U9$;!~TX{S0#FYj4~8qUSV)Rg=Cp9t**Y z<}#`usKq-+*GJ(+2Vi7u?%cuN@jB3%_Oobu)bTO(OLbp$c;XB}iW9wps%rQyr;d}< zXm@wWuIfR-UYH2TTP)}<{5nmX7@QYW^iv>Xr$39x|HIf@09EyNZ=jN*G!oJ+(g;eI zbSX$9B@MzMrCSgw>6GqL@&M8xNOuSvx*MeP;C+w&e&6@~=g!=@vj?5Q8PDGPyzld_ z^{i*Dhj8tHzJFT-f79Z`sQ~ZfZy0yF6Kps^tQUx2wW}|P5Uq`?Y--fuY~=HJkhNgm zbGs4Xm(l3%2=lqQwz|I5Z-C^#xTs0Dty=qdI_*Sq4(t9tA6nwfJd)rGM$kv1kU~&1 zF~srxSPG=>c|CjdOIk+P#9k)7txgTR#V`bgjJT#}RmST8o5Bj>c6^&sUIh3)3aOc& zpN~l^BeS%(usLMPOso2<*&MR_YmKMSoDPcaJCej7i1I~JLkNEz4}DNg}&6x zKL!-5-k`i}@zdK7z1-Asy)gtMgG870VZDDnC-Nt}ED>!o-Btf7FJ6ra3RafuQN~(YhsT*#k$`Lp zOp5;Q$ODXog270fYaq6B&S(XipZXTl%;)obFW$jx+DKE!#1UmfjT^K-?h3$X3|oB! zQQV0~NA8Y~+y;}MK=BfM`@3OuK130qff-a1qp@a#UvHMEzhSq6rrDnb^X{c9IKB&- zi6?QHl+4Sq19J@pzeoFEnh}7xhQVKdc1;6|2>J|F8C|2gt5nIo?tp8u9Bf@EAO;Y& zb=+5mw`SKC&pVU36Gv)*RYXkJ$dD*QFP@QzvB>L2H-{cq0!DH#Sua_mn%by)RXek# z!e(EHEWU2lzLC*&Fpu#W%TOSFFcs@ww|dR4ZnepJqCw#O!?nYe0rh*tmkys!a1G9o zrzIc~_m@xePe>6H&(U~bi_iMYXHx8Hon(P`+9v`z4onVp+kyI-_d>v3;UR}4R3Bx8 z*s5ukSON;a4{$I-2A2L{l29&)?haeKhwSLa-2#W z4lrhO7d_?aBpRr20=Ga)aa(El>>r9M6iXxC+wUJ=x?-t&QeO-C%K0iOLH-_Ki8*JL zpz#6Bt;XErx!o~1FyK!6T}ZG||K^a4x;xyj6oWz^^U79l*#*~Z7U7T79MMryCKo)OTWATgJZ`1WVV@B)wVzUK zaX?N%<(*+JzxO{hQF1Fu$5wo75LmRFP%TyDWiY18h_pgYe-h*T2|LCrkLBfRL!#n zVGDQ|{38a_Gvhb2cwlH9QS4*p;jtW-)2s<02=cR)4- z1InW)FGJWFO9oEu$e=km`RRTd(3wOK25&O5e3 zwx?3^8MQ4tA=s3%nnM54ZWUx;aPdBB#Q^S@snHhpkKVj&ZA?dU3Rd5>0N2Lby}zOv z#;`m1f2@}fXQinXd=K``!Q|yj839@P#6IdTKPU2p!taM+;KT2gloYt`P8nem$C;N% zA*K?c6Q^RDaVnKE@XgfP)f(O`ll<>^a%U;hY>4oC%Z6PGp*`K&muBni%Dz9ngwCws z*p!hx>YCA`;7NNUx?I;JCeK16L@0U&sJRG%aK^Y;Nqxey&^-l+K{mj*D8+KAWfmHsOU& zkLAiW<5;Lt$+Gx!O*r>1_8&k1-d8>arUhnTXDA>ftM?@%06$^+>pbP)0I?IzSboIh z(3j}CWn3MO=Fqoz+pZ!0ypH?&+X`5Z?H+6$?OT%Tk8c8NH=BNX*!?~`V5%U_FGyfa zr&x6E@DuI-gTf7}I6Le68yD#}4vBd0Xd;rZso1Z^%71mUe^$M9PuD(kuLV!T;XuF{ zG@zZQgUapXNy9~#&~8G5#phd`f6T>3SIow!lCa_veT=dnXAJDR`X1*(8*D?)XkoCK ztac*{A6nHa?~fQ#DjmKbpbaI0AT!}V6$;~~lo2%at|95Ds% zlKC&a{Ku3qCQDV%*6Wzg6V~QU)aCkr{k}f=#-k9wn_dp^uvs0Z5_;F-j!oTaXC6|s z9B}|Fg=oOG3ic1~;l-Dvsck~&5P(?QtEHb)3hU3Mq(>Ko?YOs>=u8LBh~leXB#1cm zqd1{EDu^>R&nhKQb1vWGpB}yq9Jo&ilp~zflGII}`=K?Z9Qs~XXO#F5luu2^Up&;Z z>Yf2mTE$EeY1C85{B;dqpn%Q#o8`I&*POX*+D|1L29Mi3C<4#*PmvGtx1xe@PT@l| z2Zm)i(C=er5&4*pIo?q0_K{ddXcc5=ERYFKgGoCerYog!Hn(E8C?%wRgOfS zCKYY{2~12vum=r&>9WhWrBeC+_OUP?v3x;@lK!jC|9Q%Ge0nT3!`9Aw%_pUM0_{<` z{JpDxH;!-u`1#;HN0N^FCiQ@hv`t(k>Kl#xJpxohGkJ8W_kQ-v)G><6=vE7A;gQ zOSoPhA{k=DaCy-dFQ3a>RtflSnos_G=AX;{tmP&o>}3k?3x&AHS+^bE-`w=pHuPV_ zd(J{fqn&qtGM3Sf5BZM|rN3)n`mKWx**ExhI2y48?6F&x8dq0MdosjY_8<7y)s+ss zVjPU%6i8paZ~EHHtFcs%QpDqFesB$PJ1$JM(l*~5KAUxi2ZnV+!q1}oLP^GL3aJHU zE_oy$AHt}ZKzQRo1;vaAcB?dl2CP?P>m_%EI+{_H$i=fN`{2MWWPPJ=tK5GlADFF| zhpIQVUH4s=oL@=0^B(XFw{S-it@R3P$~Zm)(I60QJZw2ivoyI;pceXMS)x;wueru4${`O(kF3+^h{5e*qH+i^@ zZy}2>Xus%3_*g|;s}zS)kWdYnGcA4m!cW6Q1RW{HVWYHKZ3aUCMh8Zt`Eb#F7+`E~ zXmY-)7pZ0^j>y23;7Sd4u}D_}#B7W2#>%RCKD2m@#%2W6opS#yuOF#TAIw{@HK-+D zQfiqS!OTg|O&`DZiy4Y`Pm_e(P_g#LyMKACwO(;QUvD7k34MMrZ)aIJoyJuQkIxzv zA9ymg0vvbj2L}OO%J*(PL+N0%6HjouUMI>p*CFW?dVF-y4{IfxqxW446@l4=()vt2 zw~l=Bb#kh>16eg(1SagkH4|~ms_}@@{-tGX-2SE4u~+sk+nHt6oQm%$(Vhfs3T;^_ zHK(Y6$P@Z1Jx4yhD1&(@&f<&$>Z`#WO2n0JBH4$*+FX#-#iFYDPmH;V z)~P zH(XEB)*RY1pb06WYk9}=II>(erAw%eNNNVPA-pE#f^rL(!g*$Y1=$1#zp9uJdcReq z@eI|E&+xTV7_wp8Nty7az+|a@?8(-cV*R@<3aaMuarNg;)>t=GAD==RKoJl7)H4W+ z^qsfQ)!w?Z&|c=><^1o~{?GbG{GwN`H2*~kv6={C@3Jp;U&KEd(X6%AKO!^M!+(ER zve;FoE|YTHS6{>S*4KD5+Wx||5!xU`(n8H|FMgl!aptv@n_%LOpoB~+<)IvyMGH(1 z8oG(zE6GMsgaDh>T@xz?n36k(y?T0Txgo>pqjs0$FF6b_LIQABY81y^tq2!p6lGYQ zL%7Aox`NQ)f?b(mVz*UHVs`}}`qc462b~IUSzO5dvt`F{KL3HI|MLt8y!!Kt@YU^D zWl`|4U`?pevVIJB*y0#D4cx@XBde_^e~JWOvDjaQ9$c@_pMM37MVLb39mAN#OCR)6 zbPn`VYyW|vuyXRWK4(Z2sS!~ae*>lsa!LC~+%CcqmxIOClp>qg3Mt)oY4>~R>$pAa znoKsa_*o(&7cA&uwgk3ap7jLZo}h-Esy@s93JkJ15|sfMVP*KaEYRIOabn|tc*!zO zKEH(xptT%zWc>y|RVLSnQG^bMGx?%@W7385;^qjHZ_C!&b(#-SJc%vO2WGhc#iLM} zy3oJtJzFu{u&!$$-7?2ewq?*jHQbo6t+FN5(qv1n@9UfUjV~DR!|zSTsU}1~=L$U0 znS>I*B`nB8Nj*3}=PZwBzmS9KWR7`2E8a2ey@$6G4!Za=VzayUZc>d5g?Nd5%%g{# zM;%d+9swYQ_Y)JHFl{MUu7x&X4RcKGN_>frFum#JQqS|ev!c~0MXo3tGijedkTZo5 zfg2>EDy7>Q9zCXxBkuk-6@p5bVw-}i639B39?To38=6N25kRLd&#Nq=xKY=cEaLj- zTq5e+Q*)axKuzEM@n`Yt)j4v=k)iRnYuJ?+)$e_XaN#=IqgfNEUz?82K%oq$vbiu3 z3-^F#iILx4z;u&60z6PEbIy?!8xDf+pE|wUv6wfUH#7`3*_Pk#p_2~Xgbf#|6?Cd^ z$#s@_F@d!{+69EVppcNRECNF;z_~38!vzFP_7I|U^KyMp9%dLZZ%}sC4dLBeP&E_z zgOXCZ?su~Xz|>I!$o;!OW+IhxNYeeTe=`XU_5{=7y6=t&4E3QrG!J_)&SJUWPXJEg z$r*Guc}f)O5d$vnZyww~5r+wuq(=Q+F2rF%0Ew82n#2$(dyasjtNLm8z~eCV5Z;-& zdh10b4Z%@`s=QE}O;zpCD%liS-1VUxt=yX_@9g-9aU9XP20y!W<+wEI>;V_at-`?h zSNAMDJMIvosI*~-M_cCTp-Gk&mOa*rD_KPE_l6%O`{3LY-QJj*7^;x@&w)VzAw!lC zMOo3xiu?niGT8%sx+KIFbI&mH=qbBc*A8Ml59BN^WxsM~$A>iNFhA-1?X&wGJGpW{ z9Mi=@4$7<~2LLw=ip%vdGkETf^iyaa zYav_!YG5=x-&sI+af@#YA)EHFbm?%$>S9~KlL?UBx5D{^s-|7Zoc4t~TZCMUog%x$ z4!-rqd&W{VwfOx3oH)=4yhc~_U(6w%I$3?7YUftK2XM8OTfhDthmVj~CTOTH{P4>& z)w>=r^pq_tm(I5@W+>N^kNVG_zdES(`u*&jtz+5q@oBEW^rF*h+FXI&kJ7*Kf(LlH zL{r}=SG4F}Z*>bgZ%0kyT~(YR^{X5*hgv$FfB%%|f~DNjaE-me$i$=wCYL(rj3lM( zyw0Q@jG$YV=e0LgPzdel>e}g@7|D?}3AOBd#-_tzcs+!@5}<6xHdKDQcyM+xo4!OW za8uLVe00ZH{T4O*D-c<4M;>Q3AH6gj!GZnCo^$PZe;Y3_9W3n&qMwxkr*{`q_og!( z?MdU6Siu?9TijMnuY7u<|(Ebl?OfZ z#G7YTbHy7?TX<5AG`4ET>?WN&!f#w)&z77(j@#_?BrmxdsuqvqjMNaG+qr1V zlW^IsSyHnJMfYq2^M1WdO~Fc~WNwa+YGP_)WBW6vem)VO+%gRUydq``Eiw5ihMV8LBU7xY2h6uE1yLZ_B6je{ z2T)c4m2TkdschlsF)S$SJN+%3mtCNP#bHdW;H#KAndo+GNr*h4v*So-$$Y@w8T6yk(qnL7E$K=ihtj%;^bVzvflfVUv7TiBx*VnBWsat9IhGQbc>hN-_E%`;Ntyg_w&vLnrX zKEqht^_oAj)45o&WMf-?f{C>d5@YGqq|4BVh=h%4f&)qJae9(w>IdsL;Dt%)@?TfX z>aNm?XAc~vBO=kx@t53#IIr83#Dhp7(H1w~R=Oqp5FZXc5kn68A>HzNsi2zMc~GlZ z$~5q4qtmyc1!ZFar;J&ozA^p-Q`k10uRBr85`8G)f>+KbI}#g{?niub zQ0dPf``|(3$cWoV^0z;7N*Xa|iZ%6-9J={@FFeW;lW(jOE`|8_hf(*KWPgO~ziCZH zI=1Y^OTO9?zBKN+f9bqJjc;cVDxxAqpvxDZ@agpWQIsXmf#~N*0WGX)L55KiO3#q}=<>sJ1#Q>k5+DwNe zh5Yz422HP%{hIsf0lC>l2kFrm=MKDvho~ zo~yf;nA=Qo#lrT#%5CPVwcrBeeva`(3M7eCX$CPCEF$}r!fPzw9P^M~0ub24SJZ^D zzVYc^eT!YhRKzs)S~MAXT^!7;dY2!;e{{9fPZ%m*Hres>qL9ZHoKb!#YT9B+&kj3466Sbz@F zyvf7A5@3sl?DD9HrJR#)8Y1|FwO}G1SmP<3yD+}JlpiT1!flx9!#q{AWmT;FebY^} z(Z_PZlpx8oVnl9}273cV1xx(NoxB1wxnR@?yywKaL(g;66O#B)0$+Fie32)eQ*YZR z?!lAM()Iow`FW3?PNQ-BWU}qhPq){iyXOgd!mgU3gv`s8MD!U^KAxr*d*kH(W8|bf z=IRrsg&Fe0*4*MEJ$LBwG8d@oe1t-HeMMfSQ}2MannQ`jCnN{3LAOJ|oB?J$7k6|O z@afO$@iK~>C2=u-8~FQJ$ahI~>xq3_s(|MpR8ZEg+91s^p?*kRer)&I7&&3|P_qF; zK-bIDQ2PcxS(mNkDH#LX={Ttw-`_=}eEZ#m1YryyOPx0LL*=-qXa2o%BeQAcjg;WZ zl>In41FZ4zsXH6KJ>oqeFoF%TnoWAKygL`h6T24z zGz7UNgRlrlNH*xc0in9q?*vhAkHiI4H8l{dSOfAXwcKt&lv%wnYI4I-pWL)#S|h_F zrX=7lu7av+jCz@YzTcQ_e2Qyvk! zXx(zW7gTQzcrPga(r5q4PeIQ1S=75e?(r)L_!14WRI4ZI(`*cI#N@R8#i;f0 z<4dOvs&+-sO#A1TrsH=(KquO60vDjcJD*HEtt;g$boa$^IHTe*9Hbd+&RmBJbWD5p zdkF;aU%&r+zJX^!ZeC?E^avmb#vvBn8)>=~O!i6PnU!n@r zzsVTsJV$HhoKg&nR({Af4(4cvrV3~f6^aiB8&+z_kJR~1GO#Qn@HYcr2E?zvb5QA1#{X^AaUoKiHQJ;!Fal3(uEtrO6??I&fi7Yuw8!N`ssXBF?!Lb7E4!7T;98$>p2M85p5#e76;|3#(S- zFlc;?m^deN&^R`1xQbNq>5eB9m^De>T?Be8ic6#MEktCE3@J@pwSxxGcF1%XLj8^ zV-~`nqbxaytW1SoNgRE6X{UIUMNfsxu1Ax>mULS|*qzw5#^37%>jrV%;C?q+&Yj9K zr2F)`oz4S&3>k+1jYHz2LHJSi#(lLLe+yP!!lqN%(YD~Zne}nCZX-Q*f388uOMRc> z{0Vu11iDcohkmYdhUjRC7NnV9A} zh?^S5pqSA{B!H9wK|OY!@Lj|7ND3iZ=huwAAUhHMj1?y%Rn$!&O&v@$w(OYpm@#>{ zKF4UGhWiI~0%H}E+`3Y&K>u@hoMvGY1abW5WVuC$W1H`faZCx(%QW*voaTZ+F~nx7 z{5b&u0b$*T3t|sQ+y2ejj2%no2j4Qaf{6Y!p-BZVfiCa<&LY4F=3_L0aaXb)=lfrG z0)S8A-ZtQmq&r#fhwye?OSOocAdXF;eDIYdDkG;3VJUQ*$_ChR_^gjy)#SqKugW_U|OCL_93*0<% z9c2}^th16+Po1K3ZIxhCq6YFBQ6v5k-UL;3?l;o9hq{>&T@xoW5&EB3NVPRFG3^Wbf6D3R_n~&pcxlw&PS^9Oy`12>VXiJ`* zELosd`x`W~JVPV|y4v@0NxOtJLuzd2>U%mu9^^S~406BQRMGGIXaelR?vnD_B*niI z^13K*JfHVG>f>zb4tc4SBu(ugQUSUl7Ofg&IP-ZW=&d*)1d9Xfa1~k&!53H zps}_XUZztegZ~lC)rbQ|J#$yiqfxYyar7VRDouNg=T-psVFr5TxWRf(eqs_d(==6P zwO$WJQ*lw(CBOczr7^`fdUbt%P}XbK*-Ha*F7{LkA|4liq|hmBm5bM-v=4!gvB{>` zx>b~^lXMr`bdadarbPj^4~9`Y_roKlR6A#U&1I$ceuyPS@U7pnYBKN^_CcEo_UOfD z2D|3V{PAK9#cIkC@{7!yA0&ox=-6c4vee$WIM1;Z!meq?UU0t5<4Y_9!^M)we)2e_ z8f?i$1%qz8SYh|0!V8_ZZ;M0SmvBY1IY9|X9W?ucst^+(ZNuWrQ2$Y!1^FsTalA%s1*# zeoVLHx&pLsVlt0KZ?pF`YFCy3dn#>|OO^RR4A{$twhxuaU>Jq`kE#-GBpm!84h+N0Li- z_P)vg%~&Z~%fVEIB;eEE+&{MD2NmaF^;!Cj=M9U&!A!a`LYDt6N+~GTk?|cnA>zHr zM}7<`o^Jgykeqo>-PgR8C)qFhuB}^~O0926XB&+RYz*pn$n@w9Q1Hv?hHc-_>py+C zP~IjXVr8H_TE-Kp@wAu7n2b>&PQ};QA(Q=H<;V#Oulx6Q(f#9Ti;S(#pp(J#50*US zYCN8)JR`imw_XzoXby#7D4$$3oiyR2R&o`B@3GCk(i2tU>*f-t)Xi$|hJPubdIj7Xjv}+k8>Rk-|s8SDe90HxVrX zUV^Usskw@YgKvNBc|t*h*V)G}RbX)zHVMWWkd2_LLXK8@Vwlw)Nq_bqN2$A8uw2na z#Ul+h@@YD{vmeZxvok6uY`WHTwOyi6<}ch)ZPY1%v~-Ly{pD>(ma2=Sf^B(4P<*%`rEAh3UAF2I+v5!i9jA5m~(5ik-sz=G_}4H zlxO?N`DNkF*{Qs)ndB(1yv;44bOwf$Ffw_~J_#Nqgqqj2ju_@GE4R5J6`9eln%u@7 zPr8#wZ`T5MIV}edH=YH-DBhXUdN`W?_|wf1Fr4w~rWqr@SfoI)UWx=L2Fpqkz^UM4 zpZ~C1pJ?DAzlWkxfM+*`UhK3K;OfQo`#UCQq4vDk@0*-%z9@&n)()fRetGm(zW(C; zO}Kv|3&FtXCA?0$kszUfejYsY!I!~8D46dtq+X>7IukxO7aMlPLT?6$QOudVUI@A# z$7nH6t0xT}@cYUscTGyB2iJhZrmr1W%tl`((h{X7sLXNqE*AYZq0r>8gYT8yYl>=Q~Bc;U>aGtQ?EX{fFS zQ(~s-t)x(++pS^&M-oegBI_|bT3HvHcS0{+l+ms&7Hf%FP!Q^QNCINbbqF7v;#m7b zRYoj=x>U7kZ1Hbssdx#kwj7aYhM(yIn|QlinNMW(Z?C|S7z0SCC_ISR?L|&e(ra+j zFDO4wr4S!Tn3Gj5;w|jVHPrguR8a@VdV`4eedKC2n^2T3pyBbOoG6I@W$2d8qJo6% zgJ#q&yX1ZdXom1cSPulK$aL@2R0{RLbM~wn!+3AZ7oZ5pr=Zqpcr%vqSD-r&+U#|oJ z(7Y3w8DJuQS}<~<&m5hRhY=RdE@XFLVXPL9kc)m;4MQ2!B`Gz$vcyR^#b!rN|M_<_4z4|l-5$yXTv zXnX|g3@6RmmN&5!f%OwWXfUHig8aQ#`hZpnt^urd**7uII?3(2S9@Y75`{F1)n9di z(aqYQpIT+#E+ku4ErdA{r;#G#KV0jMmK=aAh~Yf^zSRC^OD@GWGd&zjgcR$eKjVm= zAxUr*LeCT|)AYo)lfvC%s>^nPb|eup6KaS0`_zTujEpA3yQ$lQY+Zay9?$jSL1_m$ z#&_iwgWR)pugzfR-^~OOn`38k)j?F()t^X*6=6@U7LhBWm4ZeiKQT5v&mNd5$msgW z11RYJ>(&v=bJ91f*KfEKG`a*wf|^ZmMK3Z#b!Zb#ds)l)ll&3n4d{Vax8ug5&mIuv z&9zYe)h1Xhn9NRT#hV{gnP_fe2ga`)E=yPc0J)g9$Js73Xd_DmKP3b!h_R=KWgwN; z=0x$HRS79F>r3Fa8qKxmO|+^<)LZSxZa<%EygwB!46eZ<<;M72CxnZ-`XuUbNjS;~ zId26BlFFXFJvjp`uw*!Y!?vZeBbsFDUl9k%Q@l?#{!owHNfW<7kL3`i@!w_I6%x_r za*SQS>4h*+BG9*W=&LEVHZNY2Zf#r;~27PbrF z{qiv;oaQ2dL%&!7&Cf=%?he-YN@t>|Twa$05RP!0^%Aam8Ce3Qf`Jz;%wC`DrS^lS zfT*e#<}HJqzWEK>hhr^+t4I= zkw&UR7RA-4hmc0GkI(i;=L^`L7@nED!{MGp_Z61bTSxY_E~)2!MN5^Rv9nH3 z!%mDPJ={DLp|r%dy!qy5{1zaS3y%~zOR6_ePn8fZ21=N1kL#1IoMoS2r-+A7B)r*v z_b_D?e&NT#1b2W=5YrgMSb-cM9FfQU`mr0UG!$(INxEE6R8&-ZtRXFNCm(xtDVRqt z$?_4*-XdBs@(brfgKMP9`^mPznx^`eCyovH1ex24ede<(r3mUz<|*<0iBSwhcGez( zxA4#h6b`gmnW)Jxy}S%J03 zi+${nMNCG1Or1*Y=BqA}hcvMDp^UQI2gU ze#@%djDmc;n$&&(-}`l-{h%@(%p!rhmw$gl6cuiNrkKD+`fDyQXCC818up@l2m4Wd zOLt5lnyEZDsZ3kfS0$r$FPzFY^5=h%ahEAiRXQfxTsn}1@Rmid+*=Cv zlYv%~E`F9K--W9hqLCZ*-E<`L-$g-EcKm>wVUlKvvR-H#82Kg5M6a+TP?O&B(qHMR zMfQuZXInplPWBmtUwlD9#-z^O!S*VT#4W9^?(ZD$r`k}08sWCU&r(9GjA(MO9e8(f zH4=7ZYi;LH+0FQEFu-{u+Bpd}N`551JAX>d{7FBAD5x?}g;9rM$FxNkr1eF;^9e#9n zfDBs$ac2VfDJGk)cnXC1IoO7(0=U~2+ZMu+&}(9W%nXyZwr;JEM@(EqecH;9lazNn z?^P)O0}Iy!{x&b4aVOfi zN%9gA*v&I>;RO+7n3m#MvNf2jl@LnATHM+2*aA-xMT#6are&2KXQsdNx|gSKABP8f zj!7j0&$^(H-gkOx^ZniBBK^5H{ta!MU+-dtng*$i-QCKWDEW`7VPT2C*}%42*(0=# zyn9cpNJ2-t-XD5w=DYc%*6j>6f`@2;I|bSdXFH`1r{HkGT2id?4YoB@mIjS!y}`&Yd`c0;i`bRf%O>iT1$=aZqu(ZYUQj;8zcWq!BzlRS^Sh*E9y%YQE=Qo}^qh z`*$`&R2$b;KO}C`ZoF!>r)knKF>d-N32ZvqDbqwqiEGD*8c$}9elS)8o}&Mb3e0es z?MOTiRlwsWx6}uXwi>clE4pKl8th}5?vZx+%pF7d4CER=MNUhdI@6_6b_Q^M94ltC z2jWsD;_&}DI|ENL227+|28A_89)m7N)lB-21yu|qIRr@`#5PJ>TXDKfSc zFZrVg&1~#R7u)j#pA2_eUedG79OsA#(r3#o#`q-OT`{o4}0dZwEA<}z0Uq2U&>UO{X_XzFuTHEGtlhsgw|2>YYi@v+Amq?X`j31b_W_&&^N~y?KDLj3 zz}ehtYZiSySv9EXavRwjQbWJ)Fw2nYBIz)o#=i5aNXFWN%ZO|43s}a5XI$3p>!BU5 zCD=WR-Q1Vs+$un&tfXjc^xL-;(f?^10}n871>l$OYh%F@%PXiuTX`>Ku*kWY90C;NfwJ^3Q}~qhgbb z>5D!Tk=F`9#CA1bZ+J6dB0B*@$byFaN{G#bG}lS5K`vLBg4I5+59^zuoQbw{k`N~J z2moV{f27BLc!n2sNa1 zBl{{^punHy{vkHUxRWE0&ab~!ZWmSNZS5|N^`za;iCKTPkYF@W3yT7!bHa7a@7H^1 zm5q-ysfAsNv2NW$_hqP9)g%&pcta31@dLDY3p^xT@Q7iQ4F_!KGR>Ax3B^$c1BuwZ~kusSyWL885^B*AmTbJuC3hqX>Y!=Z#X zu|JvVM?mgM_n{K2-WmLe1S!_2IMM&^*ODd?s<-R6>-DGkw;K6SI7X+;!eVMv6b zxCBWf#CQ%H3`Xw(ZX6%%hTA1|-IooL5OdN$K7X8q*z`(-!nODn|G*wXdsI`RMTFjr zj(9^~uva_jQNe97_<2nXVG(MZel!%7jcoT_+?2N(E-fiN8%%f><~Mw=Lr%a;J-u*2 z6;#%#gSWoBL{wvn#xLW}QAfeuS*QhkmobWtv~>{mdt^H6)If|o;6Gh@uJlXtS#yEZ zm?x;-z)0v8slk_#z0uSFXk3o(cp(l%|1GmSKL7t&X5adMmD#s4I@hPAXk_s3jA()x z0nBQh&lLX;e+tCU(O>wQua+!G`OPa!pA}v!5he53YKyZ;LleT^p%(yMOr_gdV5Z4W zk&3U4r`us($`z7=gja7@D)%ZKE?xfaaDjh!xB)3F@DMvdTZLi9yR$5NrVO+8TFCqA z-T&%gETwcMB#_;)@w4FA-is6`s#LBB|1#YbDlm$V66e>B)3@DM}1^y<@RHbu?SpJ}2h zd3ezSn!8(9ZQlaRQ+ZU@ctzr2UiqUYN7G%B!UkfeGQWP9^!4gju65}H2XfqJT5>2r z1n_m>&bgU&KsEMu$s5`oeoj#FY!h#d)f-3`Ns-d!65mLD5&%N)iNaU(k0+HH@Cdc_ zAAS0782o{3g6=0b>}2qVX}ZFVJ3<(1i#Ey-Qk7#_AIs|XD)RqTYEN)!%N%DvtrCFS znD$woTb)NUlSbT{=HS@%-Ns4Q-xpH}eD%e&%8I7OQeEp2*8WZ{{^@uDJ5Ya`9pfHr z$msI-Y9I>qrD9~Kt3hTns5%h9cFgV{Cvx=q=iFWE5G!ENI`hmGFZGJKtWok2!%Tl9 z7xt`d;Tx?lwJ1%GEUx^mo_n5s`b~^znzeLlrhz4yQYj)Tb=rGI`e}%BMPS{V=c)qH zgd|`LS{I+H%=-z-KGOX##_`G$v%^F|8U6zg*-OH`aB&**$)z@w= zo_&LAANOBYje76iJ%X2s)$isw7TrHGN^FifPuKgo&~GsFQ#n!b?29Xzan#Sd;ECNc zqCl(G7YS0WEK00q%BS_(do`I|ayCPU!i12G@u9wie&!w|X!rvO`(#1RcquSj}POiCqe@HMJ ztkSxdzI|^x;PsJ0*hk8o<5Klyx(ItUweRak=M*fp9dmRWocd88KkInFCcdcr*rSj7 zW%|tOMxC;@<*w(8s0avpBkkP?s+haWn2Mk7$1~o}3p;Lhywa)hsotG!(c15h)5$-( zRbh!|D?76~gUPgv7*?7#&utzmAA_oQ^7%dbiT#ff%E%g}333Xvyd7~!c^h~Y9v(b{{KA(eOwdsK#$%XhwLqF+8Tpp~cZ1%{}!tT7< zferO6cBJEQlVW7=Z5FMl)<7tw1tH1trUQCo!3CjZysD-%#rF*5fotIxQ^M{N>aKzF zEz)~upC1!lzT4PXJCN)d{d&ndTHT`Rg`E{LMeUo&MC-?+{RT z0sJqBHVNc-aDm)LZ(ylqQkp~mMf`77`aX4YC2A&D)9^1MUEggHeOj1*^{APCQYoCz zErRfZ+`{yoBFxyJ!2acaY23fzXpJ7GOa>Oq)Yb#l{1=dC)ZNg8XXHI;I+gWA z$KrU9HUl+Q#SntXA(6diuQk__SOy0-yAKB)wRdAdl9s=kj!Jz`^lFIrx4@t7mBvFy z_b;S>QWOA;FAhqu2kw3M6@l;X^Q9)n#Lyic9@Y<`Q?Qj<^OSc?KYEmIiXuxX?51+G z)>pu)1^U9Gb8{Jr44Ud!`;*7Q4I(y8MCa`Ff9{9r#k@fAy=;r+F7k0HdObCYkxmaq zi1t967^tj|n$f$77M1nyu!5!oAV{X5enu}OSEoQ;w>`Y#eYt&2RDVAi^d7iu&+ae4 z(>v568`iPk_9fk3iJV=e8yjp~2=s)5Cs|%Lz33JBB_y6M@aA2&zWaJ|Brew zQ4q^8%ZZb~Y_6>~A-o zzM(`oNYo;5ksMsS7-mHR`&&xw<0^i1)b#^1!itVl(lizH({wamC6MzZ3zf%(cK1E?Ba_U^?xzoWMP5Vl( zH?tPVf<#8n47YtNPiiwv+lm=~M*46~dM(Fa zIWBI}>hK&|Gsnqh*mtbo3ceF(VdB-yUERKCm{QLhm(AwB&~8-p6O^Pu&D|MpqI|G> zlCdQ==9~X}_X~d}i8&aY{ijXC$ZDR>Lyc@iv&#I%5gFe?pM&HnK}z`i^#8-wTSrCN zweQ~w64H%GgR}zD-Hm{Bi!_J>2!hfn-67K54MUfT(lvy@P)gT;)X?y5e4g*G*87j^ zUaT9J*R`*`_Zgq#IN#AM#a{VI0lG|AdTIy}6|9~zT>)7V1VZxJDUb$`8q_MJ~idRjB`b=D@;?nG& zxmKE50ZK_5oW%n#lQ4YMnI)12deAadSUwFB_T_Jt;AFt;^L1L&m8gg73qOzckA~;V zLE(4N0MCb6lyl$Jw`}jsG-orfnsgBJawl4s?wfq3e|$WgKTNp-WnjJJ--~FH}NKa`mu6SgI|^4ke%^$ zuZaDxru^g5{CUp~y4PFfjQQZ-UT)(054z>g zbuC{vEG!vtQ1_qd5=84nsRMC#jG%@Jeak{`zuZXfj_$xnvlbhHGt5{Gq~X z67}HITJJkRe2n5-*G%sUo7W88+;C99Ynz}Ig=PwbqEsj6BmvUZhqBc|IPs?Msg*NN6+v@hpOYzf)%GWoQgCE5|2U$HL_nHxa9$fd6!a!fHh zOhEyTC6T0W47(tnHyl9z^$RQ=lb1@)I_SQB(nzWg8qhyjsk3Avx1T`V01A*j1*E8q z>pme$C)MMDcB*#CtmV@XtjzEDuz}=(l=z?ZEN2}Tzf8T>`Y)cjZP4Ep5fl9(vu(0O ztqq^or*;NIO)o?M0KLdZflO7CxMrh1KR?_rnEP_0m1|(1I^_iQ|5{HQWaImEr8A9< znzBK!1J1`YkR8?dy4qu<>vlDjbJ$8_VCisv!p-WXg+|MD<4~ZV)8)7HI*abdJ4}s! zNHmZAHNhzm8Ws+dPXop)Ny6u1GvXE%UyKf5v5D%LBK?-J;>>^G?BBCK4gi*E-gQ(w zB1)#>HvmIXx)^}xRs!JILwBNd{JJUg5TN69hotsriZ*>mWgPRp1X|Tqz}sl$NZns( zvAl2V^$lzNB*88c=T6z&Ws1yEyNkJuxp#921^@hKbCEgs4$%hiiKKupgD6@jZhAkGtuw8xXoVA@_stpEf<@%yQ#Zsv@fsf#LajKL zcU@F@sK*{mPr5Vff>2d)v3+#$feR|>>!=@50w$MJ4*G>g(>A|u>~9Dl(^Y1Po(ppW zzq;HXUQ~&n>I9Mu5p%KJ2s3f~s*cw+_9Z`ls`~gkb#=%$HaY6M1ba%^ZzP+~Reare zgR=?(eSicYEU;6kJ@UyK>3dH zX49+q5}6f_mVs)G@jSM8BSp^GiU5RrpZ*qpduNK*j1dPNDSG=Yxs z$IqWFVf!aLpQDI3xIX=LDlIK_LBRRn{U0(`>sR@%EmgQYj1^&^9)1Tc{_l8**Sk{M z-<_;fZtiO#xm9fFcs%lN+*|Cpnvc(M!y18=+nu(@j@%BTl1IvG^@0F4TKn4K31$5D zH2>RadEX02eiagj1Saq=P(C2x;(Py|3Jz2mJO!tezGhJ@d6kR2x>oC((yjYKpqJ3) zaCUU%XwqmZz`4X3KAe4c`3l1`Q1YfpcDsGn2)bxDa+EJ=+?~Z$?)M7BEq9q%^0$-s z#mwxYh@Ed2qlj`@uYtUV!L@XH?ZT_>!pZaA(Tt>T^*#Mpq}ZmM`EO=f3N+@X*S=kS znsTD6qIqjH``3k1uawEM&F4P}E=XX;5i9r0+KY}#uFodwJO}r;Jwx2LpFMLBsC#8x zkP_oXQ2mt`g5LuB!a{*&{#8#_qd$om& zn4Obv4O>(jubMeP68hV$V+RXtv}Yi*O|mT3P>Ff_LHXPKxel2zx1v#n$JT)Lte0~( zmB>4ty$+7h`IM%d`BbLzUC9InE_`3(R(?Nusdo8`F;CFl9itoO`bp`-4?0;}OI=-2 zcd$x>>#(O7FkxXR`73>lM9fuA2jc6!+pF#}3Y%cpEmP|7JXzf;es;PC;(8PmbS4(U z70?Thsd&|4WG&`~fa`)j`I`SApz4@uea~|FgQ{dcVU1UtNjiL{#*^?uR*0+vWGgXW zF}7?8Xbw2;_~t+~?6PyIr`G)m@(A1~a|ukUtAN5jTus!#LMgBAx@i>|8SRDm9*0{~aFrk3QyK(GLIrDB5Y#)6ZY^t9M)s+AjH4my3A0*>iP>7}uFzQS^t# z^fBsANZ9R+W}&{@`)?cKOnmCUZK~Fz_x7iO?Ms!~GyS?xJ7^&WjcRdIWHA&FUu;?y z?oam?M~~SzzK949;f;qi>WA{X%^C`w3-{Tf+6Ns5g8pG1yxhnB8(2+gU^>GHTwC=3 z`EUbpzKEBiem8eAmX0z(a+Md0Krc}C(b+yQFDV2_NUMRJ zSCHu#d$`@{JtkghD+}*qm?AiQ$y0U|^%#)o-*xtH0&?!u6Kkc#PYr*51pwhL_+CSB zDJQ$4X~c~Hki1)?aIpNd5b!@(mY3393n3w}`dCKsSsxpyyuzIg1(lAJ!Szpx{OIg#N-W5^5_eKXot5~}e!3!J;CQBRds`8J9p+&@*+(>^c7zC@@-2rBjTWO;GglNhyW<|f8akWP^QZ= zi&I?kK8j}li9z&mHDd8^&k{H@=&`X1h|!fQd2L5nm(i`srPnJ=TC}W-=^yFWTF56$ z^8`lhc{)NMN{O%ec&5q7BPp5kyIb}H$6K7=uj zxk^yg?<<}W=>Q1g6gat3<>`{2ne`v~a$H@pxLJV@dnOJ`ysrbJxZ-SCVVk?CK|`{Q zl)uo>@2tm>=(9eobK#P7Gz}fVEZI;cxh^TuZIM!fOkvh{o;(8;h0k?;XqzVB$pgcO z--)|h6e;`O{@(Y#CGb`V33b19=B$C5t@On+vZq&r^N!t%F!j?TP-{ISK|k_|6NfW^ zDNR@G-oxTv(8A2l!v@<_&5C>azoWA){eFI%1kEn4aDg^ak{ChOUk}EIK!^uinVwEI zy9;bRnG4)s1yxz|7j3V*zeoATFk^&I@02+JHzZ#%x6kdo-WgTnl|U5tG)tVG4y$D& zN0Z05NFtX!4(HlE?w57^~@SU>EqV0~}*Mei7h$@thD6Gh3ZGdgu0cgJPip39p z5SJyb0zgT}{j&lTcxEV5V=&;X64mv`wS2OK4dhA(q2v9C7GSHZ^1aw%kq@I!ROir+ ztq>y6eMC14&hI=WZeF=LaNbXP_9=AJa6`Gy8&1YXcLB-UNCW}PtQnjo@bZR8$e$ba z+nqGyK0T(4<4R9-D=mrrP99F-XP;0vSXa}B{l$oO6q^~!J+_#p(Z-r3^lA znz*(EHD4ck-KPls^8$LGBWdk@r{7;o>GAtc^OA9&K;Be&zXgRYA|Vy&5NGG=?HPD3 z0lKF=VT}Q*Tzy%V)0Kg>R<{p@J$@z#Tk$>W;*sg=x{LV1Dkgu7XlMqlG|^O?qWgtX zaDODZEfGZEDPywT(Mcp7VqmM{Y$NJXrdr-J=Zk^#uVL3d2l^T=rr2o;>eTNVl`{$T zgm`|fZtuu1sir&bZgGXBCT~_j8%pJlMk?O7>4RdR716NftGE)e`_XdLoz^NL6?r5YR39J>;(so zPQd-r2QK(>6iW020?3sVGhfYAYr32`HgpusO9eya%d;M!AtG%Fj^egz0O+Y&vc(TS zM6a<^N8v?k0Kr6`P*U9wsdfF~G=5z&8t|7WK2iXtxQa14J5i7MRZil%$HD|4;z=40 zO2Yw88zZ-#A-=`$edg?OiD=SIRkGT?&p7l+!jW~hWP{PX1B{H(cIK>`*`1!MGMuCI ztTK;9I>7gFJGPwnVUp^MlYElM&da^TL>7&K7T1kQ=m;?SHuGWPYX2KJcr9B*iTT3n zul)lCu<>LQIjq+I2tjZ`Fs{P(Wgi<@a{Xt+;Q|8!=!E_%|62pEI`HFNE1oatNhtQ} zpeKEy1f8vk0vS>YI7o}At>zN+TGn9g6y4L?ikl-!P&9Qj58_9)#l3M4>p4; zV6|9t0c#IO$)gcc{z3<(U=G zE~CMJtPjk;LcBqw%j59t>3#D8+$7Nl{h>7P6u^Fvs0bCeFXU<1nffKGEO&*ThimA9 zv?BW@M`jB2iMr=~VC74FZTlX`+E8A!Zk_A*VaYi)f$O_m!f8ZkWgoscHi&C5LkvNB z$u?4lHJ+V)ln;4>y7QP20#-`TD(C1rh{|4^2m|+VK^3k695@<1JHFus#y)hwZV8K6 zwxa%SnR5R6EVZ5bI9+jg6(~a&6OE&aife^7;C9oiMOYp3B;YER_p zhqM~WuKzYt?$2)guVMka7TqgfL+&}FUoZA^43ccEo(bVInr_5WgPsk6=3V<c(67+Lnp8vRm3~=mN>yg zAqr6Yom_pYx}JGLh!DoCU*DBXsZvJh&HKKK?y-qPc>0(Oc2CC=`05FRx8iZjR_BYIIAn1rCi zdd_seJhI4yfYa{5Pui{pC9~%NeIa0@q#Fc}`)kn+KP-TWe}4*;nFb2%uyu`S2irN7 zx@UjY@xvRxZgHTyJTrK_*vQ13dg+zwUwv3Y>q=$k=6 zD!l#2Cj~sp>gz{uDC;kv_W=uhpBl?c4scTmBf{U&0;Gt6{uH(zV}~05fC$s4JI*a6 zApi}Flq#woX z6x(7bf6NL`LTUeO0|Cgt8cw-$?T@NU&_4`&cv63EAYHR7GY>?|+6UIrueMMs-v+cT z{eIgbs_#1T^37L|*RSpJn$5LNQ`zsgwf}g9x>{dNzBO`c)V4leW=`E%Jd;a|<#RH9A$vF-BAYOCRqDTR z`cmWl&A7a<^Knkb*+$apfNv~GU$O?z()vXwWtq=S%0>2-*GZX`QnvK?(i5S;+7ze} z%OkH-H+9g#h&PaUeSm94MXwY#qZIv^Kk2qou-(H~vxhL%ij_XRf*!}LT`mUr51dLg@RuQg7j9l*#xhOob)buB>IlfNj+jjzNWCnqF% z7lCG2BX?(Y*Qt^G?z;vQKuf{ zc4%ri*A=2rFTaiLRl8qnh#dr%UWU2`6kb10Gs)E{D(3gEz5acfgNy68;?~D4U#fF; z*9A&mSGk68OQF~3+{X+0`+b>yibD*LHIV&%DICLdx>^S|{T9+CNt zrHMDx*@BOPiBU6QMG#nDi06(|PWIz44gy=cVeVZoXu!+XovOCUEkoBmcnDAhlS#-PJ%0ov=*HQ@2JwW?U(0MB|)n(`f_YkL+3udyUJjMPnI0q!(q|&V)_Fr-IAiZL( zx;W=~wg6K`PXSpnixcmyHl__?y42|F=g_~d;{zRMwCocr8>lcaU4GlmIChh42uy2+ z@!0-(=?nz{>nZna5$`{5<}oDF<(K#Ck~T4?112vQdf&zjoZffVajtx?hvM1`PG#qU ze|&PpJ)XEftz_ribqn!VRBJ<-#)nD1@Jg3Vp@Qu8F>ZS9fz$P;q?FJE$q#!EH#2fG zD&$}oR>Mv8sI6!k*Rzg;Uo>MJ&--)z;ue>^eS>bV6o_HSp3PJ1n}|kk-UKdm`2AjyiGnPLyU6`J{2FL`=)=!k@kTOGMc%b=ry&M z>Y$Om6co*aI)6uPaEb9wj*K~8zd-j%sxIe>!80vW*tG{fp~4848Vbk(*6rC;z?U?c z>w!mp6Q^el0*I>jIxijBjG!g#s$1=xVUkvLe++aAq?J{!x(Mk5$K(3mPpFt$`0PGh zV}BmonAOO|Xol8He}ucb1Y}y&b#qZ8;_ka&7&>1*Cbkx8a7jf<5UIRh7D3dGA=e|t zWm@`0_nKu*yA%rGOOn6ChD74tB0K)}w}{}&&jxRbFpULJ2>`I$bQ$hk1=2JT?LFOOp6<^mF3 z21dC8`RFz)&h{&S{?b+|`c>=mNEmiSTZ$PxzpqBIz3UtPWN5dm&i|m&F1QLsWOYy? zqYqJ7b)Y~2d=*fCrKq(%6vv28IN+6>?qK21_S9NeI|B_RVv*c2eV7cCTHMWKps|wi zgVn%OV;d$z-syV>=c?od%jMA|vyE@Q>uWu60$AZqTb{YF>{9~B$k(|YT-&^7a1=+n zyBZ@9(qT84?zcz|+eJ_}{ol zxIp??=du*^XKrA-zuh41It2t3_^!$#$Sv&wSUIF<`%}{Pu1(bF?4mO?^XcV-xS+K! z2cD)U`X&4Op~RB$H~Gh2wbp}a@>;*RPBpf+GjQv0t)GxTyA}TJT09j@M<06ZDgOHj zCGu8j3Oxa6*Y*l=b|%zb*&k5d^`7n%pZveP2+w}f{(9eO*9|KmMn0EMR}E~QPgoX&(LLx>F@4Lxg#ahMmo+<8Rq~N_CFgb)-ILfA5iPpVORRsh?Nfk9;lY zZ=b{Mu`HfR&WWL+)|tD1jLP)JzkW+UOJrBv-ZN39%--^dS+_Vf!SzUr!`?-N%ZJ9c zf{*ceZ$?jhcTTCXXK+>W!-2bqiXx~%f(15hc9uTzkZn=58qfV|wv4mf-=K)%Z&>8S|dU%5|6)?+{!|Le_l?i|NupC7h!*f~{VmJ5X^>L@4EpVTYg z?EWzoskOaxi_`SbQa}D|cVjZv4 z!c{m|f;_i^;L?arLAZF9_uoS#Vhrf}Cv)}YtuR47kR%f0aqi;pZ^E-m9-7GnF$nCUayk=vt&i+*IWItI& zH}08NQ~9nSRlWC+2|qyQyAra9(K(hu78FbNjP0&%fvSjK>UZfjfYR@6%q;KA?@=7| z7PJ+wy#Td1H4g^`u^mCjFGi<>v?+ZK`4`Fo;KxRfR@(3rY-uX(-ej&?hOQkTN6Q?% z+CK`i9P1RbkfUOXK$T$*hlwJ}5~)(Jp!s zNCVk)SQi5p({W&q_<=8p0|n?cwKTm3XNAoIa8#AVP?fyAkd9}7kIj>*nP>KbCKHW{ zk+$*W5&-n??6At7S1q;(k@44Ile%074sYHm7~z;4%e!HuZ<1MU3tjFIXK zq@zk7ZVn402Ju~)DF&Wg+aB#dz7gxX(-KAxHmX`26$dio+w&iIX)9v!OhW^98(AV! z5?$m~Rg%YJ`yov>(3_&^e8k3ZS3mZ?`)8X`F%DS~WCG3>FQ!t>KzK9>eS;&Mq2Eh` zlLMq>+Y_e}dSGNjcT1m$F^|jVr1pLD2J+ofKt=IfoSZVPR5lIlt#+-=?m?$o=4B{;Ipg4wA)x$H9XiH27|imHu_M@BdK!DXbGPu=aQD^f!b1hZD_QI^puq z@)0LRT&kyJ)D>qMrb7CQnLIK*?XzZ&C3O|qnFJEL@RrpFO{F z*dN_joV+vRh0hxHo5gI|jE>%+6yC6U+y)Rh0+;Wev*ZKfZeWA1fK&wVI7m#|MPaM3 zNqy#k!=oCz@3Uzz_rYgP&0j5&4y&!9TbYslVkhH=?>VO%7O;}o=tg4lw$!WsT2s@E z7%;%$zP|FLF_Y*9M}G+ApoWLDfvV8^lp-99hT_li?=0S-*!tD%IP=L^xxNC$+0kz) z5E2Lp_9wyhlIN!ZL0Uzhy-+Z&`|fCL%~=s!i)7Xd|0iPF@^{oZw-$? z9S>L_UbVQ!>TjSgzqYCfcv=DI`V*E)^Z`3OprDvrbFVaFZQ1LmR}cvW9wlxuk{2E; zb&xuG6(0ERCp-!p*66UewZem)y20c<6~45}4KAc^;R08_%h?k=8=+2Cmz@iTr+-Lh zTl}isjBN7|D}oqG`NdB`*hKapc#;F9((uH#P^!CEC$-m%nalYj&CAxhsY_F8PiU$k zsCeyqwFR*9w#EGFRiDGbYy&uo>d9g96F}qI7cvC4#(ah$x4EZx#r_|GVy7K<_L9LM zD5MW$q*`1JP^k+I{A-&iai5TSP^FuAeoqyL?`D}X1{~{T6Hi=$TA5aX5+Ql?*R;i$ zxUXK(Y~6b>2Jh5v;Ux2mjX zo!*@=TOhsKyz&i?>oJ{no%D5vz=enGxSnA)^w}~m{MS{jI$ov_djpM^3W&|8B)34;$L`bsT z&ZIGb)|q3WB}J-G^D1T^qDs(7a^nY%L0`ICZAY^CJ7PSG@TlWF2D=iick~9clDaCr zvL`LWCIMM{6l3>=hGGZ2WhYgmIWq{PigKnI>$-pJED?D~<#0DVfXC@K_#+gItblRe z3wV7zcFgY!jLFrRQK{o{Wxr^i?!5PV2QD09I5{;KbQ)4P5K1ToJpl-wilPzwbd|V^ zLX64PbOzJO3abdm`d8qK*4=OB^OJmLtn2H=HXQ|;>!T8lbSWR9KkdImX$y6yvm8lF zQ!51GEc)IW15b!hkC(ph`gb2nBtk~g4<~zvGMH+pNOx~s7kAObw?&S3_mN4}Mcz-Q zI3%llH;#6&v{`pGp#%^gX52)I$c@3Xy`TbLrs;7xy5%$^qJ*beVvAQR#m;MI<^COT zxAp6abP82%hjH9Pj`nLU}f1BAU>pW=QYkJ`q<;{O#BfY%g-BwRI z%Cb*iOfiCA6-6}}4qD`SGuK@!jATB=|3Uuwj>}$uhd&5hF@I()*ov_T9b~+m$#*_v zL9DU=hqUE&0+TgXz-uIA?5Q5QZ1^`fMK|8aNNKhHI@nP;c{eIZ&|*C`u{JABCt zeuxj{O3`(2D6!@Zfi(d_F{iKbVg0&tYye|)az{VoorpZ-*tdHX_DvY4WA-k3g9sRx zTHyDWRofbo3wn|To>=^Jqu%!eZ}hQ;?te+E9G3L!M|?+?6sJ=!wq{Biwx^0tfQNK# z>kDtM8WEixw?_AIK`rhN?H5few(2T{c+q!P@+(5fGY9^J^=pyRMMorso#4%-MiydG zp>cP?oC!WuRjvp%kF}Y;6HBxpe$81;3>7Bq*{EWfkl#>Kc>4{hW5u{AbsK^{$$xA> z{+F)zF8exMv;(tJD0o3F`s|+pCw}prWcCT#czYtTN+`&K5E2b(D@Gzja>mUmF;rdK zffX~BgRk2@B0`=@e$;Zjvh8=qM&{HnQ<#IMkGCB;LpPus>*rbW=_J=?{XDX+X2}or zZt)k`HIF&cc^$v7@girZBX!)ebRwgLP`la7_lZ)8KKTK|@4gH&rWp z-ua7fSI|%5^`dtSHNY#C+3M{{=!_uCL%>fQw5q*~XD_BX*)jyX#Qty0N;8y ztvs@O+PCIc-RCo^uM<3P{7gh?;>}6HQWD|e&jER@hF#+Eb_G;n=hd7S#>XuTYup#$ zlBOH$ygtX+0xV?nGwRveCK1Ppy~;NlkM5}VbJumBry8AxF6sA! z=vSEF!$to{eTE6)J630JgL>MnUqZ%R?Qp!k7Eu8 zobjJ^^v}n4_pB3hKa@?J7hUd9%j%>-7zxZ0W`wW5G z5#kk0^Lh20JqFNB1Mg~Gp@FGx4RH>PSSr`@N$I5A>eN)2>liDA~%lgMEdBE zL{!XkZL$eFJTpH*2K;@FBr}0$*Wb-AUJ^mbxo$b8*YsN6tF36E@$BthO3@bVg(jvN`GII3IzJzl5eDhdunob|#Q+9^8KBI~qPL_$gbF z>!n@!Z!LZeeNY;GC~Gy_s{6|_tJ+9Et2&Jif$pwt2vJoSNvOP?V-oMdPuSXzic2Fc zGl;!*bW3=Gw_oY`HTV6K5Tp}anhtr<J557X{dtGw(Ax-8u3^X1vA3>eRG zQ43Y&tH--&>5zmZF`Vowg6P5eZPWdP6Xes*GXEOkSh;kMIW@^%F}**V8;@pRE-rlq ztnj}Lxlr)jw=fpW9a1zY$wn>C_F+2HQJ8xsI4CL<`3&c2Nb%Cbb;!{_$=;&YV_7H1 zDhKILLZT`dfB#RSoxLRbD^gZ>d&=2Aya>EO9F^09KQ|^N6<}gU)D_69O5O)d1R-f$tcKN-I4y9i{-$+9d`?|xB`+)~?8Cw_ zf9vm|2Ca=TeWQ1W6wfC(n7!+2&=#5Aktyw%Y8^DbhEU6o2ldoPC}1xZ7!ir?Ap!O?NGs@HmTb-MA0p*FPb z_Uk3FWD#P+Ja(!cRQ`L`^wmM-%%vbJbY#%YOwE&6@ggN zz}|RD*W^HCp!}m5;o#&{d^pZy)LIihU$q&DNI>X!W=q7kj%(|@z}^_jR!L;@5N@n0 zB7$T$|EVZhi4xq9+TUng+<>jzJcgLu;QPwBiuds^&r(tfyve-7M!D5>`9N_~ zu5_i7hk#C~N0z2PH>22aI;-Xrvs%Q+f2b$c2DA|E6s~+ZEBvdL?b0q4jbd>lBkE<< z)v=Ef4ULZ-yfOXjHG?h0F{89|2_YMj1j;JczZs_*W9?Q%JrVo(W5`!#Kdx&0-UeQ< zv_qY&0`Weg_8T$~RjSUb!<}uOWp?VkbI&1o4(oYhtg5Oyc`o`n*FvC4maA_RF&1=a zAYHXu8)(vRY0a$vA_lR!8CA+d6t3d+w<#88TXm`MqlG9uYNf~23pq~6;=>AgvzsgG zSlCdU@ul%dQS`u4LqcuC?BM4YpDLj%ZqM!MQ|7Cx+{Goh$H}B55sB4fzl$G=mwq3` zc-bm>vED?8r0Z?xq*~*pX)1u_EJ(v*8GicVg>S~{J7Tb&l*d|Ggb=ns{NjG;2jG>B zQ%Yw1%|N|Q7rCY!6-3DhaIHFL0k&Z`fei59T`I56zxi4Jc*z9+Rbhzws{2VC#!YMA z1{ZZZDbjA@PZWV_zBw7!iv$N74t`cG#W$zQ&vhmX;s-ud5kR~`QQuEhW7x}7T-hjo zJ`mx#zD?11mdm*Dq%lIsgSS7+R%%-b(J95X8uF^|vxH1ngg1#rL~f|>=_6C$>!xM( z|7S>=+0boVb-1rQ(=Tqz}=8NH7Txp0DNK zRC>GW+)g@?TsBX9vuB`QC7~VfR6dW^R$}k{9;0#7(;Jzg&h9SU-%Weaq$N33SoTA@ z@IKf1CHm$}(c>~UJXrfO-Be0Q$#*mq-l>l(-dl?IN*UK6GBcxx2G$eRD53(F?r(Do zV}ftl-F&&us*^UzOBth)_{UDj6Rt3U%oj3r^;~f_BO)~PVFCz=%(nPbz6nu9nd9zy z+ZhSB0#7szN7~|jakrPJBxNC?7uxGLk`+D5g5EiN*G^l)W2oS_n5FMtqklf#WeiHW z@R0R!r|JH_yuM#5{1*9k$S_k|N#gPnqhS2mqQ`CbaUo?V@rj9d76+Gbwz}krkB*>I zOzsHpXqTLy-wo5nIb&?mGwTAlc~Q7PeNsHF*qU7Ht(V}-ceRbv+c!bd+f+DXqSwCg zsr~#tdZL1~DIzRF>cdO>q3U=Wc8{K=7e&wGi*AQ|qYPt`8H!~IoY?QPbY@~v*q#lq z6=*djvd=rJgrt|VVQKo<$8D?1=$H`|d}5ML)6MW|UYmjRI48>8lS^+`!@M-4;i$6L z7iFRL`mpR7U8iX$M|q`RdgS!YuTV^t4j$Em`+vVg9y~z;2;4`+*3xRbk2cdZlUI(? zte>OJ=l!KwsQfmwkLJppMF(;5#Yg-2Ab|}1&#N3Cefcn8MGK0XpXSG~onNw^_P+>~ z$n+()B;p0T2^H*BT8MONZkV6p?WQdra3917C0TJvnG8qvR&;IJKXo-01${ zcr({?7DINkPQR1d2%RiW+flSUwKlgg?3P^e-#M%%81jvbTaIlz5*NQt_hUqt28ncd zR<#63BX`}Nh$_U4U;dU)=@lQ2NR*TgrT$Q*qyM4^_oEM=&`2pmbOF4CRxXVsjEp^5 zo_?uJHNq~WSSc-dMJGjdFzCIUhrgcA1AEQVlTA776n|!^ul}Gy>5)!=tpC3sG1=%R z)-7pRqjPxR&2Z-p8muT$1=9+N27-8th*L(-Jc!G~q1e$ZXOj zw-w*}nD;o=uZv1QanWsJdNYuBI_=F|1Gy=umNdN9D$vf$Z4OVm?q}p~dc!8G$e+OU ze3>6?R2V%ze0@LCrde(zexJ+|js((7ypNS>etw`g?3Y3k&X;Uc*vcxW$bF!f3*1EK zXN@zg1@x#!C4upO|0Nbrq2Hg^83Y7h9R)|XzY5JBh!+Cx>a4nAOW~~AVkIO@fKgzq z>#$L!^*E3Y9uX1IN5};0T-qmReBZ{HiOhW&<}E?{^UWYaL`0+nOetOt=XQwn%?b<8yOjuG&JyARD8*PE-Ab3z;jPj@!R(yz5Y{=l@o*$ES$Deu3#@p zw@6oaJX>HTSEr#A$xnKRP5uDwAq?CfmcE)Y)&pzTZ1WF8a zN`S4=pt#VktFKQ!H8qv0|Kc6)ak_<+WyVO1&?yp0Mg>za*P#p(a6Pw`U5hZo3)W1+ z^IWx%gFg3s0j;g=0#@*@+{6{;y&jC;RFz6Zss!nqpX#HJe9l!Zp?8kKokoonQ9(;EYrAf*6kIhtqdjq-rv5<=a0Pe-6pCEz%3 z;Cy%1g{x9r>95Pp0Sk0u481(GY$XXALK^Z=L*^Ftk5s#G; zLdx|jBm9Yu>d_x6R!h-J)A9=lD2TDx)CFv?N@nLfIGy2LuLhVE2EScNbjAYhQm-%? zuS0v@hR^XUTMTe3<;L)Cbtb1HG>R6z_ZAut-l#;{JEqFCPkr{Vz^m(gqO_kylXI$z zQSv>xk-rf6;9zXxn<078XCMP_#ID_MG`@EQs(TZ{lO3WSsv~UhXXtCK$>aZ zVuXKnATak;U$}ak+yv@+ts7G>=vEMt--~N4M>f3Yd6{TxXJ%&&KLYFby}q`QOyy|d zcExo53C3Ezw3Dfd0e0yOa3RPlOp!K|8y4a*j!AJG7#KQx<2cr(5JWJl zxhJ7$>vQ*3WNGK3*&SlpC8XBc{${mdJB`iECn%)`Rc)r!P{7 z_XLo-C+S^CrN^RwTpvb}=^jxBFcb%^e@?+%hN!oMmPIg5ylADCE4RHUg%oAmkOepo zen?e1Ju#0J@GwSm&lJ=9%h+$39P6TM=LLNT9=kkviuB)dgK=YhSg?@Oy?LMg_4qkW zE`QMF`Rtm$5ok9NjO^N@ju{h@6s|^>OAp^VbkEL~xE_@FWH*s4>D|t5p3g!{2|k`M zfwd91=DYNGy^rQxyW~i3lh=u=!6#n>=tU5L8WW98qRV9%>Wm)KYG(O&!6py?A%gZg zsq?zqOUu3UFL7a--447yWu$94vgi_qR=z&589uF9(kup<4k6xHsgIq%}2$_YZqo9#X?DQKz@S6MDmmdGJ~ioc!Z zUn!_P!-I}EN>BQfutx;VJ!~Sz=*}XSKGr+#7h}EEc{ktawS9hA&7s*=@mI2Fga511 zHp?%3r0dY=@#9}wuNB*RUcUQ8HyfyXWJM=MO(&%uDofy~S~gf(R50U@SsX8B8df?UE#?GZ!S*J$c0$8+LLi5i#T%nCV9l<w@4AXQ<2`5%>m=NWOS{u{YJZhXNxgDSuj6IJNcz=6Eq~LXk82^so7?K$w~g zP~#^yJv5gbv`luw>ydFSVfO0y7h)vG!Bfj{zzr-wdcR&6<3jNAg8c3qDu{s=?YxD( zL0tR^qnef!r7dL~cEqd3yjbl{EM;^P{!R->N??xk@pXyS(#z+(%ztv?x)kGVJu0;5 z^+!9d*fS5pZ<(`~#5_Yz4ZJpEj7uFCsd!1rj+z(31r}qYA2upxpQWGki!AUBJejK~ zTzAt%#r#6|(#%lhS$!GKW%E?>gROzqhiMz%79j+5!guSj^Kypr(4g@9A}gnW!v3MK zxul}Rw7ba{{eR)1%LQ{g*_Hm?{lBKZZ3A@h;J*wf+#2mp0@ zre{y%pXM6=d!kkklAH3RFVsrZ_Q8Zl_3f1joPIHu0Cc1;o>0b97bVw|Nu+%AQ=~_Q zNzYhfYG&q9^5@SA;!f?2oBBafwf9C82qReZQBhH$)`Mhk931jNkdX9Z-d*A$C3`_+ zUmk%nAp~LEalBdn>ha@2uHNs*S}d8q1)=cI6xt6yEp<0BhYR$m#x7+`Lm!rWv2(Dq z%jxM+*hJg>#zx^U5iyBg<4W>k$SQvf(F$?ulAT^W^V#0sO6Fm^%Prm?-TF%W*%S~Z zg4|`e(UR?tp1ca3Fc#gJjm)Z=1(9twV5H^wH zd!HeP2vW`^i4I}{TKU`^pAP>ovr2!{`!72WHLC=i7GDex4=-zDqTO(;n1;$HF%;l64tZQV%g1QXLpt}d4|eMK5^D2A^)u|RqI6aA*O-+YsZ#Q^~&3X>5z)Qk>XKrf^8@V~BS2V?v?L1ji?~2=w@cC2544*MQZ!-r? zLHq+62>mC!^dI{Ns_`NTx%Xg2;dnU7yOiwCQF7|m&JWhA7{g9k@2VHd<=-yOUFAjk zu}4fC;LHnhbDwN8)j#-NmKUx3-dSO799a-Aa+|{HyjZcn+SE{)R+OiUdy1m?OJ`h@ zUw4`BNSyuxxqQ_ao%j~>u?Yskb2l27{Sl8@y z7ajaP&%=PBPN{)M?BMLQXMQ6nkzdtT`n$LAyFwbk_3>5xAb{xUOoTrl-Eo(;NBuDm&!sgj&gOj zCRbhmLL9@9O+=pc8G5?P?V)p|$^r+VZ2e-oXdzNH(r0qhkRMGPPHs-xuS0 z2cp81i@~+&ibQP4FoNfbsImkP=jh{a$7_Lco$hmuou|fr-%vCQjKC~ z5X{Zm$v`{m<`kPGpIewFu1O7YWf(~-j(q5)+KRcBxR?pLWQdXUFm%H+F}(-{zt;W8 zlV0!`g$ix<1IbrHE6C#6q1sY0?ZRbFVR)u;(|Tc~{pN3aPwSoZ&m-oAFt1p9(qVVR zo-(U=L1%S%k#_%_Hx01;x5l(XeUPA#Q`e_v%QvN-xv_om&`6h5>7rdo`i22K*CKQ9 z_0w3=>0oN(W>D4nx9_Io|C$*#QAoTuDY^OM9g~w*C%14 z8~Fy17E?t<41PX7xs2(GXBSg+yxmwrl(pM?dqqg3`@f^v2(dPM0fp>;W>KVv({R(n z&m!PWo?EF+%y!dKzQQDABhD}{e2$_<>#Sx$btd?C;s+3P7_+lwUS(n7CnIB0+p^Br zzCBks9o7B!cB#;?d5zJI6s|m0Qa8-J&wV^n4nJUgPfpKNzIIlS?;%X}F-aIyCiWs!V!ksPRP zHU8hTS3kTFOau;`reoM#+TAgehB9%%VWVSHQ}S+ZZd)QgLq~Z_LsE{48D3sq*b#tW zT0m79P-3ts%K#OskD8Eqak$RbCa5n3!06OgA5O2oBUIyZ)iP~JKw*6aj;DOd{V6R+ z_2tuPjbUyFBZA&kJ4;JH;Mu^|^-6SvlC4W=;o-ZEEjfKrL1*-lEh)MQmxh}^ORx|7 zE!oHu+=3OCI?s`p?}XK!nko{9R*q~7jR_OHeqfVC0`poQ&awXqx6mSh#NqPZ)kYJX zvds1P*Lry?V<)kty4bpsH8n6Zu*o-ohcp=p4E;8ldFQWL;d%>r>Z$UHqnLnmVgA$p z|BtY*j*D{pzLt`15$O_;mIgsW2_;k-N$DYm2I&-}Q;|l85)hDf38;@<~ip%`>egz+Iw$sp1j#pmq{6rz&Ah5Tz}(-PzDOdV?Ya=?f2KuT zo!}jFlWOEe2aV^}kXNOsJ@oL=^|g|ytDJ2+-vk26Va;<_>PUrh@6!Y)reMs6kT>Wa zh6Y>B>F?Uv=@#>UA_?HqoJnwKBU2<`_;oi`B>Lj3+vq_0GP!5P60>tiH#uZ zxNN{RnyE~RAl>@SiYZziB7_5fOy2vcRZ#YqfE#GHA0JwY>A@z$fac?SCcubLheZy` z(R%O0u}PtctdTL&Jf?CyH!Nms7F)ZD_Q=LX%a(gS)&9O>p4^)$&dYu6+h@5vH^6SC zR}n=y?Q&D};rspQbm=v5kp!m^f0Si%R9p_l)#K{n1y?!Sq#H1<#@{Xvif($AQ((tB zH*7T*1?qoz?y4{D&RzcS`kB&ZfIAWaEZgKRy!X$~cWbEX0OPi^fP+N5?A+W@HSGO; z1fSd5+CH27-q_#-g9b=NVO(FtomIF(ghMqSk^IoK#nW z(yT`KHPKccy5Ptwr-A)rWR$Tzb{X>>tt<_!T41vR&yYb7?T; zLK;>4q*#cxU#L6^&;3B^yWai%7`^wN%2c3KIkT_4NNtCIpoxI9{kvd-C`(^D%FM@1 z26+S%w&cnHHYRw^8-VeJXD zpoEC{0uW7k2QW(ZKldz-Gd;p_S|ytNu*us96P|F^ZznGH7OGJ-uB=p3A$h@haX{BU zC~0^eoj0ZE5|luuxSB;8l|9T#`&?d_hdg&$bS8_6PKz2G`-<0xp^YCjw0^=X1{s6D zp8XVY*;$^s6Nwp+N6Xl!^%3jcw^VhlmkKUq%mR{}0g(*u6<74oF-gv!FZB)4U|cAo z6i27%)omI2p5?7RgBBV%e36pFWyiH~`R1B2&B_ZqZgC2W0u!%82sR|2U>@QR&RiNj z`1<_B(@Q-xrXXGOnX*e61b&_*U@d2csul010T!zP^;lz}1Yojp+!0$IWCmZ*;zC&E z_y1llY#0}BtLJ%I7^xx~j@f>9bZ<5@3o-O<9mDAnH=PUNO$g(6XSLrSj6VdfzpVVNqCiHvP+1CCWT#LCH6=y1 zh2iL4PmS;Mt&T&e4GNNi|74BiNlyaTIxE4NzsiJ0=v zkunV$+?-n&Q@(9AZSrEMIyd8i=eu`?zm0{t^n{|5lh;Goy@rN{ZaFZPy{<9cEYLD= zi#&h)Y|X7O{LqDM-guzUK^lL!H%Z#bLO$+nNsFoxz*zT``(tOgwFIs-hY&^Awo(hv z>z zmF*aXuxd?CPL{v=5%Ae@cyLhdg=cxaE)f*x#}Yke&^?((J_dvw>!bZ}^0pN_F&5R# zF&o!}BObOKC$0CYFCA=3m6;KDcpm!DBi^NS%8aYX)5vmY6-BIpnF7p`hSG#xMi`#W z$DdovVqX~ouByP1tiNy8+EIjhj?}=-_b#`W&GApH&52>zKkuwMvPTVOBKC;=Lxx-8&hwzp%wg+C^`I- zz_ri*ieb&C?1O84$y*QC-{d9*=?2eSDu&gCU*8<=Pm3iH1y}m>346_DnP4jY>wsHgWttdjoY1(2+I47#LXRL8aBI5J0T2raTF zG)DsFRhB6gGH>DmDnNF$p&IIO72`>e+JjC9hZ=2}6oi(0Y+!!#9{q5lTl2_xlY@D_Duge|mHHn36aGpXI z?`fjI&1HhID}|>JkL@-#KEYLrN420+MrD?lb2?Vye5Z`Z-}kyKX~(Qfx$W-z-P1^yD(-`6*CdUHbVSaYhC!)Hy5Z@zXFQm|MzyGX&Y# zWUk59&)g_=pR3;19W{AJf$~%WrVUf{0x!=Btn49X9 z?o#u(n2Lw{W5;7GcKPTGK9uDxaFiKnD8XK%pvZm5WRU#5!S+zFMOC2G_(S~CJNFz3 zIPBL@5rLa`%h{z%bi`nTN;TvOIN~0&=(^3ZxR9}0$~@auz0&owk3C*4_OISddAO59 zy?t0|sHs26;#xu6=k>bZP^rpyt@EvTyMHNN)rxhG!eI_FsZ@<6N6;d<1K}8CUM9lm zl0__b4c&>L50c(UnH$pgrn-m&Sb^~N7>O2zDMwnUHTZf0;8v1ZP3z_pAq4HUgFz4Y z2=(2RsA14)bZ@uE(cBJMaZSKqLRxQj6{8vH(iQIzt}%H`JsmCI8( z{@%^y_R{z?M*j9_aF#8OCz^y!>2Dssymx5&CxxrBLOwns0FVN0Sfic37%+U9ltOgX zr691+pv$e+Q$U(z7Do*h8>p&^En16OXs{LP&xX3Yj~^-jd`acO77iBb~31S$fOwXj=ZxElVVn;_noKfZ+Y{w3OIe^f=0N8(?y19|VXxL#KJAoX>y%m%bNL<_=NAg+ zX!ZzSP;Fzb9{4sqwQJZW*qna&Bzz5Qd7#%D@KuPQw9%|q>LMYs?qf6H4i~JgCqi;6 zj9jFEYe;cI0v>5PGebJiwcsz{*?WYE%)$$N%6T3!UHqQkTiF&NhSFT1oc@ky5)imu zUes$d;pmYRf4RKiXqC7cCfWr(V_E4rJCvdJ-6<=BdYL6rQ6hgdJ!02_xzT6IFD?Ge zm0~QF_(^9FV9#X z)tf$wF5=v*I|g24vbH<=8XM`1!+Hcx1L~XQc3uI8)Vr$vDj8*0l6hvSB?9=9>-RMR)0J!3$KxMT%W%^%N! z@l|n)U|i0>UK1Qy^WLuk^Bls|hG0NnRgg#xl)d#MH@iZ5gUabP=Hmc+s-3e{BH!oU z@2+CQ_zvr5)T7B{x!E)B4%|}hm0h$A(vA<65{PM)A%=&fQoh?#sZn4chT3f+no_F|?U8JNullH4tjlMtRsJrgN5Y)ns1Noma`!a3IhqQe!tAW1Q} z%tneZicx6W>DA3EDYTv)UI>eK<7KGHlxNG;G4&7pZybx*+FNRP4w3oV5gl`AWzUn) zhn^~69J6f%9Z(2;fN8Dm67*eC^FiAbvCBGVbYX2d$RX9=ocK;5l8c7Yp<(>Fp_=DO zm1K4d^B5xn7MYk?AaWWxsEiZW(W|1})y`J-fEDGA$f-h%ZGac3WTE`^X=Hp9#_FQ_fYn3>tA*mfLU9^!bvZc=Q z@01P$UQI87pYXwC7t8M2S~3JmQQ?+nH&-Eui!I+MmxSJjL%Z>9=51LFBSQ1?qp)$n z={)Pw;J{dGQWCyXIk}Mfufk~>-qWk|*O&6rT@!qQ*8@z6hj}HfW9;8x?Gx{-n3$Nf zI2p50xkYVLx0cq=kM*zRi$`hWM(fO*oQ70xe-@Nz%Wxyk>qNwhVd^`porQd>c4b7& zt=6luOgguu(9f`_(d|xCj|Gv?ps?H$WKp8+uGnf? zk%X1c7Kx6-oH2VbXY-ka#cpCE5hF2&tkAfNr|Sk79$}m9U5okI%>5xvl`4GiTDI>C zni4MYH?yyVVHz1y$P$VyH#~fKEkV32W1szpE(%UfL%S&GR4d(Tgl{|r0L#;$7muuX zL=oIbYl=7-EF(@s>$%)z-Ug-a^*gk0`uh5S=P)@F(AohI{tAQ2HhP2s3Y_I@Gc7b3 zOPc47;j2%Wk%PGV4FPYHdi|E~l`La{$zS<95gIezZHXZqDR(D_?tRVM535lRKc~ty z>=|yd=o*5%6?o{Q&oWriLca6M6*DAw%&@!a!sR?D* z*LUyY*;w(}*jRn%1rplom)?0Vd3o)ka-7JNZz2YHV55gebXgj?w9W>lJ9tXX)I^UerLyQabMVxTx`SpWOUfTLh z?T!@g&yg0x-;5A~B?Fgg{H-sp`d^{#M?p)YRqiE-}J@4x!u?Edp?7dV5S&=z>T zE4bElO3m$mT(2=$e&FJ8|GvS@Oot!rTqJ`E&%quU*gBMfq_*=EWSW(Qn^?ixr?&?J zuV~A1X4NLbj;N~VS{yw_V6a;mqL-^vD`_7GeGp_SmgCDy=FZfvn|R1gMLs>O_j!<< zo7uXDborQun6chTuoO25w0LXuF;7EDcvyG1Y;s3yVfgk`LeUOs1{`JYDxk*^ zUU)`a?goztX}SNXRj}-Jd@k3Xd53-S=ER+LXvX8UCk@0(I8 zIb#2*5Apb;qFEf#)LBPpJ5`tTFEsJ% zHy`p=8!xwve_}R)K;RgliAPDlh)c^T+|>jW{%fj%YE|YmVuLXqhqOW;Vz7amaa$Wn zN*IC}|a*vn5Ak0(P@b(BYXg_~9&d!GxfI4_va2K#y(HOyB zr4P~bhHEY*k0rChi-7|9n|Og@mzo2IKBb?B5%EQo;U^B(-7qO&7UyY%Kjo=w2)9~N z&ebT0&N|JGJ!IdP*q7j$!Q%Pq^lEt&-uJ^RyH_jdHh`oWu!Jzxt4IT2ydO$yr#g&H7^Qy;3zdrT0N z$m?2r=cvhhCGvmI~V05TfVlTHyBh)RGXa!-K5&*UzDlpYcES1J(%1D!tUBIG&l+?CkMpV1^SX%W)+ice>KaV;VoVnWquqSri#7xu z;5#uZxd=8o;;$U=N|O-@L}l6Anj-?$<^lJi0atX5Uhe2>!Vmg19UUvEo+O8NH##9T znLjsb+(vY-eJ8)Zu>CPNfym1Aiq-QvYthBdiU=eo2A5drCq9it-Z*;1x6AZTHy&O^ zMZ0e74JP&{mp;!Kj^M)->~kFKIBUo3)?hU+1?ZLRwhBWtQjEg)6G6)O2;JhJXFi88j9hvVucvD~8_A z6%&CcZuAfPG$6}>L$SSnjH)Wn2mGxS<>fD|t*y}$|MwJ1_>2G@6~-h%YcQ(P-#(TT zZN8V=Wb0cnEiG(ENv3}k<&jrk*00Bqd6TGv5q0b?qOHxF@!`U+sCoebafO4o{hykn zEk6d6xnMVn<<6b7o;6f+qxJ39;CUGS(Zo*fX|0bG=l)Z-^S+`M?@GgF0?3YPzy}Cd$R?*jA=nio2Ua$LZ>`Fj0+n@YA}K!1|L>fX5shXXn(Npw*)1{f$HR}6Qr~DcIcL=LQx-; zW--NxHLyJ(P?lS^OLeG3bY;0qTwPn-L4(I@67qdwPkzNU7FH-PG^j^Veq$-z014LO zBi83(>&mo~c_Bg^)fF0=ygItHI(0+BJBZ|<2Qb6=NKBAH)WOnOgC2!J3L0I69qwD* zlTn*~9th!2qtJLP8%;G2{0{!01DkGzl?Hl3Vus)okw@sKSf`)C#Wg3&8;>t8?-nJ( zC!linGLm{Bqym{RoD|2&SIuTgy*bGfQk0oUXwLgt3P(;HlsG zt*;=HqC+jCZ>aaGcek?)`5CpJe&V)~yRJyjHxtws&ls5(%!n#%hynw!dycw;Xr(ND zn#_37!;2yKB&)={0rP;cEDZT_gFkXRmJu@#-6G1-raqk{bI7W>>JvnCCbXm z#1Gg~fM;V9NookjBjW?og^I-LGUd`dQao8Y*FIah>dL3Qz>f(bmtjC$5`Z=GFnYY$ za!*EA7|6Y#_MHe?okKojAK1*5K@B8BrC|~F8~*R;W7uJvKR5xh-has;U4#)J z&D)mq{-As%Ii zHlhjbG4ok)SQ0OGd&v320CC{GzgEL(#Wj#;2rH{j+TcB3!c`}I>Fs8&^{HA@2*FZKozu#yoOymGq2xJ`i5;Z!6G z0a#yS{__oV)d0VAh?w!Rle!=uz4uhts+j;3NW8^)S(at&mO9GJ${89@y&s=p#fs41 zZpOey-c{Q0FJpS6XmcWGEe;GMfWv;8La9bJ3l?SyIi^b! zL!wX19b~BFD}z?XIH({PhmdgV`nsACMb?Rvs3?fq_V`(LO-o_AxD5&nzeT2qnDndg zE4zh3948{E`)6&3r{Z7^T+8V5; zW+lp6LiltTPk82wa_Ww0ptZ~E*Mk8VaJBP;{rwl7o?`!rJ(nh0kOt`|i)UjTHFDZ2zBU2>-WNO0RfV%p-U}{yXS|Y@$6|^OArkL_wbfMU95Z8?1 z_&0!4$o;ppWY(K??Gs>!SDN=yZd0FJ>#QPW`~dHXP?CGkCrV)slE!wDDc+j-NJ>YbCwSwy=Tan z@z>Du9uf#LfK;WeSR7=Ax`;3kM?&DjY6mTuwT@-U@h2QhZeJ|7Q7sSFrW_s|w$m^U z=cHS%*ZLUw(-U3sNtgd1erN5062&9Zu-mxm)+2m@I)hWtZy?^fSW znLl{96-t90`zXA;>A-x+`|F=FDhjP_Lu7Wp)R`0_`yW9`Fc3^L+_fWu<{T}(ub+4B ziDo>4P#yCzf{dD?mG$LYQECir?1=Z@?H5?qIxyho`E4pFSXt=cnG-We(=v=kegFs2 zTX&}Sdve!m(cc*TH_Y6D-Ip0O3b~Fl`GCF3c#xB9uJ!GDjVrcZ`1$OfziJsK2!N0# z(!-QV@j-iy+uHurqS8%${%P@+VsDr4R*iE>oRZ)Kb!;7lXB;O6W=^;SMen@L)X0n! zC38LNLt&jfK4ySh|49UKTJpb}EwLjf+}?kl-Aqj^^)(}w7?pwnw%Y8rh5I+xHU1~p zWkQycF&cE7u&f!5Hn%1luKW+e{{L4-HfZZ+VO74NI?vTU6mUh_KL7oSyX#YJM#CpQ zI5>ol3JVK~)BbPE;o1^@+rXluEOR%izu!to^jmV4t`j!_l4pe}U&I@Sw?3u_M}`gh zLliTj+LF}XA_I-8E(KSi%j|^~X7SiW)X|HRY8sChf50R1L~gME7l72Tx^USx1h)M0 zr+ziAn>yQ+GY)uzkjf41*av+2q#l3F64~qfy#3)m{AkrQ4!<`yx$eQBeO$GWo)4As zBK!fS@djOCsY6a&hmiU4A2L)_XTbfSbTU~oUl+R@K9oi@lJd;C!U@e{CY1o4UMuv| z=~4szYOnJlrgpWR5!ex*=DV*iZtQ6A|H z3%10#B2)QPVNlfd0$J4cG<;_Wd!|wKFlC)jZYS^Qhel=zOI!=^;af!R! zrJH|V7cykJ*_jsjtR|0!80v0Dv~be85?Z;g=_Heqa$nNKr;-oU3sSM-BC+8%wIv@> zf5RVqsJdJQY*kN?H?AB0-n$tfAx---hX_TpzIN0%j!x_lo_aLS1U!0{d|xlK1Dy{t zPIG-;3|F3_U23h!Q;7f8(|Sy&|1x%&o4L9hFu;`0%%cL_&K$O1;y``c4%kag%nPK7 zA_(q@%kSQlJcPs#ntaAUHzoQGdOs0R^z_R;4M;;1YY$^0?r%*n~Ys%Qacqf#EM z|L!H*?L@ar@#EqMnQ>5R#YqefIznzyJs#Sno%+6xNeW5r4mKF->&L*~=di4_E&T?91{u zKyJ+kg5@oaS{0!KdgOf_L?WskBBQ&Dpt87uN(o{|#DL$?#YW>+Ac&YClIh@pQR8Uf z|06$~pS2KhvBJhi+uh(Xq|2q*(ENMoL3zp_GR}kI#t+N@o9CGlBsScHL}33^nll9=2;QWL6- zE+rZDGkkRC>kmT)SHRS*c)raZ?DL;28ruZrWC=I?7l@F58~mOsm23~A_G+Ot(y<$R0X1Qxb!Kba|2`sN6-(lLo8u=MuSo#69WkK|@R!m*6S2 z1)JXW-z%emSAwBIM8&ACBGkms&F|eJX#`a@IBc4_w!)w$GCMn4rJt%8>DxBpM7E5W z>m2_6{RVWb6oVKVRAAw-$R_0%S{WRC)5^x?je#F+Y8=W+X2)Ax*QkKdB%AL=ijDg1 zch(&UswR7XtFUhz>NmHR&knOYlmJtt)z*fhzg!cWpVTSx+9#(IRSM5J!RuFX>rVn_ zYYJMVrpjxGVlhJvHTT!YtmPi`f%m2et2sH99e=!mLLVc7s#NZPZfkAL;TG9>&h1cz7(Ct*yF4d(*ay{`gG zS*DyBR`P-zOI!X1F%&pL6{C|1n_Q4rV0W(iaLn>XH$PzR*6qvDQ6p|JA|f1PzBJN! zFu2!Wza58=Kp#}pKSka|q}6gt-|3a6=-&kLsuG(j7D@g0iv;NFZmG(BiBm2;vD-4b z=KBvlIt{Nk!UTO|;Tp&HYNE2uuRNB~y<~r?m-O&@@Bh9zfiQcTTPJq_(&(kFAPuhl0E7%;B>_nh4QLjUnjUgHp(%miK{`k4EF4-E1ML5&~1dNmvy9#Z+n zg^==w|C>MGcI_N*4!cF|K}hbSctGQ0=W(jvL`}Fp1AmXxb$yy#mdUcF4&7O(h@aJ^Y}Q`P7=32`d@jWsz1CCBcilu?Y^I$Ja`fR=;lHHyofFP zD&kbwt^^y@1&93IQQeC$$QyHdP>;U5v)%OUu0)@Zw?K*{z#F<31U2r1pI2)BWCGPi z1iY8x@*w%~&MS;a_*H|o$G>Dzu*bjOz#@hW`?I10ru6AoRu`uSLlYC668EHTVBL-K z1H^}Z?d`go#2eaaSZ3WI`d7BdzATdcb1!#lJTv0jPkD5IKDFz*KpW@~J)818?h!Xg zp*9=EdewZ3T9%*~dyza(jG;(4ZN+N&X5V*F8Z4gnTqE~qn{7-|FW{hS7f6w+>pDE@fo%q%un=P)lv1bsUFGWBB& z@!$Iw<0dE_u&n;s89(O{FaMey)~k?D=Q6BWUMXJwN824Q!voi^_@C>S6$4CVKX38l zza@lfB{QC{QNZZ;{rrn`6EWjY`JeKUk&(px;JD9-HaWF$)RR_Z3~RVkm)xeUXlvgm zhR&*3dqqg@XeP2+KmSebJfOT80^zX1WvnVPcwVkwRih_Uew{Lz`24I3#GPYie*LA!O82acY}i{VR`xP`#j zW-hrHOl*l|pMNV|40NY4$yqKHGeB}IkAe0ekFwvev&toK5x%bRyDw^o(k`ww&ZjUa&DDc3VG(IMRSRL{gM{K+ymm zRMe6R)$+om-8%v0hLphEYV!$qqh^2H1(?k5u&&=J$()NiB3fKKK%_xDS3bR6iO)DU zee)1ytvyyPjoJoY}_*=YNUaN`MnJ(x-^07gKuwVG!~4u#IEpSDY0 zN|!X%aGS){;-xAC>qLUy%sfCi9MX<_tQbD)UhWIMO<=0E+5&hRH?(WqZ-Xvv{!&-*QU=qUC zYV~qDsOQwl+tamVa+wo(pYFayp;Km#UsB?*mY4f%cwt|w&S-o3>hkr@IC;Z1#_8!u zW4g_23Txmf0TX#pxpXTzO)hdunLu8WTwOztf>b_mTBT#7k=MJrl|U*kR*T$q_^fyC zsC(Pg5CD=toIN@AWqdJW==9}b)vE6F>FxS0@2yNQkt@8LnvO14zt$DL)SJ?JRWD2PBHM2X4U?K9qVaXXvo z27NuM597AAk=%{vyXgJYFDJpu*(Nfhp@T9&k8MLsH!yh`4Ri^4itG}ix+L8}2HQ-w zE(+BqZb2t0HkgIv7JDsnIA0u$ux6?`))Xp~I}9Pbk0!|-xUNq6eOJIx7*+%6R*nEi z<`!B2Cvet-D3F#tz~VnRmi*-iwuuTie zGYT++&iy8|$ed}ebz!4hLB2%cQXBdq%6i7>60GuViAF-7?Z6h3L2`qL-WDp0T94(l z*8_s+gL?>k{y~)Xyz4uY$uFexRm`pf1|Qy5&z-4iz->ITYdB#6ls(qhM5$y6@0#P3 z=BmcC$*lpyt5YpR?Q5R;b^R?E7?&x@SkG8|@3isiOwt4FwoH))!Tj=P9zpzh@YSC7 zOJ3E9kY|VyVg0N>n&Oa1edY+Jg&7C+jx-z!CJRB6SH$Y@uPQD2X-|ExwyxmdBq^R9 zZIPQSX$aGu{(PHb?)ZBi{Kya5NzJPy89t|$4jV0`&$H}&_EG}whHLbM2-#Mdc9QrL z7vD@4wlh$0h^v=t3)ZsVS>u}elE`$M!jqP8{-l}i^2Mv~R~di~8X6y0Om&rxgv9@l zq-bWOfdYZ?Qy9h_%G-Rn3?DK1Gco<0eCF|BTr|n}%jl@F;Mxsr*5e`j>cp5qJW6!} zwVSy#zq(w)fw%eOCMQ$IMuuFxw2IxK=seaRU2Y05HUzUoV=2}?XGSryocDOKl^|O8 zX6@;ai}$&{UOy|}befE3+uTt_f1;O7;Oy*7HYeZnclF!L^JU4wR8glDCb|PwGOU9XabMegYD?9x)zRQa}c@?O@~q%Zpol1UD_t%xGPX$Z}y0kh!Q zB?mG5HdKRvFfvk^dnc;>LEC0cP0i<`BJQ=lj%B&VWMj;}wzmxFdVtppkCe%LpPo+p z>HatZku}JYqhs_rk0}!NavDa)fg}y4zlmQS&j(1U?FketysOa(iiClZG3733)4LpGQ;tV*O}-f-*Lk2{6>oOA@^9e}=2lSs|U zVKHvJb>@6|)_9e22aS6JZ60bk6f|GAqBn_H$fUctHwl6VuO0bTw<}zhJanFVvP~j0 zE-o(dz|705r0DI1V?_MgSv*CR#+S@`LsMPzYTx&edD$(vLQw-@(^QAP=VK!1`F9z9 zoH=ZeT4M`q>IT1gc?$l)dMOMXlaZ(xsf&1IZERX0mHj@4WsFTqg2p0_5oEN*wzC@d zs4d(235$znA$$ZJ7EPgpoR_Q5eMyMbya>1(k6U?G1{8U+34M>71Bh@~5s5J-fk8}# zqc3L22r{nDmu0W03)@T;+)}_4>kpvrPK9{2t^M2A`RGnzTEcisYG_X7yoB}-e%`kB z6JH_C#E7s81lZ5fJI8BUjSpPnMF~aX)otE=h5vAGl02&J51r3zd3s2xkr`ZK(!8GP z)JH6mfAr}2oBUwJ zp;@NOou_iFbEuR&|_pCgTzE+qjWPU2-hn%_{7TI4$}*?UB}aq#evo9cfn1#c`_ zF!7Pg4-E1U`(rS^Jj6*rKp-WK3jQp0@W723 zzt~kZREXky)BG#FOO~trbxFCYBHbs$UX-ABGkGb(F%Jf8b%^IXwa{Z8kmNBPltvE4 z#y)?rK|Lxu3OYgUWznd~m-c6umpfZMdS(2SOG({9ohn!3-3~>X`x0n+Fj{ph@;r7Y zy9LyLNl-W3WN94jTiSdvWNkW4V6ivb6h2t}`3;$c%N&>fP}9*m7y>TDc{AFaspM*N zS@KHs;;^bQE$ofjx`WW&DW5lG(s?4uC&#dptYfc|5TP<;kd8W}SCyyS0)E=DBR~@W z%j+Hx4}4Lem#r!3vWNLVFmAl%X;T4~Xxd$Q$27+-wnr3Bh^LyPB?{k4&2}Tlos2R= zwLG?Qs4g{+-VRn7Jq~1Ag+Zsf;Lde(!J!XXCWle0JkAumV6h7S+#Iu+2tgo%*hYJVr|Zo(Xe-c|>^eOemtm%efKUY~>qvfr@8w=b3*1r(Z+FfqsfpM&l{m~nx6!A5 z+rh!`e0-|jGuz7x?xi~MniEtqPiU4TR8J|5Ad7yex6a0Vr$L*&zi6#(yUzs{d8A=t z92t4b;78L)W>K8z$wGYQ8ne)g#F%+9X>voa5-gW!ji&cpBlAC9pYe9eB-Jp6z88zv zuY<`=2WS2SBMtFlljEA#4uXVr7e9*#`c@#KgzXl49fn~fP$h`Nnm?q~CR!*8XMW{A z%bZ(djqsEklbJ{fUqZdy@aNe}a&EnQ+>0gcw4`izGbyx@zdLE)jDIr@j(4R*#bkZ~ z1~UM9ir8rYCyL%Z1?3Qw_3Dwzq$DLYInc*YUegVOig7)j_psU0)^V&h+Q_UHU9}P-ciC}VI!6rkpd-jooOBJkGMBt# z_x=an;j}$AD<~7lX{bA0D{!80XjiH8MtmdelW2XJ-h|s9Stn0z@c~p6*3{^9U1N~t zDB1F)$Z_^xc_j_1p0|mha^j!W8wEA^4DBQ;d9^9 zK{fAI&?k%$ktkEQ)o{jWOIDmZ$6LS=t{O@zzuswJB9Ixp_s+?7bKCO=`HzM1$Ak|- z{C}3h7U(OqAYhOI1T5!2y^*9pO|bIQ;JEkUyWfPH3m1m$EO1;?Fso+cN^c$Yk>VH* z^8gNUUXnXq4>K&1{{$ofhQxF%{if$^)V(Zf(cX%)3;m;`iSKx16ToG$RTq--l-oe$ z;_|4`aKdy7_U6JtuPIchvh%>FRq}Et+Ih--nfR>LO)L%)boQzd0S2jCf_a<78l&Xx z;bmiQ+u;s;5)Cq-Q|8||1HhpEk29ac>7#$OXng1XqjNDtNRTli_OjQ`hl#QB+vl$1 zP}X$%sSiqA)am^SF~YAFBeg_fVUK$Owvz+S7g(~w1h0F0%IaFEP*FFBv&iY%l;>93 z1D<7@rTy47g;aaTC~QXC?wd_@?t3y~LP{c9f}}2~4BSlhiA*K{3SDtqd*XEAPzFggBAr8Z?_ z6KH1vx3Hyb1gqgSU8T%3&bRd`C@0#!KI~0m=gspc)wA-Ync~X;jpHKROZei|Q=>{g zeUk3VXlfvS*%+>HX}>U${lS1;Rjli{v}wFVKn{TMdL1E#9jC+9d;fclK`!@4N7J$ zh6n^S_G^sOduOMh91f6WjOBuLUro}&$2X%y+T!uHvTqe|3C}!DWS!YI{&oApDkRAW zBQ;VRpzm=OSftri2UGMdw1v(nrj$hb`KC`hU)+Xaab{ok8&7)e!k!e#)4I#Z$nov~ zR3uslX4c6JQOc`&gCI!0n*AFLG?zZM*XcL{iSJEVq}H_k0yU|5-EK%UzZ^(4X3S6rjUZUeOHpdM zU0i8QI>SYPos94w8`sm0_OXNzq>U@x>wnm|Y}fGTQBZFp#j6j9E{J8JA}8m3z>(oz z^+U3~o1k?DJcoHy>uWJit7PXYS_&veVI2?hR-ZooRV8E2-Ch8#tBYt`LL!_Do}tM{k~Nt~Z{w-Y%e z-?3A2?L0;9|FXaew-at+$xSVgMt`AGMD%w z30NBWh51dW*jx{>?ASA!&V@V0#@IYxhDN@;e9W5W9C!ak6K*^ZOp1BF__<38fj#*av6<962AbAr76l#5zX(LE-F8sTYl)y>)brju-zUEE zW793+RY@JMn&kC2nAe}j7PjlYO$7icU`92w+w>nyO}K`zE*7+DZ9-={t14@-(BW3*dXjcgW(dE>BkVG9QC@3h^PS&^-Xg}mP zX~QEXW-WU=>5qol;`WUbATXO>R&V1JQUQ^{@>tpAUCWbr$nq%%%&HnrN#bGFtkoWANy>2}0CeG)I=a}I zi<>p(;W~iL@wUy)&Bi+qEVSoj7fQ|_&U)`8x^5zvC4j5cm{{CG956vTLq;!mc7ihQ z#Ud}U{M4+1G-St@V0Q)k(UR3FlM?w90uz2Twke+nUX)@>UVZHk{Wcopb!%>6_2HuP z1>FDwtgl0`!F>hh{f_~dhr9Q?Fg7?c(YkD=I))!2SRTnbxAFw%a33y@zgD{sb?4{H zCWb$6V4QI#(nog4>aLxyvjk1(k!fB(4=6PFNG4CWfOB|vi-yeL)$^sshnBey5xW}G zy4Bndjm)yWD-jE8-{ODZdX_IdtfvyTfP+lz?#PAI0!4X0ENSFTAA2Fpwb9Y>W z=X(iuySap@kQ2zs-RDoI>9Qs<-__4m?&A*@cw_dyC$PHV&q;4@s?1EIk(mVro@LqT z%NNR?E`7-p!EGu;b_L%d|4HEq&cBA(N^9kRWc?dE+eGpFGg|wa5oQ%pIu%y&2kbSm3NRr=Klatc%=U zpkbL3`Gd}}4=Rex^V|0{-w$AFxk;4=O`@$#Kl${g9>tR>V*|g#>2Q%kM)&4>UsQd4 zr(VG!;H7Fj9WEw;yuZk=e(>8g=33YV)F!)Z4}-R7o-`w}w3mxQ@J*%Ecj`(TN27nd z0Kn;jB+8R=eNEZ?0~yZi8 zOF;cSXqsf{Nx+k_p0lp0rF0N+RN6AtT`Kq-X1HQVWDxRwxB!nrG7bbOA}Ga+^A*P8 z|J1!$QX*2aSwLUY5f2h_3$%afcU%Z{Q+Z4bP@VW}CwR%H@sVxypYT$n+&CwWF|NB@mDRhXFmi=$Sqi#cT6#EjG1=Q0AnC=(HwmBn@3pU2v&0JfR zxwdKE_XX&_>;k@xsdsT!2n)*CneI;(g-)wAb0%%&_BS=BE-4MmLPUduA-4e2DJF^t zhl|jVwt-uD&Ek#evK%3tTgzA6;rGj#3uVJm#*PqDN_?5uPJ3(GoE4E3sv)BZQ=qT( z%+k_wWUu|VzVke8{8Cy?C$tqYuY`XMDrnGl8y_X>)mqIcQ*UgU{l%NKKH${b z&-01mqFW3v3COAa^~o!c4Q{-T`S`*Ja0$`SLl`~-_GM))0^vWN?LVojS?2&M)x+n7rhA!B3>gXs`9vjb@gr3_e%-}lCVR}7T@2dU&?lc) z?Npv-=6F3D9?4K{NRCmI7xKBaeP&ocX0uB;$0{o!G#K*D#yDDGXW7| zr!PR{+W)D#DM&*yY^BacO@GQfgh-zX>y$e z#C!@rvY!(Ak(d6A>mWQlj_YnRlB@9^p+!FlW@sw@J3T{5#~$HF`QJ?@e3Tlm*T%ts z=|c_2-axMd^O9V?zu!MbIh2K}8s9G%>9-qeE72FnbuXXG2sNY&pr9~N_YIdBGBAlG;M$C_4feHk~I?(4@^;A$j?+Lb# zp&P%qQwm22B0HPjfuG)S^6bLfzN7WXZ*JC=3n!yr258jMA|vr%!eGI!KYIV6P}|zF zc?o8${0Rl$W~`&q{lxLXu>(^{@M;hUX??7JBC*_68r-(IHZ#WT2ApJ4j@;MLad*CS zwBd1O{`hG1#T8v`|EzPbD3=v|Id?A3=4R^S0^r^b6dJk? zDnvNY-|n?qWl!;hlgftBt-i?Z-LR0T-dV$A%Q{*sO8>WfTwy-gJA&s%Dv5AX$x_g5 zB6xB#&Y;32edb?GKKlO$fw(L_N+8Zwx@n`_G)$8@essDTk&XsmKTxA($qx$1iVk-E zS-=JW3JD24-Yda1UI^f#Iy6yxWuV?*RLPi%T{X zH+n+R-lNfQ*H!qLoSf(_hp%kL?>4s+*!w1OZoMSI$tAl6erP^r!xO79n!FJ$)vqd^ zjIAE|3Xt|vMwgE^XYAJm33El-@Yg7DRF;i>@!h`V%>j7}oGQX;2G4zR?Z>~{UQI%y;zbSWhWZH!AlQMSuz)4g<3x@DR<|o1- zcsfi_<6q3?zXD)YPbs&>?%c_pD)km?97c^t$!>ZQn`Qg#wdfss!G)vYBr)041P6NK z^TX>5K6_ZV8O|z;cj9NlQt^L`M11AUKinL-C=t?Jb5;$USnogWw9w$k3W1cdLT^2$ z)_pXrRK*%m$nemX5n^lXjS#ghkWJwr#gd@qigWe;7oiX<``afDzXWmL-^o@4QF+{N z)hqBW$?e6%4~DR)(?%QqiMnxF^f_d6#;;L=KDynr3rWK7{+JIdX#qp!+`2>lB)zPE zus}J)b&B^+W>ZWi?acA8(3e8SZ%0@P>OURceuvUR6R8V*Wv%rre^i~n@NGM6K2^Tx zfy>Z$OZjTuypEW|n|DuG`vVWpf4Ijp-`>3`#GJ7~*;#eJAB1PP*PLhIo4?55Jkh#@ zp+e2Ko`IyQXn39ZUYZIeZ=JfZ4Yr1>gXNdNhnj!#S~_5CWsQBt%6mvckK_s9?b-7W zjKJM_&oFm{cR1`)Gueb@g9`w z&xB7l?NvkAXuVT3H5ntdo=O+lGp3Te0rlf0754T&W>NiZ0v4aF4{&b0>o|--zwau7 z5&0s|bS{zkKl;~dZK(b=!!>@2hxRxJ?`k&&61r*Jr2T~9CNdw3c~ z35{!u^3_VGL99~XambeFr?V%#D+}$hl;R>+LBKxiUlwz|U;a0XxgXWh^M!Qe@r1T4 z(s%am(gaPHb}4^aTE5|97yFvw#g7QFRJYGGjJw#9BYbwgti|uue6I+IvHa;4Cl>6V z(iKvroO@N`V~5lk;5!I}e2=49w0(MYH#@t~1m9l2WZ8k}7R}w<$;Z6GU{3D+p-?$O z*m-T-FT?lp(m>v~8f&q_kkfaquY5hb@y3gp=-O|_9rr4b<KrC+s54p{BW@?Vf3JTg{pF$n?Gtg8g)AKTyYz85JlCzSU7Ht4W~4{I=H-`5 z_vi`QjpR=$mu1`E)wQN8)@GWXOn++DE!G+`c(tbPWs%W%G-76#v*K*$a02BFysyyeD}BE)~Jbu^58WG8ar1s$^0Bi5%nd z>ni)#-7&xgv*geC!iv2%0+&s$k*bjKePzpgzyUDP8K{$ka0q%bUaFIN`A_G zMe3$I_S2^f^KqYt8%n1fVRs^s_%u)os9q{%Jd3m6XEMJsMyw`UWb`s)7w;*#n{+ze z{cbr$^-2f)Q(P|%xEI!-=F~^*#&I!p)JqV;*&b0T^XNI~#RQR{7FZ(bnIz6SFE_Fwnr zzFk`H=f_YAZ+5V(8;>i%M<3xa;BmnK_}YV{3fb`9q=#c8BX1wKUB9lHH!U4So%YHG z2J1XMJL53Ydz>WXQVP^^mfQ%i)UsG*H>37KvrvIX<6t~OtgEwW4c;+ zJ=C3r%I$DEY$I@dFER3F)174aD47Wn9PD2N;M#1UJKJerFP8x}@RFj$-uT{63oolo zEk+8SC4|x5rKEKFyym%-MUd=dDC)(TLDMYqNs-4V$0Sf+sspz!G?K)Dgo#$aTLJFKT13`tlvBr>UIr>C??;&K_i_Y)Eb4U4B9jlrpY<_4C8aLFFn>$IsSIp>Q`Al7!)0a!V$%ODx za&LDz7If-C$g8!HP~fjxM_+C}{YZ{qC|k*BG(lCc&E&|ThU8_S{Op~V6q@oe-os|Z zscNn)Q<8CU;fT?aSDuIC8>7#n2His{W%QQPXs5ED>qQnfgd-lPy*Hi4zu0(^eUoT| z=nxR6M6A+ZcU=c3>TUlK=Yp7rPF}ZmPp|H9ow2l@`PjR@)qIuvRF|gmoXO3rthc-Z zn^>ic9!4d}NYWbJkU6&iYx!-ngtVSOHre-_7$O|=>K3cliI^RinlqPz*&MUdZO`$F zB@g-!RyMrmxF!low(<647ehsmp6u&2PNpLwNZP5FKY0LG`(&TQnNUbOv@OafzVz%K zoVr4W0-Qx6Y8G*22qNA3QT^w$7i8slUDbFSgPJL>*p2tGuN}hJw%VxAm%GpU3E|hm zW#rN3(X=|Qy+Q5lk|fkGFWSaL?fZ%l;grthA>m_znj^=B;+GjUy%%xugQOq2GLi@1 zJDv`H@6!tL-zn)k_UGll&8=+yIhDX_Cj+&@4l?MFMKtS~9j0`sEq@>Lhp7)8hzT#4 zqUAFPOeW}%YZ)-M$2s3T9J^&T#{~Rg3@U`oGEAWcw025!f^vRVJpVlUqycPX=btuS zQMy;!A234o%zobcE^_kM`7D_@^W|#7SxC6o8Tk7m-ija{%n;uMoiNTirN4C@Q5T)R z`Rn}q`M2M?GdCWuYztt5-=`mS{+l*AUf;UB?oKQclCJ2V{u);7kQuN=90c;(-%Bsy zMUH76f!tfJ@3g2lPGKpX67=~cTbZc~b)~4OUh*_kFk%<0_XZ{r4m}~1wqQbBg*XK9 zEJwO7)2-$|G8e?{_54?e3@NbL$^heDbSF&irfR8QW&p!Z+W7T_vHPjsr=^~&wrjB zPT5XnONCjtzP$9iG zET;`fuN|b63`U$XBc;LKe;*iV&DK1Q1wJ)tX+78IW};2ooD+%~_u1UraL@!aeK-FO zgeMU|u{#7k*vUwtEf|65ab`#o-kx7ua8kMI0t5Lh=ymDEn<*%OOUO zpAmc?%F4=sd1OiL%u7HQUFL4GZ9GW0*opF~1{~gL(Y@sUiI>GC5YH{ZEw0%4*)dMJ zeETVXOKHQdd>p0qr`7i{A&?W+AR6zF2Hq!&hc#thx3V{9ubg?3+`hO`S8PQ}znrr@ zR*ew8t)lb}JdfCX*aL(hq~IAb5%_U3@V$WJ(#_T4h+d`PgG{8hflQO5gVSz}Mm>{4 z!o);{NtJosmRTuQ{TbQYDcDhwF zrnPqUgyuB51T+8-kD9MUl-y)(gYTTRk~JBlLgtih^R(#sJVDUf#K&(8L^``qt^lRy ztGQQhZ++t-vPbl=A}ZP6&0asz3lJ5n09)qh@G}O%L_3A8FgwNbpB^1lE)#|M=`SrZ zybx4&pReg$zv1y(guY2an7QEYOE`89{3v8RulT~9YW8fqc@_-N`%Zw3<14;{127=L z?BZfPLkwzWCEu53Wba71429p8UAl2J-ysq7eAZ8PP&dL(4i{xTkgtw6i9#q&`dYKi zJm?zt4~Ni@Z)8SEO=x}jubGy< zeISZp63M@_)C!nb+rddb=Rax2CMQ?r6{#J2A42%~SGF7h|0_v0aoclQsC3i7W!g+3 zk+a6YdGc!vw^doAv#w8f`cM>3MFa%dX^W@Xv5weNEu^GpsKipDq!UuDnR-GVA4XR6m{}iaBK*aLf8^v$i&j^Aqf& znAzvTi^QgVrbM?xKn)v;iDk_zm^F)&y6bwl(sZ^}rNGrVayac`bk?oaq^e>o3|MfS zzkUHCB9aK+5}yAxjBM&;Im7m7#-pqea99q(CjX8vvOh4tJQnflGAoGMLAy6qVA!U9 z6XHT(0J`L70-o_w`4343kAV{4i&@v|aoN==m&e{WK6sSKp`DKN>EM}_b@NVy?MD|? zV@56MDG*QKC^oM?B)wB%`V9QDTq=i7I*9u|tp4~%*e2+j)`;x&@q`P2 zTTStT@GeL-WvU;9>6$Tso_I4djH?Nj0!Jh>Ae%rx2MNN&=8VGft1Yl;To|KpK0GvO zp8%)GOK7`c@69}6;r>FL@+Z}|de#+z#ZGf(4r!jdU6HvuAkJ8KzkLwNeY-Gc`5muC zB!hqT_`4={EppiyJ9?XaeL?72i1uwFW`|{E|)DpfJ_f|b(9fCglY z-No>Dt)cQRljEs@j+G#kFjW1URQ2j5eZN!lH@?~L5m}w07bpVFFz3fPbeUg;jonIX z$O9h_+LPqkIoY!KGx9+gz7Z;IX<<$@6dVJf2@6P91r$d?X24J?qAx! zm6Wd4?{m~+i_|ltMPg!^>e)xil@^1SQ7^|kcuvMTPaBA35_t3C{Q|>HwxwtGdn{e# za7jtb7#H9V$UJp*xqbDHv>Q}G#V9JkR&`~v^AwyfF~(`LW?Yb7{&k<|*~ZU4x7X4hNg-{}{SOKCJ-DA5rq%orO9?&1cfS1jwCXbm|ISFJ1G#}YZtV-+Ji9G22y^q^y zJ~gkqf*7DLG_7`VJp^Kwx!UT zZcah89FXQ}rT}Sz$9<~qM0;)|Z!*Rh% z?7P5~UbxS7QzeErd+%rNfA zF&=|^U$|iMOJyms^1FJw$|7An{JjZy3|9Znr~uvkR-*UFZ2ahZshaNltX1E7U}{~h zbE5iTq#Tux$MqeP3Wf}y(}%0aK4Vl-5i8!$Jk_d`oi<7~pwDtDfM(0S2PuTr$JeO) zK8}61H=}bA>biS++n!NU)-=0v)jwHt?P#lh8-bEjMZyGEG6N`2@;8Ldtl}lBL#kB| zlksD8S|VDPzojgvD|~rdIR;83K=PT12*QtV9;w3Y5nD@^GVbzGIn3zufTrN|Zz85_ zj&(G$RnJN+Gen4DP5?V1wSa4$Nnl_;CaVsJrjOjOE{+T)<*B+~?#-<44=V@3OfK|X z){V~P!0IwRjU$BTb+E&3pi6>rHU{{#NKfHx#$EN+W(R1ByqoFPVx|n<)3g*#Y~L!| z;wZ%9^^(|8fMS};Z4oozR1fb~T7QjCii-i$qK*}o8FL7W8^|k$6~j&q0O8FV#5iXk zvdO#;oEHUm<}EXU`8T%OSeo-q1;Xk|$B;H>|4ab+~U zqxz7_#Tt1v!8>_P_b(agO1T4pWQHp|NGN0B{tu=^{U7Oi9wCKk-3;=|FUt_dJ`$-K z{zL2AKmcVAkC%Aw5F7&RV;Qu>4SRy#N}v z@)88HJ0_NX^6fmSK0)ZOSf8vTRp*pS?6Oa5tchO{;1qxI2(BK^dN{VX?jC}`J;)Ye9O_SI*=mVPq})ogXLslBIw$h~_%J8UKm<2x zd~P|$omLi(s8RE9{&H|UZ*V0C47eX%Dd}l1g+sQd>83&x(TU&=hmGR;J1(8G^pWm4 zsoRNeTr;(?E2l@-E$m7$(K|IxR5YU9A|8*~K~p?y=H}HI}nsV%Q^dl?iVNiw|*UXz9& zt~Sg#9++_OS}862lf#pZoYqpkalM`y$@%ak4ZgowIyZk%53=|vaEMleAIE5S&k^r9 zjp?>>lAghq5zuudtE!;Mad5;s5{=9FlOUj#}xpW`Poil{2h(e%4ze%ewn zm06bC#U=QL9bDtn4%ifS9+@HBL+RGklkYu3KM-4jFl=_?Alx0FNJJ3&28$Q@7EXqG zI+__j;O$#i?$1KBgd;MoUHfyapxmr`Y*jC0Mbmz6sx6yUyPe8!GqrA@3JYkeMbAhg zH;P}bZ~4@A_VLL${o_|GIZEWdCm><}4!s}hG5Gv9|I2{8>!hn#xbQQ?1cr4<8W0doEPoxupPqij479B zNs!pk+CnJ2Uw8CQgk$pt>glOfY7}c`>9ZSHV;z@dQGGF2dNtu#cH&VvJ$|P76}*36 zfX)e-Z48o%pamMpCbDf9<3@2)gf_=eM?a^Qaye!a>K4Z}r*p%UE`OwR9|ctrS;j=o z6)&8VJY*sMI%UFk+-}&+%2dErZ(FxWimJTlx=Gy0<(5+&BYU#lH!3uzfNtuyLHb5FZ4U)~qrt#$N$y^>5phxbf(tlGIRK395ejvI2-Le1Gq+jifd-0Ts z(%HhQ2&2gi@Pxs$HR1#B)~p1)X)X7h5j(U#NKn3*SDW z_?`ogQ-athTXo+RUd@erQ*|#NkSEXkx`WlEv)iFYTx=LuppbGtcGF&Md@6FFKAz7r z%cwQuA$J+~vDSoX+4jBS(!1tl$q*_<8O-{qX$$HT9^a3Z1Osr&@!F?^PtLmLmmxH-5KH9Q{)Q&_BgtP^)@GTJ}|8#;BQA-G#}?Wn>1 zQihbh8f)8Pn@`I|3%!!#UN)#CpZ=~Sv5@nVcD|;E4M*=>(qthq5Y{jj9=S!r_=rWb>ebXv<{0O0U7@8U6H4-= z$=Raf(wC@$-Oh(Ku0WBu?53GHx28#HWyGg490s#ADFfLer(7KQ#uV9yQ7|=+&9M8{ z0UaQ#+QJdw^7zJpRDTL0%l(`C4erWO)v6EVL}r0}*;db{ZjpP?`Bw{ez1Mid6CG>T z*$1)eaAn~g=rGv@N|4HSaFW=3{&l|0nt%J_oIjr8$B+pSTbaaaI#NsVh(A8xCV6jC zaW>(FLu7RQ-nYx$rosvt<@b7%@~EbUb#q3uulPfNnrbK;?PR@+dPP@{Hb@%XC4Wx^ zljoiI8-Z7!fXz?T;`4D1{5uhfL^fj6E}k1lu(K9}ZKN34&6{M6=gX}}8z;51T7qrYX>(ENAJ$<>>13GnE zS$O`?;r3281Xa@ajC7|4bZ^8d7T(M~BpQCza#Nz8Y}DK89v+cCy)X3F>L9+iqMlu8EEp2T=5$@>zx*qk0N|lJB@^^JGXpV`i(uBeFnBRy@s!gsl3r! zB(J*iD zw{EBbKngXK=wBr;Hf)PK0Z?y9@u&Z)lND#umb~yr3I zd-h%*(5#?(uWL*>mbnfKKAwb$gw~2krpGKZdUf8BaeD&`vlM^bQAF|keZG*ZUYxpP zVAQ|L;v_mNP^0E{+xGTeuTGK2aM|`pKS#kyP1#a)dg&D8vLGqDw(;q1ZGHU|7DKFe zFsw(|`|xXx^>ET{cz@%V?bUXq%P_T<9jtTaV$REBWpV9owED8uqu*G4lhS0lz-qSY z$XN*381KQ9g%8dXfljixlRO*7e;QnLT7wluT6L@o%PVQ>&dOrRLGm}(I$fSF$F0;_ z8F6o(yaI~nym-+ME*BrX)~fqcJZIFDMMhEK=aX(C3fPIH9QjyIy+7{x!AIw6$)S7Q zz-Te_fN(aLdY0CP^j5L^!8&flHUP5VR8&-3L4fO<>53_w4X>Sc?wRBdamNs4nl}IP zZPpI>fk~wIta1VK#C$A|CWQMlj?(IU3C@mU6}?j>vU_$<6Ei&{L+xHZ%HI4uYaXXc z=40u(!Hay9oj-jT`E7N*e~7@AUB||j!^pg>x%vBy4n(^lkE8M{YmQcBar3|n4^LP; zz25yJ2T%-8-d9dfRr6WqHJu2wPX3I4dhPLs_oJX_&^HG6!WFMrkwqLZ6d*#<*=Qt^|L(*_S`&my9{R%N$uZKYI=aJpx@pH-4L5JB`@n1nozDs~R( zi}pbnB!q7yx28X+8@Y9@eGT(2=zj(9?%wRf?7fkc$ZMSbg+Oc|Zbfe2)C|?Yibtn( ziqrnjHn}V~R~xgJyaD9!Ld9~0HGs!YiC)Mz8yqiRO|%|~X~%RenN@2X%~qJa+gRg@ zVzWUbb_adtzq{t*gnpTfSpNU)nzK<91kJVCcG#B95-fnu>pkGQS@h;l3n(R!LV~B~ zJVes>p`KXW;F3w@?BlRXw9~JbR^v*bDgSGmkW%Eial9G=Kp$iv` z)F}ga2MGE>XRNWr=$)9+Y((O3U{6X}>9khZ7I5qQf8lZp1oN75eFhiZ^>SS<7?Fe} z>6-fK31H#=UK|Sc66~Zh?2^?du3itw1`)H!F+|_WC*J58jD9bx&*|&ywY6mVkesqF zSswlF&T?ZVJ_LhH+$cfhTq z^1UjC5Ljox!k7jj=Dl~VUcT&p7lwg>v1OYhV}ZRH^ybZn=H^*c7pTs0SyxX_Z_KL= zIaEfVb60aNHB!UYwhS1~YP-190uvI(nWhbo1CKG&clA%qm6Yzg)j3_g0)uag+cPg_ z^)Q@UmGGzxCC+W$z$oq`!HKdqFff?F+L$Z9X&hBqbKCnVZXEaI=Q6eoBW8A)hi)Bitu@PYhglKk}|e~RIy{tR27kssvb{Hd|8 zC(VubofSAt9UMHS95j!FRgHk@=rOO2pi?`198RuSJN1AtH=iF45jaarON;r%zLd?s z7V#pzdBVzV_5~5!rn?>It=boQevTEv@y;UriEs2ONseXXq%1l7O#gr;gGHB)G?7YNS}*Cr zaWfzG#>8x6d^hHPusm=50b6mI)9;U?JS*Q3nO_E0O*=49wkuJJS z{r)8{SdQJZv^gbot!xdZSbw$ex23`^N*XR+LG>IR9p#{US%Q1+PKTnu$Tmh6jsgX& zTd3~?Le!E;-H`?>)hbOks90;pcc|ec)h%tcn$lAhd`ZSm){n zDgbQ>q>a9PEf^9Ep(A9jCqQvr*!;qO5Q4KUS-%{ARq_7)h^EO*bMqS*-YW^vFbYlq z{7?l6>_KT?`lpfdck0DIr~10ZqAwA`I~`*e$S=Z$8Ttv|wR|P_HaJuz5t;nxPMpp0 z$f*sBR)z5Q3k4%cJZOI9k^6mD#i%2MH*IV@{AqBNNTN7pi=PU%MKJH~Hs9H%6}Yc2 zSQ>K*yS9Wui!vBO8UIm$71I=_^N}tZZgz=1hRug4ZJPK`qAwqbbe&~0)7jD4#fi^J zR=3dmeeMKtgTb4m_Lzhm^uKbQatWkUF~De(OMa!>g9$N1&R9^rf;`ee=eIJ|SikB4 zmi}Bun!-;M-Rtf5t~}Wr)|$-aV8j28Pxn=nGevLsx#PH>JD(q(9!$|8C7h{aX3?KOC8N+kGlH9`^{G!}d zJ0@C{1SMjE`)~k%xIH|ST(efU(ljK3N(i#-g;$ejM8os^THh+Yx@;*ar#`I8q8|Z>N^zA+ zrxhOf+3gkY_ zHuOmF--pIVs(N24%7kkh&k(vT{c_KV?^7JVia%O^ZBMwYI4fcu{%a~HifEVezY>&C z`P<(~F{@(fzJ0tWLiI<*y&zBcsI8Ara|C(Z#Wln-?@(EDGQXd!TA>E< zJW;{5`B7Xu5iuQnEL7yt50Y$XZpzDyVV_j5+s<@#!|K;)LFU4XOn0rD<@9i^;Gn_T zP}Za=qgZ{ABEvU1m_cbVWgAO_K?Il4zmnFypUH!9<+`97b1Hi(WmO8q>F z^+E#u5A%ge?df#0w@})Hd-p1>@D0n1rKfCZ^j`S5+vrd=zdFuQo-Ufizl1qY>XzjN zBihQ;r1b=c5A$<6!H!l)X~!ZOkJh}+}=x2tAfi~iyvV3 zDIHaA#}d^sg9!qYD2@@>;*K^S*iE$uDl&_|_~U2asw;Y}pH&vkwh)S@PKmBUNKZ&V z!SL7R{=f*&_4d66ZZC*hdiOZaTSPtTK<`^Yrcch8Wq~~bmZRCE%>))q&&&>C;>??F&BsbbZ?snY* z-3tt*Koxi|GYKSbOWqd4{%hr*dPg!KK|9Sv$tEXz-^AGX^TqT1l?~s6fr03Qqa(d0 z#7jP4`3DA;^n9|_);m3*!)wD$9j;j0+^hkXS?gO{z}qrm_aVW<#$itC!6lK|=tLdgNJV+_sOAbP}5#-7cP3(^n zBlilAUS84u=eheInS=lQfud-Afou*TC-wB^-VCu>kaYDpR?%-sHcR}X_U z^n?hWQRn%549CzzR-q*vQr6N?i@lllm1bi1wH^FhPVd;g+Sr=Netd3of5z<1Xsffz z^0U1`t0-e>#{9xy1P}$SZ)~uiDSUlq`}TqfgKxo$Eu_@P*6#YUJgu+32KwlR2OzF# zp~>3?$$p8+UZ>o5{CD~Kclbkn3>uUu<{)~h(F7WYp5_HIePpcf{!3ge ze_%*Bt^%EU+U(xb8}Fs@;^o@xI)T9~#K=Wan7lMecoffee@dcx^R`gRo7pEF(Su81 zoE1gg#o-j0Qgs&dFkKF$iRL3GBgMq5lSQoC$i!Z-2y%cT&l4?V24>yp*Nmb-my;>0 z;1SDo;|pgp52C6cMt5RE1{RF?ay(SQ*=ZM-&V}m%#KdZ^rb;!PF2WeBBIQk0uQD z|G(D52R(E+doj3QZ=gZ~EmBf8nLpz)mj}rcNfAE?@e4;t{=A>P*~4qp^J!t;WISZg zPHS@#v=$5g{JbYQEv;Ib?@g%QD?91*mSi-BYtrc9n0Ie*C-8l~OPYFTX2NKL>yYd$ z?BeU?{n1NF@J1!7H6of=d}M?!*Gj^vkiFj6gQU3CGSw$od}@JUBAx00>Sq?G)EG*W z`%u*rvt}^Mg@r&{(6%d=n zbJLVy#6{_|)z1A?#Fa?oP>jC;bPA9}EI?hNljCb38^ow+^c*{9)ftqVtr`1fnb8?J zbweW~3*J0YSy>}NyeECD!u)3iSs8=DmVqv;Q@6 zfxuK34&mr@6u1?5Z!MK{;{>_31CENtZRV%F$BI^S#u3s0Ozh1F(#T}<*4JuZO$aRxLj+4z(COGMT6-B;M>oFAwlGM3|@oeg-xxT z>K&ZEy!_0CBLsO20LA-@mH*&t0=bG=|LndQ>u>rj6ukTc9rCx=HY6_q=nNj_fNvbr z8}g(o>ikE2t23Zls_5#(p+pHnoB`+VO|2|Wc9G8x9ak>f7f zux}xESMw9`74Gj<6a$K(-wDOL;d^;v;?c0ZEn?~F>655D=i%9egc(b!>hC_?+9?Pn z#~J3dy;Fy&qctp@Wtt$EV-jHhpR3|){LKaUeZT<#%Bg||$`*e#tZSjt_$q{*-w>ZM zODq1QYJLP5$K1XI7_FX+qBjdJf`D=swO)x+E_!@%UsDiqPw7s^}>KP)I=onaI_t!&$2aC}fA1ejY7^n1c6^7j`RB zev>Mm+ai{W`A_~^tlLcjrMRYnUWBQBqkve2DN|njaW8gzSusH~el}$@{_j<4e=hjv zUI>ClJg3|AJ9Ow^^sPxapz|5JINLS@Z{CBc+gx0=ey@MQbF_G-yyN2GL5B~=>UNU+ zbJmF9t!%&ZNeB`#b5-W?`f;WRSFJ8fr*kwL4yF2NuvO{=H;b#&$#9-;8$n` z%RgrcNq0z?HqP}*m5{7K3)_D@**3GgWjl~==Wgz3&oFev9d)y zeP%A8t}~_(0-FL{&8o}Gk@4|jBed@01^WMlXhN%G0zDZ~SikCpMOR|7zMG*`KYD($R|51Msyy3k!=$Y;HhF z*x(}nNVlyg=XBu_@UIlceD-!~OWmIoCjKPsA1Mq9kt;&+7MN6|jF{v~-|!;kA3UG; zDoHELRm~dW3q-!j(;l)tWyD;*L*0!SSg_6wNA!iARX*CKGMerbt)A%~9lU&n1a|Hs z77ein`#xe1PIRK5z3J_NrSO=^k1eiP&=8vi8%LGPY;JDq>@oi7uA5bptp7jgBa9d0 ztHyJmS7te*vh$s;U&Qqvp6CQs;(xX6zX_eI9iOqah(h?PzqzqcX*NPk@bri7=EG;5 zJL$k~7i5c6;ARPds=6+B8O-<|idntUsQjc_U;_wO$>=sDKjrvSDQa=mR0iy?V`t)a znKt$r0axzBV;&#!Syl8-@Wk8Bm5X!mo`{1A1*f9|Sz8F?cl`y%SCZx3LMNP{rH0h7C#F?~!@|Eq4afcAzYqVs0(FanA-{ADE()-z8P=WlfD)5B@C9z() z3`4EVpFomzqP)`xEErfIQ7?y^K@;jHQ#Kq)!b+8#&C=+T;fDedo_MZ3X1I=RxqwgX z7h`P@s;?naO8Yk$4f#`d$r;Bfc5!E99At_qw3ZLWA8Y+t5gSIR6h)#saF3^=@kbk3 z2uwk2OMq24XY*=?vRY=Dv(|_6Zu!@q;T~qqpJwBFUQ8*Eo>wa+^S2|%sWc)uhffIy z5ofmURi|Eu6zf_SIzJ}p@)$0jJ%9eSwWzL6VB1g^RfcN5K$W5T8j__0T7cgpHCG&i zVMK`ODIQ4m1^)$hMZkoFC>UOi4SZ}+%idIwUR3P?bjsgFth|TDdlrfqJw1k=b%UYY z?HU&kX_2^3@KNm4z(I?Pn6n06n9R~jJXK7eofw53v zm8?BdJ`p@0=qELu-iR`?swo-M6R>6W@pMi$I698q75Rd*RjnE~xg%8al4jDW7iUY= zbJ*f6ValdCIb-zKi5i6E()@w_YQygmLeNc8^{@QNiJq@?v|ZQ2cmMeo{Q5*H36&g?CHt4dE#e?x~v9IqBs<}-1g?>7{~cAV`I#i=j2JF}cP*(>w&nP8=xQ`}TeiPei51sTpN8vyCG zf9l$hl9v$_XQ5i{!Ghj|DpH2rCGG1nGkoZJlj0X`DcI%q346Isp0Gy2wP!CSwbqmfnBko2HL1P;y66DF^^*PU z!`qu}>m~Zp&29(N5*{0Q-X1##*Yt*ryoxL~?UlwvpI5)Kd4z=MTB(oHh(o8AIWsaw zx0?ZQcmL0I0-uvRyhfs0L1_N4V*I{NUj8RA$$u?kX2qk^kgzcs{X1f$U_sKofuQ7C zioZl5K>#`+hNw+pmEF7=8hML!*yyK6>K4^6>x?E>5;?PEZ&oGtE5HX4KM1|Aj=n`m zyDpnP3i=JVpa9h3>2we#*;94+I~?aJNyFn8h>u@f^7te-6Mp=&o{M7aET0C8{T!bk zCs`jC_@l$jWpQkO$Q{kf!RNle^1%@}fsM`1+JfWP^1aRxv`$J^5c}&-uJ=u5HAy;* zPEA<>nfKWAG@OHjqsv$Xw;_-LDf|Zh6%~%#IJ4noX4N54701 z&ew$a*)b+^er!CWqqzaFpM3Qzol4%9BP>0OzXc?hU*!T3#Gp-aXlw%IRU; z9F2yh)Tib^63?BMidV(B_qhtq1cW@i$Gh4PLrTy0W zx)m4>7MHQF`_koM2DkgK38hXLUW^Fn(MUzK6oG`o7X@A`j;D@7a7spfCUL&7>yn)b09h z(R#psSEP}{`ai6_1yodRzc(yODT06kBHbmRfOOXY3JM5_lqd}&l1eKG3`j~#Nh>KZ z4ALq{heOIx(%s$fwL$Ouex7sAcb@lM-`Z=rT*eH0W?%pOMQBOy!xkdpUuOmYJB(36 zsqj#--17CC?qwjCw?N9Ttp~p)HlJIpp94@i1H&HM2HVF0m)WKcEUtfBTsPEc*=AXi zcpLtvH+nVLuS==m>~uJzg7O-oU3T5BF5*UOZD9P2n|3 zzjBQu4L)|)aMdDpv@X{_1T2(etu_#XF+ZYHIcPkI;T#jc8KN=)o?8rGiOf0#7Sy2? z-y^^+-e55X2|3VM_K@kMfKJWb3mAB8K0tZ!EYAz!E^UzUg#bL!kWz``T zW(LuQhTPZNaB3;Dl3cS@-wAN^uKonfq(+GmAo=_h5>|9e&dD!th9u0lj{%FKPo5h0 z(n$auZ8;jKlbnkEBx+)lI$sd2b7+fn{?kC(q3qQIMdf&*HBKrx&7s`a&4ESSn zeSmGcmcZTqK&=Tz4>`%b1GT3_8o5uJn$#srn`*~Ct z#KF4W?kX3Rx#2!uA6y*jvG8Q6tN;-F_UDa`=Z?Gpkb+DV`F+QQRbFCvib*U2l?V#xDq=X17&Jr%Gw+fj z*v9QM*`!$P2thF3v-ho*%@50&!)^5;Ace*`yN?E9z=GkaTY6_;RiiT1qH-3hBR>apKCHwE(jY=lQ%+ zObc&~%^M0{R7s!VK=`AIg`zhVp?f=k6*kA|fM^v1czQp)#iACTVud&4{X47Ui-5Z4 z*f&opf8i;>RHH`ysNSg<^5_=TMU`H;`C-1N0ZEU~u!^<3h;1)a0S^1Oa!9j zjwL&?WMHRcP)H!Up@kAsc=Q^;LcAYbw8DjUNK4MfU}~)DQy0wd7h$lxZO^i*`_b*!<^<%v%M5OELcZ#mZ6pST;Bkm6SjWEeEPvqT# zg>PI1m5%`(Ai6?(-3xf3IPb4Y0#egbWeDU_5b{}c5!vNe+!Xl=g|W(kP*sxdLmXKN zj{!{3R9QZL`&0A#fyZySZ7@hnUHSOEJ%GTs0Q}MCFM87Qpj_@-UCW$dCVA|t!tiu}1_s#JGbz1X1!xy8zOWQ!A3uXq$ zB^(VP+_xWkbVzI?KWb)0-$6ob#;uQcJ(`DZJ4^AWsd{yk!UiC2>vGL;wKZ3&`hGdb zxpppNNZns*>PVDt7Kc9q_9Ut#BNI9D_Ia!PdM}6tG z`)Taof6Y2~bjz!2HG|iq2_X8|w!M0XW(ECssYZ6^n{tGtI$=DUAn@zEILpVAPn3}l z`%>d3MliPbX@>z1z7D`ik7dy`hR+Ha7{7Eto@Yv*U4SXukD^?Zu=$P%wR!R~Nt+FmRST5h_ht@wBCEcWM!gRGbq z?J6hV8*f`Ziz{Oiu_f2Vkh}!AGtVfE4X66B@Th+wK2ImPwHrh%%VpnnAG<8*dGMkF zusw&Ij1I;qXzZd|I?yBHYj@-aD9saYiYu#0?wU;dxVj-{<2Hn7F0IPh_@n)?#&<*!Kv@SaafE&V?FAFm>&pP&h`CKY@=*qhL+#?k%b7ssp9Jn_D zE&V!@7GToOaBKYP0?hopSFIrD3abh~Pnu10F75dl=tbvi(Xu7WcLe0}Wd>hEn_c!T zi*+1ah`q<4oPo>E5}x;s3hvH910aJ0yQ$!ni?{NcDD-Uvs=n^03bCV=1KQu?`AX?} z9Zi5pJim3nE9J2BzNEVU*7dHG)`E)V>VZR}I77xs+84jDw)Y{f#{jU|=`zF=6Erhc zj0JKHiiF$X(Y|=!qSobafDuylZ{gRitw`GUcAa3E8frGY3qk9$etUNAp|A7+}!q8DuzL&wgq_v zaGN>Qk-&Ze1GiNrYwCqZ8@Gt&|9Z;Zfmz$xZ0fHF$pEX5&*(7+b`Q;CE!H`ei2BEg z;g&=X^Nj$0iv5#vymJLWS*C!rber%bEn(Gz4jJc3`1D?wIjDK!UW#C?zdyc~IbdDJ zQ+sss#BptC?c!JK7Mt~h;GumZDP@r+L~_qUuiWwD0Kwv9%;u`oRtjklXVr&spwV5@ zUu-^Ism7eB!>YkN1PPT_9)`ZQATXQwc&@4eSVqk6K~`SWE;BTpT&_alLF&E2;J8{- z_x=S>-hCj0#JPj-P2xe?qcIAKwsC=@g&6&|rP0bdsY3f_x9!1tNHgGl>dHj2tniBA99!axl0Eh1GRW% z0x64pNajAtZOJlCG1$Hz4$yzjK#hWE*<u^)x6*YBGi#-f*Ly zv2aSr-tIF1Ny>5}u~{`cH$z1$J3W0%hafuSe*GY1Xg0dv%<};|bBXM_%*U#q?SO?o z>M@1tH>27I1E&%UjQEIe{%zHqWLtnWJ684~un=TqPT3w9-B zRf3A?dI&>tnv~#huO9sV951cU72#wT52mBxQi~s+hd&2&cPa_dQ_KLPm#jg2c~j=j zryq|}!qa_m<^NHMi=UIh&Ofi8mOP%5d`n8}n#M%*krbdlY>zMYMT>ZqgknJDF_u5{ zVmx?A(!8wxIq*RXX(bIP?Kg{uf`9le666t?a^`jZ&5wK$!|Fs;XwVPOJpoMKr3SI5 zpGR@`LBd(^1hb3?8&LD|Sl8@sIhj^ zI{kWymd|gLB^o~4=YKJwnC91CUG>s@B7ib1)SusPc?VWR7|ZJp(>Fcujs$Q^(Js65 zdYl`59dLW15BQ{M5d8yK`L9#^km|?nWS?pONE>}Yw6|n+Osb&rv0&pxk543tya^*%TH28=GDSmW}in0mE1DI=w#T#l5?loDC zJ3ae(TQW60GU6e^Tr^eT2-Idrvia>jsSoWh*(zh~o@f{0WU1cS(NlDj04wyqAN~E5 zc`_tA0G4oNbw|Odd7qq6SDElj8S~G;r`YWZa@rc_p7ESVrBc0eK!-(jpGmmwoj0TS zOJBf*<<^<$w~x5WNrWl>`Coh)Dgd`~0hlaOR$C-{Y!%)GHY2~Ny@6g55)t|51(d(J z2&d&mz9ky&!<1nz^qj&NZVzRQIL6_Cx&Py>TOw3oM>5)1@Kb6px_}trUItI9d?xvv zNAE&%6P3V#9PH@>q>R$zbG&JAprxQ&;18N!G{ti;@ltnlbL$m9A3+EK6DZ-|_d13t zg8oBUq%T|!6!J`W1QARMeIhfzp(NQT{UMj>L}x$^9)RdJm{NGn;a1C9IGUwIi>k8W?+d92V9fnQjuPtiT10vE$zw;1>G0;b(0|dg~ zN1GpO{Z~0o4UZd{|H*y=f>e;|dGmo0r_l*Q3>U4fT<`7XBTd72y5lE5a!N?Y#{29^ z^Gg_S4*Rp~;`T>LRV;bi?jG1ZZf_9nc{K#IL{nrzgtzi$z3H_HJ?&Oauf)o&f z`1F5Yd>HzdomJ{*8%r+H`!|_nobB6)ui_i`x!FsQOEFevc#4+Hkz;%f!+oXl`#zzU z0)=^#^n+(UkapbElvzv3Pqts=27u=IHz4rOSbTY4sLmeO+L_g#WP{=pGdkH3kOSZf1mZOOUc^Gccqt}Pf#IINT zLSXT@PiLkbNjRBx2q<`vAY}~0bYp6`7PNKX!NP;EVlF)h97->=8P|av*NE?+PN*h1mbEh zf*9{e#Wd@Mqsi~7-S{MV)!2x4zWHGWCk5w60o!45AS3t6qISmn3qCP@S{vSp`a_EL z7Q$0=jbw`dMrdF>EHXqspB?9NhsF)#^8Dy|u#G#B_`~Np{-M+VW>k1i84Nisd~B#> zR=hI_gTEvnZLn=0nIJRjUOGLun_p7-d9wOffe9jY$0lXysZKDvDloqY820@%u|nYk zbYW){z?}ec#ASB+NA0w58Ojgx^!SXKl8CD+PAqN)Kz>R97h4ff74$?sb1UBHJ=X!^ z3n#-~syM@}TlmaGSO}B}@63Zw{ME!CS6MYqfjg&9FFl6UG_UYmqs-Z$l1n%If=TGI zGeUvH{g^CA<-MpA#O>v?c7Z?z4Dhd1=+lJFB13YECQ~c?Ac6uT>j^0NUI1_SObl<8 zH47wTXuG_n`v(gEdg8w?<7)Q0$A_2S5W@*6tVVrXf=<~LRBkRNAIYfG$EcYRC_X*b zr+8=oC<=ZT8~><{O?;^R-;c<9-~M=Q!F1)^S*8=V1b4LjKNFzD^-?1BfrZ?AdLVlVMJbxtrWF-C!Ha6Vdu_ zSeZYE=|msU*!~tU5Sa%JjubWhnX}&^k;|@3RiC~a{2LCt8x9{=sdYq)UZ{ukK0Z3w z?ZsfOEspUSD%6-_7k|kcg8+Y^p>gs{HY5#ti8y5+n0mEyRuzf>S3PM9cK!f1=|%*W5w6;dT_53%Ud zDanXzU-?<35BGg|y8VvQNC#Q)&-R-+El)Hs%<%1-m%s6PG5B)!`{Tb82qKmJ zrQ+V+p0X`hkuypuP(kaoGEIdOH|hjZA5(%$WYRVa9X%L(!B(3F8*t87u8p#MEv$(u ztqHNPe)^Orz(Nld^ltbo!{Y)xDQR^j!EfXX#`fQ7;XOAWY;=Cc{{#};7E_PTPv5zp zIN*cOAlEiNQp}qGNIys~(;;t)xsr1foB*5~tnc3)eK*r*qnFn+_JLf2Azj)iC-m#{mlvMU?Z+;HD&M)0!9Tr+ zS90M~?ZQ;NEy@dMN1(pqQbjh5*~OGAK(ro+H(*yn0C98$6=NcQ@V`D78K4An3Mbv%L>gxU3r|5rgq{FCth67H)2+a6=H|^famBn- z=Fe$Dy~=PyWATep9^bZU2P~9!(bL;s1%@kB(|(=i9HO^f&{Zo{>3p+ z;bMSv%+tG)yXlE`^^{vf%br3UTT$EWOhAba@MV88o#KJXsDQFA;fY%8l^mg!Kb!xw zBZLBo8Mrq;YsvkU;G#1Q*mY;+NLd`PQu7>BRk@8`jN-(LyA)M4L6b!5ypm`G*V&9M zFxCOH(JlV%iV!eOtp{UeZAduOmw*DJCbnoIw(!Zv1DIW^?Z5Q|HHx6eo+E4+43*6U z;TVDEp`a@iNwtL(N`R==(f;B$0$xX|BhLAyS9r9a2!#f3Xh^x{AMYj~7lH}G0AyE0Drn?wO zv`Y`j;!<@|o_Di^kV$+P4XQ{@PJRPD;>J8RdWzpDuZuUaz@_e0hfQ~*SWUT86bC4< z@_lt7WF zE0`u)&mH6KePy;p6EG{vujm2Q0d-+UjrApA5}R`W=i>Vd#i%CM_@8zSH0D5zC%7W! zxglH&!>J-Qybjb+tnv#WtvZRc5YTV7N7daw2JNZc^rk29s-+v;jelC+RJ|5e@L3Sd zBJ5r#=c`+`u_e7=gcpb=#9jfh`?WPd0Fg8Qe=t@}#Q1N^T_B4J?fyM+T&opjdADp( zu#Q+Yb$8g^Y;YH21(!1W5@8STZH@P zdP&bc&Mwojx&V=LC7|lD-TQ{0(51jW@=aG*1{v2v-bD-dMW6u58*Tc+!0tO4j~sV| zg(fQo6!PXZ2a~)*B5mt2hOSMhVOML|0}d{=28x;;g$nRl>Sto0AyWS36xPS8Fjh2c z>K*1GNP=z8tJ|}3dLL+E%`Ne!YIz*}!jpP-IFks1z+D&;U>L+07lANGAtVDQIAHUH zGp@g{Z+h=O?kpG+&kY;t+Ltw^kF~iKJw#Ys<}sXlva*L2R>L!)8cpkX^Oc*j8V zkGoQb$d)=F8EjVHI%DDD(2Y~RLu`(KC13#oqe+ zh`c+gi(tT33fVSW_W5mIX2v+?HQuCgr6uw5r?y7`)ko9XZE>*PS%hR$I!eEj>j}%M z*QF9kR8%{nCGGbp-g1{-hxQvRmdifOq&Km>-_qa%^Se`kmld9Uq0f%fj?+R_ymgPi zM0S;gx5XQ&@Y>7ur^P8?u1VoRNlg3fd9v{F=FKJ z2Yl*G@#vASpPgPP?r`?HjE3Ylg}cB2prz@ zo)0;70fx*asllkv8$_WNz%%d23@mdp_Sb>O=R{*E2)$+7TS`JC!LCvvj({7C-&ohA z9`Kj~|4O&yJ!$$a3CbJG$Ag*guoViLTQRQw+Nh1Roy&2dSzV+$E(6!=ZRa)n9! zIORBGpY3hTG8HeJw;@DpSHBebgTEr90$&6qKK_I1`yAoHDY)&`@B=_-S_7!jS6{Cf ze$4(;0(h{WK)JYHy|$n#Q{|LL4uP!xG?|YE`0o`%(Ftt3$SpAgkk)O84Pf)y_r0LB z0ov<8!}X$h3@A&EiwFgOelgevgLVwCM0VLeZtV=0Nd-yG@J)Az5*Wo+@U3o*czIQ< zHFNoY-5h2qUYKY^->s*CijT305AuZs5YnHO;|u;j;Q1E;h3>u=HgVL2>|)y27Pl1- zUYCBLIguYPWQG_#{M2_Y5ry-qIR?>6h+6luS7e;>iqGN9Rvkuq3*lP>HL{1s4}hM5 zHgIbB2R2>|Zd98jk*exo3kn#gyQwy+rp^*T3T$Z`+Uu){&ZduMU0g!5e!BzLdaO=q zB)0T9&C<4nfVcA5&K{%yivk*x1JLFTQh6ELgwZ%fwgF;|eCPFt$VLM_ps{TOTWoNv ze$0=#&!`#a)?6(H_V6}fZY$V?7*>db1E5G07|46xqRxBaoOknzOn*;L)aFaDL*REF ziNQKZxI%7ReZe)&-Bs>E$hBL|_Bi=?cz6ad(PS6Ir(S@I9mW%g>!Sxi0G|FwN71%N z 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 Analysis Method > Manually` and select `Other (for JS, TS, Go, Python, PHP, ...)` -- In the [sonar-scanner.properties](../../scripts/config/sonar-scanner.properties) file in your repository, set the following properties according to the information provided above - - Set `sonar.[language].[coverage-tool].reportPaths` to ensure the unit test coverage is reported back to Sonar - - Do not set the `sonar.organization` and `sonar.projectKey` properties in this file; do the next step instead -- Follow the documentation on [creating encrypted secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets) to add the `SONAR_TOKEN` secret to your repository. The GitHub action is already configured to fetch that secret and pass it as a variable. In addition to that: - - Add `SONAR_ORGANISATION_KEY` variable (not a secret) - - Add `SONAR_PROJECT_KEY` variable (not a secret) -- Navigate to project `Administration > Analysis Method` and turn off the `Automatic Analysis` option -- Please refrain from adding your repository to the GitHub SonarCloud App, as this app should not be used. Doing so will duplicate reports and initiate them outside the primary pipeline workflow -- Confirm that the _"Perform static analysis"_ GitHub action is part of your GitHub CI/CD workflow and enforces the _"Sonar Way"_ quality gates. You can find more information about this in the [NHSE Software Engineering Quality Framework](https://github.com/NHSDigital/software-engineering-quality-framework/blob/main/tools/sonarqube.md) - -## Testing - -You can run and test static analysis locally on a developer's workstation using the following command - -```shell -export SONAR_TOKEN=[replace-with-your-sonar-token] -./scripts/perform-static-analysis.sh -``` diff --git a/docs/user-guides/Run_Git_hooks_on_commit.md b/docs/user-guides/Run_Git_hooks_on_commit.md deleted file mode 100644 index 507e1f8..0000000 --- a/docs/user-guides/Run_Git_hooks_on_commit.md +++ /dev/null @@ -1,32 +0,0 @@ -# Guide: Run Git hooks on commit - -- [Guide: Run Git hooks on commit](#guide-run-git-hooks-on-commit) - - [Overview](#overview) - - [Key files](#key-files) - - [Testing](#testing) - -## Overview - -Git hooks are scripts that are located in the [`./scripts/githooks`](../../scripts/githooks) directory. They are executed automatically on each commit, provided that the `make config` command has been run locally to set up the project. These same scripts are also part of the CI/CD pipeline execution. This setup serves as a safety net and helps to ensure consistency. - -The [pre-commit](https://pre-commit.com/) framework is a powerful tool for managing Git hooks, providing automated hook installation and management capabilities. - -## Key files - -- Scripts - - [check-file-format.sh](../../scripts/githooks/check-file-format.sh) - - [check-markdown-format.sh](../../scripts/githooks/check-markdown-format.sh) - - [check-terraform-format.sh](../../scripts/githooks/check-terraform-format.sh) - - [scan-secrets.sh](../../scripts/githooks/scan-secrets.sh) -- Configuration - - [pre-commit.yaml](../../scripts/config/pre-commit.yaml) - - [init.mk](../../scripts/init.mk): make targets - -## Testing - -You can run and test the process by executing the following commands from your terminal. These commands should be run from the top-level directory of the repository: - -```shell -make githooks-config -make githooks-run -``` diff --git a/docs/user-guides/Scan_dependencies.md b/docs/user-guides/Scan_dependencies.md deleted file mode 100644 index 25aff55..0000000 --- a/docs/user-guides/Scan_dependencies.md +++ /dev/null @@ -1,73 +0,0 @@ -# Guide: Scan dependencies - -- [Guide: Scan dependencies](#guide-scan-dependencies) - - [Overview](#overview) - - [Key files](#key-files) - - [Configuration checklist](#configuration-checklist) - - [Testing](#testing) - - [FAQ](#faq) - -## Overview - -In modern software development, leveraging third-party dependencies is a common practice to reduce redundancy and improve efficiency. However, this introduces potential security risks and compliance issues into our codebase, making dependency scanning crucial. This process helps identify known vulnerabilities, or Common Vulnerabilities and Exposures (CVEs), in third-party libraries, allowing us to mitigate security threats proactively. Regular CVE scanning strengthens our codebase's security, ensuring adherence to top-tier security standards. In addition, generating a Software Bill of Materials (SBOM) - a comprehensive inventory of software components, libraries, and modules - is a valuable practice. SBOMs enhance transparency and traceability, giving an overview of all software elements, their versions, and associated licenses. This facilitates effective dependency management, compliance assurance, and timely response to version-specific vulnerabilities. - -[Syfy](https://github.com/anchore/syft) and [Grype](https://github.com/anchore/grype) are valuable tools that can bolster this process. Syft generates a detailed SBOM, ensuring full visibility and traceability of all incorporated software components. This facilitates precise tracking, management, and potential updating of dependencies. On the other hand, Grype, as a vulnerability scanner, meticulously examines dependencies for known CVEs, providing an extra layer of security and allowing us to rectify vulnerabilities promptly. By incorporating Syft and Grype into our CI/CD pipeline, we can ensure continuous scanning of dependencies and generate an up-to-date SBOM. This approach enables real-time detection and resolution of vulnerabilities, thereby fortifying our software development lifecycle against security risks and ensuring adherence to compliance requirements. - -## Key files - -- [create-sbom-report.sh](../../scripts/reports/create-sbom-report.sh): A shell script that generates SBOM (Software Bill of Materials) -- [syft.yaml](../../scripts/config/syft.yaml): A configuration file for the SBOM generator -- [scan-vulnerabilities.sh](../../scripts/reports/scan-vulnerabilities.sh): A shell script that performs CVE analysis -- [grype.yaml](../../scripts/config/grype.yaml): A configuration file for the CVE scanner -- [scan-dependencies/action.yaml](../../.github/actions/scan-dependencies/action.yaml): GitHub action to run the scripts as part of the CI/CD pipeline -- [.gitignore](../../.gitignore): Excludes the `*sbom*report.json` and `*vulnerabilities*report.json` report files created during the process - -## Configuration checklist - -- [Adjust the configuration settings](../../scripts/config/grype.yaml) to align with your project's specific requirements -- [Create a dependency baseline](https://github.com/anchore/grype#specifying-matches-to-ignore) for your repository excluding false-positives from the scanning process -- Make sure the GitHub action, which incorporates Syft and Grype, is part of your GitHub CI/CD workflow. More details on this can be found in the [NHSE Software Engineering Quality Framework](https://github.com/NHSDigital/software-engineering-quality-framework/blob/main/tools/dependency-scan/README.md) -- It is crucial to ensure that both, the SBOM and the vulnerabilities reports are uploaded to the central repository or a designated location for streamlined reporting and easy access. Here are the secret variables that has to be set for this functionality to work: - - `IDP_AWS_REPORT_UPLOAD_ACCOUNT_ID` - the central AWS account ID where the reports will be uploaded; this will be set by a GitHub organization owner - - `IDP_AWS_REPORT_UPLOAD_REGION` - the region of the AWS account; this will be set by a GitHub organization owner - - `IDP_AWS_REPORT_UPLOAD_ROLE_NAME` - a dedicated role name for this repository that can authenticate to the central location for the purpose of uploading the reports - - `IDP_AWS_REPORT_UPLOAD_BUCKET_ENDPOINT` - this is a dedicated S3 bucket endpoint for uploading the reports and should be in the following format `s3://bucket-name/repository-identifier`, without the trailing `/` -- If you have any queries about how to set this up, please contact either [@stefaniuk](https://github.com/stefaniuk) or [@andyblundell](https://github.com/andyblundell) - -## Testing - -You can run and test the process locally on a developer's workstation using the following commands - -SBOM generator - -```shell -./scripts/reports/create-sbom-report.sh -cat sbom-repository-report.json | jq -``` - -CVE scanner - -```shell -./scripts/reports/scan-vulnerabilities.sh -cat vulnerabilities-repository-reportc.json | jq -``` - -## FAQ - -1. _Why do we need to use all three tools: Syft, Grype, and Dependabot?_ - - Syft, Grype, and Dependabot each serve unique functions in our CI/CD pipeline. Syft is used to generate a detailed Software Bill of Materials (SBOM), providing full visibility and traceability of all incorporated software components. Grype performs detailed scans of dependencies against the Common Vulnerabilities and Exposures (CVEs) list, adding an extra layer of security by introducing a quality gate in the delivery pipeline. Dependabot helps to keep your dependencies up-to-date and can also alert you to known vulnerabilities affecting your dependencies, showing the best path to resolution. By using all three, we ensure comprehensive dependency management is in place, from tracking and updating dependencies to identifying and rectifying found vulnerabilities. - -2. _Why don't we use a GitHub Action already available on the Marketplace or the built-in security features of GitHub?_ - - While we indeed leverage GitHub Actions within our CI/CD pipeline, they don't serve as a comprehensive solution for dependency management. Additionally, the built-in security features of GitHub aren't advanced enough to meet our specific requirements. Syft, Grype, and Dependabot provide specialised functionality that we integrate into our pipeline via GitHub Actions. By managing these tools as separate components, we gain greater flexibility in our configuration and can make finer adjustments as required, such as data enrichment. - -3. _Is it feasible to consolidate this functionality into a custom GitHub Action?_ - - Although consolidating this functionality into a custom GitHub Action seems like an optimal approach, this functionality also needs to run as a Git hook. Hence, shell scripting is a more suitable method as it makes less assumptions about local environment configuration or rely on third-party runners, providing quicker feedback. Additionally, incorporating this functionality directly into the repository has several advantages, including: - - - Improved transparency and visibility of the implementation - - Easier investigation of CVEs found in the repository, eliminating dependence on a third party like GitHub - - Enhanced portability and flexibility, allowing the scans to run in diverse environments - - However, this approach should be periodically reviewed as there is an emerging practice to use projects like [act](https://github.com/nektos/act) ~~to make GitHub Actions portable~~. Update: Please see the [Test GitHub Actions locally](../user-guides/Test_GitHub_Actions_locally.md) user guide. diff --git a/docs/user-guides/Scan_secrets.md b/docs/user-guides/Scan_secrets.md deleted file mode 100644 index 3f7be2f..0000000 --- a/docs/user-guides/Scan_secrets.md +++ /dev/null @@ -1,46 +0,0 @@ -# Guide: Scan secrets - -- [Guide: Scan secrets](#guide-scan-secrets) - - [Overview](#overview) - - [Key files](#key-files) - - [Configuration checklist](#configuration-checklist) - - [Testing](#testing) - - [Removing sensitive data](#removing-sensitive-data) - -## Overview - -Scanning a repository for hardcoded secrets is a crucial security practice. "Hardcoded secrets" pertain to sensitive data such as passwords, API keys and encryption keys that are embedded directly into the code. This practice is strongly discouraged as it may lead to security incidents. - -[Gitleaks](https://github.com/gitleaks/gitleaks) is a powerful open-source tool designed to identify hardcoded secrets and other sensitive information in Git repositories. It works by scanning the commit history and the working directory for sensitive data that should not be there. - -## Key files - -- [scan-secrets.sh](../../scripts/githooks/scan-secrets.sh): A shell script that scans the codebase for hardcoded secrets -- [gitleaks.toml](../../scripts/config/gitleaks.toml): A configuration file for the secret scanner -- [.gitleaksignore](../../.gitleaksignore): A list of fingerprints to ignore by the secret scanner -- [scan-secrets/action.yaml](../../.github/actions/scan-secrets/action.yaml): GitHub action to run the scripts as part of the CI/CD pipeline -- [pre-commit.yaml](../../scripts/config/pre-commit.yaml): Run the secret scanner as a pre-commit git hook - -## Configuration checklist - -- [Add custom secret patterns](../../scripts/config/gitleaks.toml) to the configuration file to align with your project's specific requirements -- [Create a secret scan baseline](https://github.com/gitleaks/gitleaks/blob/master/README.md#gitleaksignore) for your repository by adding false-positive fingerprints to the ignore list -- Ensure that the GitHub action, which incorporates Gitleaks, forms part of your GitHub CI/CD workflow. It is designed to run a full scan as a part of the pipeline, providing additional protection against hardcoded secrets that might have been included prior to the rule additions or by bypassing the scanner -- Further details on this topic can be found in the [decision record](https://github.com/nhs-england-tools/repository-template/blob/main/docs/adr/ADR-002_Scan_repository_for_hardcoded_secrets.md) as well as in the [NHSE Software Engineering Quality Framework](https://github.com/NHSDigital/software-engineering-quality-framework/tree/main/tools/nhsd-git-secrets) where a usage of an alternative tool is shown - -## Testing - -You can execute and test the secret scanning across all commits locally on a developer's workstation using the following command - -```shell -ALL_FILES=true ./scripts/githooks/scan-secrets.sh -``` - -## Removing sensitive data - -Here are some tools that can help in removing sensitive data, such as passwords or API keys, from the Git history - -- [rtyley/bfg-repo-cleaner](https://github.com/rtyley/bfg-repo-cleaner) -- [newren/git-filter-repo](https://github.com/newren/git-filter-repo) - -For additional guidance, please refer also to the official [GitHub documentation](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository). diff --git a/docs/user-guides/Sign_Git_commits.md b/docs/user-guides/Sign_Git_commits.md deleted file mode 100644 index 0e353c2..0000000 --- a/docs/user-guides/Sign_Git_commits.md +++ /dev/null @@ -1,208 +0,0 @@ -# Guide: Sign Git commits - -- [Guide: Sign Git commits](#guide-sign-git-commits) - - [Overview](#overview) - - [Signing commits using GPG](#signing-commits-using-gpg) - - [Generate GPG key](#generate-gpg-key) - - [Configure Git](#configure-git) - - [Configure GitHub](#configure-github) - - [Troubleshooting](#troubleshooting) - - [Additional settings](#additional-settings) - - [Signing commits using SSH](#signing-commits-using-ssh) - - [Generate SSH key](#generate-ssh-key) - - [Configure Git](#configure-git-1) - - [Configure GitHub](#configure-github-1) - - [Testing](#testing) - -## Overview - -Signing Git commits is a good practice and ensures the correct web of trust has been established for the distributed version control management, e.g. [Bitwarden](https://bitwarden.com/). - -There are two ways to sign commits in GitHub, using a GPG or an SSH signature. Detailed information about this can be found in the following [documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification). It is recommended to use the GPG method for signing commits as GPG keys can be set to expire or be revoked if needed. Below is a step-by-step guide on how to set it up. - -## Signing commits using GPG - -### Generate GPG key - - -If you do not have it already generate a new pair of GPG keys. Please change the passphrase (pleaseChooseYourKeyPassphrase) below and save it in your password manager. - -```shell -USER_NAME="Your Name" -USER_EMAIL="your.name@email" -file=$(echo $USER_EMAIL | sed "s/[^[:alpha:]]/-/g") - -mkdir -p "$HOME/.gnupg" -chmod 0700 "$HOME/.gnupg" -cd "$HOME/.gnupg" -cat > "$file.gpg-key.script" < -ssb nistp256/BBBBBBBBBBBBBBBB 2023-01-01 [E] -``` - -Export your keys. - -```shell -ID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -gpg --armor --export $ID > $file.gpg-key.pub -gpg --armor --export-secret-keys $ID > $file.gpg-key -``` - -Import already existing private key. GPG keys are stored in the `~/.gnupg` directory. - -```shell -gpg --import $file.gpg-key -``` - -Remove keys from the GPG agent if no longer needed. - -```shell -gpg --delete-secret-keys $ID -gpg --delete-keys $ID -``` - -### Configure Git - -Use the [following commands](https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key#telling-git-about-your-gpg-key) to set your default signing key in Git to the ID of the GPG key you generated. Replace `$ID` with your actual GPG key ID from the script above. - - ```shell - git config --global user.signingkey $ID - ``` - -Then enable automatic signing of Git commits by running: - -```shell -git config --global commit.gpgsign true -``` - -### Configure GitHub - -To [add your GPG public key to your GitHub account](https://docs.github.com/en/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account) follow these steps: - -1. Navigate to your GitHub account settings. -2. From the sidebar, click on "**SSH and GPG keys**". -3. Click on the "**New GPG key**" button. -4. In the "**Title**" field, enter a descriptive name for the key, like "My GitHub signing key". -5. Copy the contents of your public key file and paste it into the "**Key**" field. - - ```shell - cat $file.gpg-key.pub - ``` - -6. Click "**Add GPG key**" to save. - -After completing these steps, your new signing key will be listed in the "**SSH and GPG keys**" section of your GitHub profile. - -### Troubleshooting - -If you receive the error message "error: gpg failed to sign the data", make sure you added `export GPG_TTY=$(tty)` to your `~/.zshrc` or `~/.bashrc`, and restarted your terminal. - -```shell -sed -i '/^export GPG_TTY/d' ~/.exports -echo "export GPG_TTY=\$TTY" >> ~/.exports -``` - -### Additional settings - -Configure caching git commit signature passphrase for 3 hours - -```shell -source ~/.zshrc # or ~/.bashrc -mkdir -p ~/.gnupg -sed -i '/^pinentry-program/d' ~/.gnupg/gpg-agent.conf 2>/dev/null ||: -echo "pinentry-program $(whereis -q pinentry)" >> ~/.gnupg/gpg-agent.conf -sed -i '/^default-cache-ttl/d' ~/.gnupg/gpg-agent.conf -echo "default-cache-ttl 10800" >> ~/.gnupg/gpg-agent.conf -sed -i '/^max-cache-ttl/d' ~/.gnupg/gpg-agent.conf -echo "max-cache-ttl 10800" >> ~/.gnupg/gpg-agent.conf -gpgconf --kill gpg-agent -git config --global credential.helper cache -#git config --global --unset credential.helper -``` - -## Signing commits using SSH - -### Generate SSH key - -You should not do this if you already have GPG signing set up. One or the other is fine, but not both. - -If you do not already have SSH key access set up on your GitHub account, first [generate a new SSH key](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent). To create a new SSH key, you need to run the following command. This will generate a new SSH key of the type `ed25519` and associate it with your email address. Please replace your.name@email with your actual email address. - -```shell -ssh-keygen -t ed25519 -C "your.name@email" -f "~/.ssh/github-signing-key" -``` - -When you run this command, it will ask you to enter a passphrase. Choose a strong passphrase and make sure to remember it, as you will need to provide it when your key is loaded by the SSH agent. - -### Configure Git - -If you are signing commits locally using an SSH key, you need to [configure Git](https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key#telling-git-about-your-ssh-key) accordingly since it is not the default method. - -Run the following command to instruct Git to use the SSH signing key format, instead of the default GPG: - -```shell -git config --global gpg.format ssh -``` - -Next, specify the private key for Git to use: - -```shell -git config --global user.signingkey ~/.ssh/github-signing-key -``` - -Lastly, instruct Git to sign all of your commits: - -```shell -git config --global commit.gpgsign true -``` - -### Configure GitHub - -To [add your SSH public key to your GitHub account](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account) follow these steps: - -1. Navigate to your GitHub account settings. -2. From the sidebar, click on "**SSH and GPG keys**". -3. Click on the "**New SSH key**" button. -4. In the "**Title**" field, enter a descriptive name for the key, like "My GitHub signing key". -5. Copy the contents of your public key file and paste it into the "**Key**" field. - - ```shell - cat ~/.ssh/github-signing-key.pub - ``` - -6. Ensure to select "**Signing Key**" from the "**Key type**" dropdown. -7. Click "**Add SSH key**" to save. - -After completing these steps, your new signing key will be listed in the "**SSH and GPG keys**" section of your GitHub profile. - -## Testing - -To ensure your configuration works as expected, make a commit to a branch locally and push it to GitHub. When you view the commit history of the branch on GitHub, [your latest commit](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification#about-commit-signature-verification) should now display a `Verified` tag, which indicates successful signing with your GPG or SSH key. diff --git a/docs/user-guides/Test_GitHub_Actions_locally.md b/docs/user-guides/Test_GitHub_Actions_locally.md deleted file mode 100644 index 2da643b..0000000 --- a/docs/user-guides/Test_GitHub_Actions_locally.md +++ /dev/null @@ -1,64 +0,0 @@ -# Guide: Test GitHub Actions locally - -- [Guide: Test GitHub Actions locally](#guide-test-github-actions-locally) - - [Overview](#overview) - - [Key files](#key-files) - - [Prerequisites](#prerequisites) - - [Testing](#testing) - - [FAQ](#faq) - -## Overview - -A GitHub workflow job can be run locally for the purpose of testing. The [nektos/act](https://github.com/nektos/act) project is an open-source tool that allows you to do so. The project aims to make it easier for developers to test and debug their GitHub Actions workflows before pushing changes to their repositories. By using act, you can avoid the potential delays and resource limitations associated with running workflows directly on GitHub. The tool provides a command-line interface and uses Docker containers to emulate the GitHub Actions runner environment. This enables you to execute the entire workflow or individual jobs and steps just as they would run on GitHub. - -## Key files - -- [init.mk](../../scripts/init.mk): Provides the `runner-act` make target -- [.tool-versions](../../.tool-versions): Defines the version of the `actions/actions-runner` Docker image - -## Prerequisites - -The following command-line tools are expected to be installed: - -- [act](https://github.com/nektos/act#installation) -- [docker](https://docs.docker.com/engine/install/) - -## Testing - -Here is an example on how to run a GitHub workflow job: - -```shell -$ make runner-act workflow="stage-1-commit" job="create-lines-of-code-report" - -[Commit stage/Count lines of code] 🚀 Start image=ghcr.io/nhs-england-tools/github-runner-image:20230101-abcdef0-rt -[Commit stage/Count lines of code] 🐳 docker pull image=ghcr.io/nhs-england-tools/github-runner-image:20230101-abcdef0-rt platform=linux/amd64 username= forcePull=false -[Commit stage/Count lines of code] 🐳 docker create image=ghcr.io/nhs-england-tools/github-runner-image:20230101-abcdef0-rt platform=linux/amd64 entrypoint=["tail" "-f" "/dev/null"] cmd=[] -[Commit stage/Count lines of code] 🐳 docker run image=ghcr.io/nhs-england-tools/github-runner-image:20230101-abcdef0-rt platform=linux/amd64 entrypoint=["tail" "-f" "/dev/null"] cmd=[] -[Commit stage/Count lines of code] ⭐ Run Main Checkout code -[Commit stage/Count lines of code] ✅ Success - Main Checkout code -[Commit stage/Count lines of code] ⭐ Run Main Count lines of code -[Commit stage/Count lines of code] ⭐ Run Main Create CLOC report -[Commit stage/Count lines of code] 🐳 docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/1-composite-0.sh] user= workdir= -[Commit stage/Count lines of code] ✅ Success - Main Create CLOC report -[Commit stage/Count lines of code] ⭐ Run Main Compress CLOC report -[Commit stage/Count lines of code] 🐳 docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/1-composite-1.sh] user= workdir= -| updating: lines-of-code-report.json (deflated 68%) -[Commit stage/Count lines of code] ✅ Success - Main Compress CLOC report -[Commit stage/Count lines of code] ☁ git clone 'https://github.com/actions/upload-artifact' # ref=v3 -[Commit stage/Count lines of code] ⭐ Run Main Check prerequisites for sending the report -[Commit stage/Count lines of code] 🐳 docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/1-composite-check.sh] user= workdir= -[Commit stage/Count lines of code] ✅ Success - Main Check prerequisites for sending the report -[Commit stage/Count lines of code] ⚙ ::set-output:: secrets_exist=false -[Commit stage/Count lines of code] ☁ git clone 'https://github.com/aws-actions/configure-aws-credentials' # ref=v2 -[Commit stage/Count lines of code] ✅ Success - Main Count lines of code -[Commit stage/Count lines of code] ⚙ ::set-output:: secrets_exist=false -[Commit stage/Count lines of code] ⭐ Run Post Count lines of code -[Commit stage/Count lines of code] ✅ Success - Post Count lines of code -[Commit stage/Count lines of code] 🏁 Job succeeded -``` - -## FAQ - -1. _Can `act` be used to run Git hooks?_ - - The `act` project is a powerful tool that can run a 3rd-party GitHub Actions. You might think about using it to perform the same tasks you have set up in your CI/CD pipeline. However, it is not designed to run or replace Git hooks, like the ones managed by the `pre-commit` framework. What `act` does is mimic the actions that happen on GitHub after you push a commit or make some other change that kicks off a GitHub Actions workflow. This usually involves more rigorous tasks like building your software, running a set of tests or even deploying your code. Utilising it for any other purpose could introduce unnecessary complexity and reduce the reliability of both the development process and the software itself. It is best used only for testing locally jobs and workflows. diff --git a/infrastructure/.gitignore b/infrastructure/.gitignore deleted file mode 100644 index 22ebdac..0000000 --- a/infrastructure/.gitignore +++ /dev/null @@ -1,37 +0,0 @@ -# SEE: https://github.com/github/gitignore/blob/main/Terraform.gitignore - -# Local .terraform directories -**/.terraform/* - -# .tfstate files -*.tfstate -*.tfstate.* - -# Crash log files -crash.log -crash.*.log - -# Exclude all .tfvars files, which are likely to contain sensitive data, such as -# password, private keys, and other secrets. These should not be part of version -# control as they are data points which are potentially sensitive and subject -# to change depending on the environment. -*.tfvars -*.tfvars.json - -# Ignore override files as they are usually used to override resources locally and so -# are not checked in -override.tf -override.tf.json -*_override.tf -*_override.tf.json - -# Include override files you do wish to add to version control using negated pattern -# !example_override.tf - -# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan -# example: *tfplan* -*tfplan* - -# Ignore CLI configuration files -.terraformrc -terraform.rc diff --git a/infrastructure/environments/.gitkeep b/infrastructure/environments/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/infrastructure/images/.gitkeep b/infrastructure/images/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/infrastructure/modules/.gitkeep b/infrastructure/modules/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 0000000..43f5e8d --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,36 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +import type {JestConfigWithTsJest} from "ts-jest" + +const esModules = ["@middy"].join("|") +const jestConfig: JestConfigWithTsJest = { + preset: "ts-jest/presets/default-esm", + moduleFileExtensions: ["js", "json", "ts", "d.ts"], + moduleNameMapper: { + "^(\\.{1,2}/.*)\\.js$": "$1" + }, + transform: { + "^.+\\.ts?$": [ + "ts-jest", + { + useESM: true, + tsconfig: "./tsconfig.json" + } + ] + }, + clearMocks: true, + collectCoverage: true, + coverageDirectory: "coverage", + coverageProvider: "v8", + testMatch: ["**/tests/*.test.ts"], + testEnvironment: "node", + extensionsToTreatAsEsm: [".ts"], + verbose: true, + transformIgnorePatterns: [`node_modules/(?!${esModules})`], + rootDir: "./" +} + +export default jestConfig diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..21f05a7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,11404 @@ +{ + "name": "@nhs/eps-spine-client", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@nhs/eps-spine-client", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@aws-lambda-powertools/logger": "^1.17.0", + "aws-lambda": "^1.0.7", + "axios": "^1.6.5" + }, + "devDependencies": { + "@semantic-release/changelog": "^6.0.3", + "@types/jest": "^29.5.11", + "@typescript-eslint/eslint-plugin": "^6.19.1", + "@typescript-eslint/parser": "^6.19.1", + "axios-mock-adapter": "^1.22.0", + "conventional-changelog-eslint": "^5.0.0", + "eslint": "^8.56.0", + "eslint-plugin-import-newlines": "^1.3.4", + "jest": "^29.7.0", + "license-checker": "^25.0.1", + "prettier": "^3.2.4", + "semantic-release": "^23.0.0", + "ts-jest": "^29.1.1", + "ts-node": "^10.4.0", + "typescript": "^5.3.3" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@aws-lambda-powertools/commons": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@aws-lambda-powertools/commons/-/commons-1.18.0.tgz", + "integrity": "sha512-oSnST8Wr3WZcT/FgCUzZYUFB+qYHWMAKS0GhWbUqHZMr7I5F75jq/JbeUUF16ShOMGgnEzs5oJjizBYVTI6Oww==" + }, + "node_modules/@aws-lambda-powertools/logger": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@aws-lambda-powertools/logger/-/logger-1.18.0.tgz", + "integrity": "sha512-oB4FPMYNPjME6xsDfm7rxRBHwaH0dQl+bmO9cDbRfiCsZfQxKtTiSvROGt6AvRo+5rhPZyCdn5eAHqCJ4f5tVQ==", + "dependencies": { + "@aws-lambda-powertools/commons": "^1.18.0", + "lodash.merge": "^4.6.2" + }, + "peerDependencies": { + "@middy/core": ">=3.x" + }, + "peerDependenciesMeta": { + "@middy/core": { + "optional": true + } + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "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/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/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/@babel/helper-environment-visitor": { + "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==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "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==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@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.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "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==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "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==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@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.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "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.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "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.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.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.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "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.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "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.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.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.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "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.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "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.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@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.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.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", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.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.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", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "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", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "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.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "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.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "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.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.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", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "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.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@octokit/auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "dev": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/core": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.1.0.tgz", + "integrity": "sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g==", + "dev": true, + "dependencies": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.0.0", + "@octokit/request": "^8.0.2", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/endpoint": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz", + "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==", + "dev": true, + "dependencies": { + "@octokit/types": "^12.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/graphql": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz", + "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==", + "dev": true, + "dependencies": { + "@octokit/request": "^8.0.1", + "@octokit/types": "^12.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.1.0.tgz", + "integrity": "sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.5.tgz", + "integrity": "sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg==", + "dev": true, + "dependencies": { + "@octokit/types": "^12.4.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=5" + } + }, + "node_modules/@octokit/plugin-retry": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz", + "integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==", + "dev": true, + "dependencies": { + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=5" + } + }, + "node_modules/@octokit/plugin-throttling": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.1.3.tgz", + "integrity": "sha512-pfyqaqpc0EXh5Cn4HX9lWYsZ4gGbjnSmUILeu4u2gnuM50K/wIk9s1Pxt3lVeVwekmITgN/nJdoh43Ka+vye8A==", + "dev": true, + "dependencies": { + "@octokit/types": "^12.2.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "^5.0.0" + } + }, + "node_modules/@octokit/request": { + "version": "8.1.6", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.6.tgz", + "integrity": "sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^9.0.0", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/request-error": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz", + "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==", + "dev": true, + "dependencies": { + "@octokit/types": "^12.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/types": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.4.0.tgz", + "integrity": "sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^19.1.0" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "dev": true, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dev": true, + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", + "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", + "dev": true, + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@semantic-release/changelog": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", + "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", + "dev": true, + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "fs-extra": "^11.0.0", + "lodash": "^4.17.4" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0" + } + }, + "node_modules/@semantic-release/commit-analyzer": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-11.1.0.tgz", + "integrity": "sha512-cXNTbv3nXR2hlzHjAMgbuiQVtvWHTlwwISt60B+4NZv01y/QRY7p2HcJm8Eh2StzcTJoNnflvKjHH/cjFS7d5g==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-filter": "^4.0.0", + "conventional-commits-parser": "^5.0.0", + "debug": "^4.0.0", + "import-from-esm": "^1.0.3", + "lodash-es": "^4.17.21", + "micromatch": "^4.0.2" + }, + "engines": { + "node": "^18.17 || >=20.6.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", + "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", + "dev": true, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@semantic-release/github": { + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-9.2.6.tgz", + "integrity": "sha512-shi+Lrf6exeNZF+sBhK+P011LSbhmIAoUEgEY6SsxF8irJ+J2stwI5jkyDQ+4gzYyDImzV6LCKdYB9FXnQRWKA==", + "dev": true, + "dependencies": { + "@octokit/core": "^5.0.0", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/plugin-retry": "^6.0.0", + "@octokit/plugin-throttling": "^8.0.0", + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "debug": "^4.3.4", + "dir-glob": "^3.0.1", + "globby": "^14.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "issue-parser": "^6.0.0", + "lodash-es": "^4.17.21", + "mime": "^4.0.0", + "p-filter": "^4.0.0", + "url-join": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/github/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/github/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/globby": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.0.tgz", + "integrity": "sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==", + "dev": true, + "dependencies": { + "@sindresorhus/merge-streams": "^1.0.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.2.tgz", + "integrity": "sha512-owtf3RjyPvRE63iUKZ5/xO4uqjRpVQDUB9+nnXj0xwfIeM9pRl+cG+zGDzdftR4m3f2s4Wyf3SexW+kF5DFtWA==", + "dev": true, + "dependencies": { + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "execa": "^8.0.0", + "fs-extra": "^11.0.0", + "lodash-es": "^4.17.21", + "nerf-dart": "^1.0.0", + "normalize-url": "^8.0.0", + "npm": "^10.0.0", + "rc": "^1.2.8", + "read-pkg": "^9.0.0", + "registry-auth-token": "^5.0.0", + "semver": "^7.1.2", + "tempy": "^3.0.0" + }, + "engines": { + "node": "^18.17 || >=20" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/npm/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@semantic-release/npm/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/npm-run-path": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/release-notes-generator": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-12.1.0.tgz", + "integrity": "sha512-g6M9AjUKAZUZnxaJZnouNBeDNTCUrJ5Ltj+VJ60gJeDaRRahcHsry9HW8yKrnKkKNkx5lbWiEP1FPMqVNQz8Kg==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^7.0.0", + "conventional-changelog-writer": "^7.0.0", + "conventional-commits-filter": "^4.0.0", + "conventional-commits-parser": "^5.0.0", + "debug": "^4.0.0", + "get-stream": "^7.0.0", + "import-from-esm": "^1.0.3", + "into-stream": "^7.0.0", + "lodash-es": "^4.17.21", + "read-pkg-up": "^11.0.0" + }, + "engines": { + "node": "^18.17 || >=20.6.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", + "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz", + "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.11", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", + "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.11.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.13.tgz", + "integrity": "sha512-5G4zQwdiQBSWYTDAH1ctw2eidqdhMJaNsiIDKHFr55ihz5Trl2qqR8fdrT732yPBho5gkNxXm67OxWFBqX9aPg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.20.0.tgz", + "integrity": "sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.20.0", + "@typescript-eslint/type-utils": "6.20.0", + "@typescript-eslint/utils": "6.20.0", + "@typescript-eslint/visitor-keys": "6.20.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.20.0.tgz", + "integrity": "sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.20.0", + "@typescript-eslint/types": "6.20.0", + "@typescript-eslint/typescript-estree": "6.20.0", + "@typescript-eslint/visitor-keys": "6.20.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.20.0.tgz", + "integrity": "sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.20.0", + "@typescript-eslint/visitor-keys": "6.20.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.20.0.tgz", + "integrity": "sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.20.0", + "@typescript-eslint/utils": "6.20.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.20.0.tgz", + "integrity": "sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.20.0.tgz", + "integrity": "sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.20.0", + "@typescript-eslint/visitor-keys": "6.20.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.20.0.tgz", + "integrity": "sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg==", + "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.20.0", + "@typescript-eslint/types": "6.20.0", + "@typescript-eslint/typescript-estree": "6.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.20.0.tgz", + "integrity": "sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.20.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "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/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/argv-formatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", + "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", + "dev": true + }, + "node_modules/array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-lambda": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/aws-lambda/-/aws-lambda-1.0.7.tgz", + "integrity": "sha512-9GNFMRrEMG5y3Jvv+V4azWvc+qNWdWLTjDdhf/zgMlz8haaaLWv0xeAIWxz9PuWUBawsVxy0zZotjCdR3Xq+2w==", + "dependencies": { + "aws-sdk": "^2.814.0", + "commander": "^3.0.2", + "js-yaml": "^3.14.1", + "watchpack": "^2.0.0-beta.10" + }, + "bin": { + "lambda": "bin/lambda" + } + }, + "node_modules/aws-sdk": { + "version": "2.1547.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1547.0.tgz", + "integrity": "sha512-jk7u3KtDZ5F20k2X6D2FhndpLGkt3ZuNfRU5crp+fI6B/GFj/S91GJDoZh/Yw3rW+CemY1sFmdFT8ReA2G8WkA==", + "dependencies": { + "buffer": "4.9.2", + "events": "1.1.1", + "ieee754": "1.1.13", + "jmespath": "0.16.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "util": "^0.12.4", + "uuid": "8.0.0", + "xml2js": "0.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios-mock-adapter": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-1.22.0.tgz", + "integrity": "sha512-dmI0KbkyAhntUR05YY96qg2H6gg0XMl2+qTW0xmYg6Up+BFBAJYRLROMXRdDEL06/Wqwa0TJThAYvFtSFdRCZw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "is-buffer": "^2.0.5" + }, + "peerDependencies": { + "axios": ">= 0.17.0" + } + }, + "node_modules/babel-jest": { + "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.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "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": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/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/babel-plugin-jest-hoist": { + "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", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "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.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true + }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", + "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001580", + "electron-to-chromium": "^1.4.648", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001581", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz", + "integrity": "sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", + "dev": true, + "dependencies": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + }, + "bin": { + "cdl": "bin/cdl.js" + } + }, + "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/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "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/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/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-eslint": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-5.0.0.tgz", + "integrity": "sha512-6JtLWqAQIeJLn/OzUlYmzd9fKeNSWmQVim9kql+v4GrZwLx807kAJl3IJVc3jTYfVKWLxhC3BGUxYiuVEcVjgA==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", + "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", + "dev": true, + "dependencies": { + "conventional-commits-filter": "^4.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "meow": "^12.0.1", + "semver": "^7.5.2", + "split2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-commits-filter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", + "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "dev": true, + "dependencies": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "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==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "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-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "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" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.651", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.651.tgz", + "integrity": "sha512-jjks7Xx+4I7dslwsbaFocSwqBbGHQmuXBJUK9QBZTIrzPq3pzn6Uf2szFSP728FtLYE3ldiccmlkOM/zhGKCpA==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "dev": true + }, + "node_modules/env-ci": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.0.0.tgz", + "integrity": "sha512-apikxMgkipkgTvMdRT9MNqWx5VLOci79F4VBd7Op/7OPjjoanjdAvn6fglMCCEf/1bAh8eOiuEVCUs4V3qP3nQ==", + "dev": true, + "dependencies": { + "execa": "^8.0.0", + "java-properties": "^1.0.2" + }, + "engines": { + "node": "^18.17 || >=20.6.1" + } + }, + "node_modules/env-ci/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/env-ci/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/env-ci/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/npm-run-path": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/env-ci/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.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", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-import-newlines": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-newlines/-/eslint-plugin-import-newlines-1.3.4.tgz", + "integrity": "sha512-Lmf/BbK+EQKUfjKPcZpslE/KTGYlgaI8ZJ/sYzdbb3BVTg5+GmLBLHBjsUKNEVRM1SEhDTF/didtOSYKi4tSnQ==", + "dev": true, + "bin": { + "import-linter": "lib/index.js" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "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" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "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.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" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz", + "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/figures": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.0.1.tgz", + "integrity": "sha512-0oY/olScYD4IhQ8u//gCPA4F3mlTn2dacYmiDm/mbDQvpmLjV4uH+zhsQ5IyXRyvqkvtUkXkNdGvg5OFJTCsuQ==", + "dev": true, + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up-simple": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", + "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-versions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", + "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", + "dev": true, + "dependencies": { + "semver-regex": "^4.0.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "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==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/git-log-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", + "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==", + "dev": true, + "dependencies": { + "argv-formatter": "~1.0.0", + "spawn-error-forwarder": "~1.0.0", + "split2": "~1.0.0", + "stream-combiner2": "~1.1.1", + "through2": "~2.0.0", + "traverse": "~0.6.6" + } + }, + "node_modules/git-log-parser/node_modules/split2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", + "dev": true, + "dependencies": { + "through2": "~2.0.0" + } + }, + "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/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "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/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "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==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hook-std": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", + "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-from-esm": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.3.tgz", + "integrity": "sha512-U3Qt/CyfFpTUv6LOP2jRTLYjphH6zg3okMfHbyqRa/W2w6hr8OsJWVggNlR4jxuojQy81TgTJTxgSkyoteRGMQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "import-meta-resolve": "^4.0.0" + }, + "engines": { + "node": ">=16.20" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", + "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/index-to-position": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", + "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/into-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", + "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", + "dev": true, + "dependencies": { + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "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-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-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "dev": true, + "dependencies": { + "text-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", + "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/issue-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", + "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", + "dev": true, + "dependencies": { + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", + "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "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/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/java-properties": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/jest": { + "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.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "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": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "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.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.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.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "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.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", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "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.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.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.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "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.6.3", + "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-docblock": { + "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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "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.3", + "chalk": "^4.0.0", + "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" + } + }, + "node_modules/jest-environment-node": { + "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.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "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.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.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.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.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "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.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.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.7.0", + "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-message-util": { + "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.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "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.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "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.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.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "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.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "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.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.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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "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.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.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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "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", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@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.7.0", + "graceful-fs": "^4.2.9", + "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.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util": { + "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.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "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.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "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.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.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "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.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jmespath": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "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", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/license-checker": { + "version": "25.0.1", + "resolved": "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz", + "integrity": "sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "debug": "^3.1.0", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "read-installed": "~4.0.3", + "semver": "^5.5.0", + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0", + "spdx-satisfies": "^4.0.0", + "treeify": "^1.1.0" + }, + "bin": { + "license-checker": "bin/license-checker" + } + }, + "node_modules/license-checker/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/license-checker/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/license-checker/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/license-checker/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/license-checker/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/license-checker/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/license-checker/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/license-checker/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/license-checker/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true + }, + "node_modules/lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", + "dev": true + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "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/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/marked": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-11.2.0.tgz", + "integrity": "sha512-HR0m3bvu0jAPYiIvLUUQtdg1g6D247//lvcekpHO1WMvbwDlwSkZAX9Lw4F4YHE1T0HaaNve0tuAWuV1UJ6vtw==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/marked-terminal": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-6.2.0.tgz", + "integrity": "sha512-ubWhwcBFHnXsjYNsu+Wndpg0zhY4CahSpPlA70PlO0rR9r2sZpkyU+rkCsOWH+KMEkx847UpALON+HWgxowFtw==", + "dev": true, + "dependencies": { + "ansi-escapes": "^6.2.0", + "cardinal": "^2.1.1", + "chalk": "^5.3.0", + "cli-table3": "^0.6.3", + "node-emoji": "^2.1.3", + "supports-hyperlinks": "^3.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "marked": ">=1 <12" + } + }, + "node_modules/marked-terminal/node_modules/ansi-escapes": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", + "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", + "dev": true, + "dependencies": { + "type-fest": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/marked-terminal/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/marked-terminal/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.1.tgz", + "integrity": "sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa" + ], + "bin": { + "mime": "bin/cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/nerf-dart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", + "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", + "dev": true + }, + "node_modules/node-emoji": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", + "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.4.0.tgz", + "integrity": "sha512-RS7Mx0OVfXlOcQLRePuDIYdFCVBPCNapWHplDK+mh7GDdP/Tvor4ocuybRRPSvfcRb2vjRJt1fHCqw3cr8qACQ==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/config", + "@npmcli/fs", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/promise-spawn", + "@npmcli/run-script", + "@sigstore/tuf", + "abbrev", + "archy", + "cacache", + "chalk", + "ci-info", + "cli-columns", + "cli-table3", + "columnify", + "fastest-levenshtein", + "fs-minipass", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minimatch", + "minipass", + "minipass-pipeline", + "ms", + "node-gyp", + "nopt", + "normalize-package-data", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "npmlog", + "p-map", + "pacote", + "parse-conflict-json", + "proc-log", + "qrcode-terminal", + "read", + "semver", + "spdx-expression-parse", + "ssri", + "supports-color", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dev": true, + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^7.2.1", + "@npmcli/config": "^8.0.2", + "@npmcli/fs": "^3.1.0", + "@npmcli/map-workspaces": "^3.0.4", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.1", + "@npmcli/run-script": "^7.0.4", + "@sigstore/tuf": "^2.3.0", + "abbrev": "^2.0.0", + "archy": "~1.0.0", + "cacache": "^18.0.2", + "chalk": "^5.3.0", + "ci-info": "^4.0.0", + "cli-columns": "^4.0.0", + "cli-table3": "^0.6.3", + "columnify": "^1.6.0", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.3", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "hosted-git-info": "^7.0.1", + "ini": "^4.1.1", + "init-package-json": "^6.0.0", + "is-cidr": "^5.0.3", + "json-parse-even-better-errors": "^3.0.1", + "libnpmaccess": "^8.0.1", + "libnpmdiff": "^6.0.3", + "libnpmexec": "^7.0.4", + "libnpmfund": "^5.0.1", + "libnpmhook": "^10.0.0", + "libnpmorg": "^6.0.1", + "libnpmpack": "^6.0.3", + "libnpmpublish": "^9.0.2", + "libnpmsearch": "^7.0.0", + "libnpmteam": "^6.0.0", + "libnpmversion": "^5.0.1", + "make-fetch-happen": "^13.0.0", + "minimatch": "^9.0.3", + "minipass": "^7.0.4", + "minipass-pipeline": "^1.2.4", + "ms": "^2.1.2", + "node-gyp": "^10.0.1", + "nopt": "^7.2.0", + "normalize-package-data": "^6.0.0", + "npm-audit-report": "^5.0.0", + "npm-install-checks": "^6.3.0", + "npm-package-arg": "^11.0.1", + "npm-pick-manifest": "^9.0.0", + "npm-profile": "^9.0.0", + "npm-registry-fetch": "^16.1.0", + "npm-user-validate": "^2.0.0", + "npmlog": "^7.0.1", + "p-map": "^4.0.0", + "pacote": "^17.0.6", + "parse-conflict-json": "^3.0.1", + "proc-log": "^3.0.0", + "qrcode-terminal": "^0.12.0", + "read": "^2.1.0", + "semver": "^7.5.4", + "spdx-expression-parse": "^3.0.1", + "ssri": "^10.0.5", + "supports-color": "^9.4.0", + "tar": "^6.2.0", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^5.0.0", + "which": "^4.0.0", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/@colors/colors": { + "version": "1.5.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/agent": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "7.3.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^7.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/query": "^3.0.1", + "@npmcli/run-script": "^7.0.2", + "bin-links": "^4.0.1", + "cacache": "^18.0.0", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^7.0.1", + "json-parse-even-better-errors": "^3.0.0", + "json-stringify-nice": "^1.1.4", + "minimatch": "^9.0.0", + "nopt": "^7.0.0", + "npm-install-checks": "^6.2.0", + "npm-package-arg": "^11.0.1", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "npmlog": "^7.0.1", + "pacote": "^17.0.4", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^3.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.5", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/config": { + "version": "8.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/map-workspaces": "^3.0.2", + "ci-info": "^4.0.0", + "ini": "^4.1.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/disparity-colors": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ansi-styles": "^4.3.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/disparity-colors/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "5.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^18.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^17.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "7.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/query": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "7.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/@sigstore/bundle": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/core": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/protobuf-specs": { + "version": "0.2.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/sign": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.1.1", + "@sigstore/core": "^0.2.0", + "@sigstore/protobuf-specs": "^0.2.1", + "make-fetch-happen": "^13.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/tuf": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.1", + "tuf-js": "^2.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/verify": { + "version": "0.1.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.1.1", + "@sigstore/core": "^0.2.0", + "@sigstore/protobuf-specs": "^0.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@tufjs/models": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/agent-base": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/are-we-there-yet": { + "version": "4.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bin-links": { + "version": "4.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm/node_modules/builtins": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/npm/node_modules/cacache": { + "version": "18.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/chalk": { + "version": "5.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ci-info": { + "version": "4.0.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "4.0.3", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^5.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/cli-table3": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/npm/node_modules/clone": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/color-support": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/npm/node_modules/columnify": { + "version": "1.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/defaults": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/diff": { + "version": "5.1.0", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/eastasianwidth": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/exponential-backoff": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.16", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/npm/node_modules/foreground-child": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/function-bind": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/gauge": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^4.0.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "10.3.10", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.11", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hasown": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "7.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "7.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "6.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ini": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^11.0.0", + "promzard": "^1.0.0", + "read": "^2.0.0", + "read-package-json": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/ip": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "5.0.3", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "4.0.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/is-core-module": { + "version": "2.13.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/jackspeak": { + "version": "2.3.6", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "5.5.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^11.0.1", + "npm-registry-fetch": "^16.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "6.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1", + "@npmcli/disparity-colors": "^3.0.0", + "@npmcli/installed-package-contents": "^2.0.2", + "binary-extensions": "^2.2.0", + "diff": "^5.1.0", + "minimatch": "^9.0.0", + "npm-package-arg": "^11.0.1", + "pacote": "^17.0.4", + "tar": "^6.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "7.0.7", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", + "ci-info": "^4.0.0", + "npm-package-arg": "^11.0.1", + "npmlog": "^7.0.1", + "pacote": "^17.0.4", + "proc-log": "^3.0.0", + "read": "^2.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "5.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "10.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^16.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^16.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "6.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", + "npm-package-arg": "^11.0.1", + "pacote": "^17.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "9.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ci-info": "^4.0.0", + "normalize-package-data": "^6.0.0", + "npm-package-arg": "^11.0.1", + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.7", + "sigstore": "^2.2.0", + "ssri": "^10.0.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "7.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^16.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^16.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "5.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.3", + "@npmcli/run-script": "^7.0.2", + "json-parse-even-better-errors": "^3.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "10.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "13.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "7.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-json-stream": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "10.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "7.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "6.3.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "11.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^6.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "9.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "9.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "16.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npmlog": { + "version": "7.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/pacote": { + "version": "17.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^7.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^7.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/path-scurry": { + "version": "1.10.1", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/postcss-selector-parser": { + "version": "6.0.15", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/proc-log": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/read": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~1.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-package-json": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/semver": { + "version": "7.5.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/sigstore": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.1.1", + "@sigstore/core": "^0.2.0", + "@sigstore/protobuf-specs": "^0.2.1", + "@sigstore/sign": "^2.2.1", + "@sigstore/tuf": "^2.3.0", + "@sigstore/verify": "^0.1.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.7.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.2.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.16", + "dev": true, + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/ssri": { + "version": "10.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "9.4.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/tuf-js": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/models": "2.0.0", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/npm/node_modules/which": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/which/node_modules/isexe": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/npm/node_modules/wide-align": { + "version": "1.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/npm/node_modules/wrap-ansi": { + "version": "8.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/p-each-series": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", + "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", + "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", + "dev": true, + "dependencies": { + "p-map": "^7.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.1.tgz", + "integrity": "sha512-2wnaR0XL/FDOj+TgpDuRb2KTjLnu3Fma6b1ZUwGY7LcqenMcvP/YFpjpbPKY6WVGsbuJZRuoUz8iPrt8ORnAFw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-reduce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", + "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz", + "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "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.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "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/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/read-installed": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz", + "integrity": "sha512-O03wg/IYuV/VtnK2h/KXEt9VIbMUFbk3ERG0Iu4FhLZw0EP0T9znqrYDGn6ncbEsXUFaUjiVAWXHzxwt3lhRPQ==", + "dev": true, + "dependencies": { + "debuglog": "^1.0.1", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "slide": "~1.1.3", + "util-extend": "^1.0.1" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.2" + } + }, + "node_modules/read-installed/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "dev": true, + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "node_modules/read-pkg": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-11.0.0.tgz", + "integrity": "sha512-LOVbvF1Q0SZdjClSefZ0Nz5z8u+tIE7mV5NibzmE9VYmDe9CaBbAVtz1veOSZbofrdsilxuDAYnFenukZVp8/Q==", + "deprecated": "Renamed to read-package-up", + "dev": true, + "dependencies": { + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.2.tgz", + "integrity": "sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/read-pkg/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", + "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "index-to-position": "^0.1.2", + "type-fest": "^4.7.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.2.tgz", + "integrity": "sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "node_modules/redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", + "dev": true, + "dependencies": { + "esprima": "~4.0.0" + } + }, + "node_modules/registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dev": true, + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" + }, + "node_modules/semantic-release": { + "version": "23.0.0", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-23.0.0.tgz", + "integrity": "sha512-Jz7jEWO2igTtske112gC4PPE2whCMVrsgxUPG3/SZI7VE357suIUZFlJd1Yu0g2I6RPc2HxNEfUg7KhmDTjwqg==", + "dev": true, + "dependencies": { + "@semantic-release/commit-analyzer": "^11.0.0", + "@semantic-release/error": "^4.0.0", + "@semantic-release/github": "^9.0.0", + "@semantic-release/npm": "^11.0.0", + "@semantic-release/release-notes-generator": "^12.0.0", + "aggregate-error": "^5.0.0", + "cosmiconfig": "^9.0.0", + "debug": "^4.0.0", + "env-ci": "^11.0.0", + "execa": "^8.0.0", + "figures": "^6.0.0", + "find-versions": "^5.1.0", + "get-stream": "^6.0.0", + "git-log-parser": "^1.2.0", + "hook-std": "^3.0.0", + "hosted-git-info": "^7.0.0", + "import-from-esm": "^1.3.1", + "lodash-es": "^4.17.21", + "marked": "^11.0.0", + "marked-terminal": "^6.0.0", + "micromatch": "^4.0.2", + "p-each-series": "^3.0.0", + "p-reduce": "^3.0.0", + "read-pkg-up": "^11.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.3.2", + "semver-diff": "^4.0.0", + "signale": "^1.2.1", + "yargs": "^17.5.1" + }, + "bin": { + "semantic-release": "bin/semantic-release.js" + }, + "engines": { + "node": ">=20.8.1" + } + }, + "node_modules/semantic-release/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/semantic-release/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/semantic-release/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/semantic-release/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/npm-run-path": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver-regex": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", + "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver/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/semver/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/set-function-length": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", + "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "dependencies": { + "define-data-property": "^1.1.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/signale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "dev": true, + "dependencies": { + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/signale/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/signale/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/signale/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/signale/node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "dev": true, + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spawn-error-forwarder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", + "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==", + "dev": true + }, + "node_modules/spdx-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz", + "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==", + "dev": true, + "dependencies": { + "array-find-index": "^1.0.2", + "spdx-expression-parse": "^3.0.0", + "spdx-ranges": "^2.0.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz", + "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true + }, + "node_modules/spdx-ranges": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz", + "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==", + "dev": true + }, + "node_modules/spdx-satisfies": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz", + "integrity": "sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA==", + "dev": true, + "dependencies": { + "spdx-compare": "^1.0.0", + "spdx-expression-parse": "^3.0.0", + "spdx-ranges": "^2.0.0" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "dev": true, + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/supports-hyperlinks": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/tempy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", + "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", + "dev": true, + "dependencies": { + "is-stream": "^3.0.0", + "temp-dir": "^3.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/text-extensions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/traverse": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", + "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/treeify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", + "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-jest": { + "version": "29.1.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", + "integrity": "sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "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-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "dev": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-join": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/util-extend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz", + "integrity": "sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==", + "dev": true + }, + "node_modules/uuid": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "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/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..fc00901 --- /dev/null +++ b/package.json @@ -0,0 +1,53 @@ +{ + "name": "@nhs/eps-spine-client", + "version": "1.0.0", + "description": "The code to invoke the Spine client", + "scripts": { + "build": "tsc", + "lint": "eslint . --fix", + "test": "POWERTOOLS_DEV=true NODE_OPTIONS=--experimental-vm-modules jest --no-cache --coverage", + "check-licenses": "license-checker --failOn GPL --failOn LGPL" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/NHSDigital/nhs-eps-spine-client.git" + }, + "keywords": [], + "author": "NHSDigital", + "license": "MIT", + "private": false, + "publishConfig": { + "registry": "https://npm.pkg.github.com" + }, + "type": "module", + "devDependencies": { + "@semantic-release/changelog": "^6.0.3", + "@types/jest": "^29.5.11", + "@typescript-eslint/eslint-plugin": "^6.19.1", + "@typescript-eslint/parser": "^6.19.1", + "axios-mock-adapter": "^1.22.0", + "conventional-changelog-eslint": "^5.0.0", + "eslint": "^8.56.0", + "eslint-plugin-import-newlines": "^1.3.4", + "jest": "^29.7.0", + "license-checker": "^25.0.1", + "prettier": "^3.2.4", + "semantic-release": "^23.0.0", + "ts-jest": "^29.1.1", + "ts-node": "^10.4.0", + "typescript": "^5.3.3" + }, + "dependencies": { + "@aws-lambda-powertools/logger": "^1.17.0", + "aws-lambda": "^1.0.7", + "axios": "^1.6.5" + }, + "bugs": { + "url": "https://github.com/NHSDigital/nhs-eps-spine-client/issues" + }, + "homepage": "https://github.com/NHSDigital/nhs-eps-spine-client#readme", + "files": [ + "lib" + ], + "main": "lib/index.js" +} diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..5828ab3 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,246 @@ +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. + +[[package]] +name = "cfgv" +version = "3.4.0" +description = "Validate configuration and produce human readable error messages." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, + {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, +] + +[[package]] +name = "distlib" +version = "0.3.8" +description = "Distribution utilities" +optional = false +python-versions = "*" +files = [ + {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, + {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, +] + +[[package]] +name = "filelock" +version = "3.13.1" +description = "A platform independent file lock." +optional = false +python-versions = ">=3.8" +files = [ + {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"}, + {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"}, +] + +[package.extras] +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] +typing = ["typing-extensions (>=4.8)"] + +[[package]] +name = "identify" +version = "2.5.33" +description = "File identification library for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "identify-2.5.33-py2.py3-none-any.whl", hash = "sha256:d40ce5fcd762817627670da8a7d8d8e65f24342d14539c59488dc603bf662e34"}, + {file = "identify-2.5.33.tar.gz", hash = "sha256:161558f9fe4559e1557e1bff323e8631f6a0e4837f7497767c1782832f16b62d"}, +] + +[package.extras] +license = ["ukkonen"] + +[[package]] +name = "nodeenv" +version = "1.8.0" +description = "Node.js virtual environment builder" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" +files = [ + {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"}, + {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"}, +] + +[package.dependencies] +setuptools = "*" + +[[package]] +name = "pip-licenses" +version = "4.3.4" +description = "Dump the software license list of Python packages installed with pip." +optional = false +python-versions = "~=3.8" +files = [ + {file = "pip-licenses-4.3.4.tar.gz", hash = "sha256:9c6c9c3252b976d08735bdffb0eb4c5eaa50dfd46f5e075532c0248ffe94fed1"}, + {file = "pip_licenses-4.3.4-py3-none-any.whl", hash = "sha256:85706ec30781076eb611fed3934f27a1f18437d3211f747567cd3c4e943fce1b"}, +] + +[package.dependencies] +prettytable = ">=2.3.0" + +[package.extras] +test = ["docutils", "mypy", "pytest-cov", "pytest-pycodestyle", "pytest-runner"] + +[[package]] +name = "platformdirs" +version = "4.2.0" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +optional = false +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, + {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, +] + +[package.extras] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] + +[[package]] +name = "pre-commit" +version = "3.5.0" +description = "A framework for managing and maintaining multi-language pre-commit hooks." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pre_commit-3.5.0-py2.py3-none-any.whl", hash = "sha256:841dc9aef25daba9a0238cd27984041fa0467b4199fc4852e27950664919f660"}, + {file = "pre_commit-3.5.0.tar.gz", hash = "sha256:5804465c675b659b0862f07907f96295d490822a450c4c40e747d0b1c6ebcb32"}, +] + +[package.dependencies] +cfgv = ">=2.0.0" +identify = ">=1.0.0" +nodeenv = ">=0.11.1" +pyyaml = ">=5.1" +virtualenv = ">=20.10.0" + +[[package]] +name = "prettytable" +version = "3.9.0" +description = "A simple Python library for easily displaying tabular data in a visually appealing ASCII table format" +optional = false +python-versions = ">=3.8" +files = [ + {file = "prettytable-3.9.0-py3-none-any.whl", hash = "sha256:a71292ab7769a5de274b146b276ce938786f56c31cf7cea88b6f3775d82fe8c8"}, + {file = "prettytable-3.9.0.tar.gz", hash = "sha256:f4ed94803c23073a90620b201965e5dc0bccf1760b7a7eaf3158cab8aaffdf34"}, +] + +[package.dependencies] +wcwidth = "*" + +[package.extras] +tests = ["pytest", "pytest-cov", "pytest-lazy-fixture"] + +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "setuptools" +version = "69.0.3" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, + {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "virtualenv" +version = "20.25.0" +description = "Virtual Python Environment builder" +optional = false +python-versions = ">=3.7" +files = [ + {file = "virtualenv-20.25.0-py3-none-any.whl", hash = "sha256:4238949c5ffe6876362d9c0180fc6c3a824a7b12b80604eeb8085f2ed7460de3"}, + {file = "virtualenv-20.25.0.tar.gz", hash = "sha256:bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b"}, +] + +[package.dependencies] +distlib = ">=0.3.7,<1" +filelock = ">=3.12.2,<4" +platformdirs = ">=3.9.1,<5" + +[package.extras] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] + +[[package]] +name = "wcwidth" +version = "0.2.13" +description = "Measures the displayed width of unicode strings in a terminal" +optional = false +python-versions = "*" +files = [ + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, +] + +[metadata] +lock-version = "2.0" +python-versions = "^3.8" +content-hash = "d060c99868c8781ddfaad9603119ec338289168b8f1fc1bfcf514b7e85629849" diff --git a/poetry.toml b/poetry.toml new file mode 100644 index 0000000..5fcef8c --- /dev/null +++ b/poetry.toml @@ -0,0 +1,3 @@ +[virtualenvs] +in-project = true +prefer-active-python = true diff --git a/project.code-workspace b/project.code-workspace deleted file mode 100644 index fbcf948..0000000 --- a/project.code-workspace +++ /dev/null @@ -1,8 +0,0 @@ -{ - "folders": [ - { - "name": "Repository Template", - "path": "." - } - ] -} diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..6b36c24 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,31 @@ +[project] +python = "^3.8" + +[tool.poetry] +name = "nhs-eps-spine-client" +description = "NHS EPS Spine Client" +version = "0.0.1-alpha" +authors = [ + "Anthony Brown ", + "Matthew Popat ", + "Phil Gee ", + "Kris Szlapa ", + "Jack Spagnoli ", + "Tom Smith ", + "Adam Brown ", + "Sean Steberis ", + "Jonathan Welch ", + "Natasa Fragkou ", +] +readme = "README.md" +license = "MIT" +repository = "https://github.com/NHSDigital/nhs-eps-spine-client" + +[tool.poetry.dependencies] +python = "^3.8" + +[tool.poetry.dev-dependencies] +pip-licenses = "^4.3.3" +pre-commit = "^3.5.0" + +[tool.poetry.scripts] diff --git a/scripts/check_python_licenses.sh b/scripts/check_python_licenses.sh new file mode 100755 index 0000000..1a8148f --- /dev/null +++ b/scripts/check_python_licenses.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -euo pipefail + +LICENSES=$(poetry run pip-licenses) +INCOMPATIBLE_LIBS=$(echo "$LICENSES" | grep 'GPL' || true) + +if [[ -z $INCOMPATIBLE_LIBS ]]; then + exit 0 +else + echo "The following libraries were found which are not compatible with this project's license:" + echo "$INCOMPATIBLE_LIBS" + exit 1 +fi diff --git a/scripts/config/gitleaks.toml b/scripts/config/gitleaks.toml deleted file mode 100644 index af5f0bb..0000000 --- a/scripts/config/gitleaks.toml +++ /dev/null @@ -1,19 +0,0 @@ -# SEE: https://github.com/gitleaks/gitleaks/#configuration - -[extend] -useDefault = true # SEE: https://github.com/gitleaks/gitleaks/blob/master/config/gitleaks.toml - -[[rules]] -description = "IPv4" -id = "ipv4" -regex = '''[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}''' - -[rules.allowlist] -regexTarget = "match" -regexes = [ - # Exclude the private network IPv4 addresses as well as the DNS servers for Google and OpenDNS - '''(127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|10\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|172\.(1[6-9]|2[0-9]|3[0-1])\.[0-9]{1,3}\.[0-9]{1,3}|192\.168\.[0-9]{1,3}\.[0-9]{1,3}|0\.0\.0\.0|255\.255\.255\.255|8\.8\.8\.8|8\.8\.4\.4|208\.67\.222\.222|208\.67\.220\.220)''', -] - -[allowlist] -paths = ['''.terraform.lock.hcl''', '''poetry.lock''', '''yarn.lock'''] diff --git a/scripts/config/grype.yaml b/scripts/config/grype.yaml deleted file mode 100644 index 80c752e..0000000 --- a/scripts/config/grype.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# If using SBOM input, automatically generate CPEs when packages have none -add-cpes-if-none: true - -# ignore: -# # This is the full set of supported rule fields: -# - vulnerability: CVE-2008-4318 -# fix-state: unknown -# package: -# name: libcurl -# version: 1.5.1 -# type: npm -# location: "/usr/local/lib/node_modules/**" - -# # We can make rules to match just by vulnerability ID: -# - vulnerability: CVE-2014-54321 - -# # ...or just by a single package field: -# - package: -# type: gem diff --git a/scripts/config/hadolint.yaml b/scripts/config/hadolint.yaml deleted file mode 100644 index d01a9ce..0000000 --- a/scripts/config/hadolint.yaml +++ /dev/null @@ -1,7 +0,0 @@ -# SEE: https://github.com/hadolint/hadolint#configure - -trustedRegistries: - - docker.io - - "*.gcr.io" - - "*.dkr.ecr.*.amazonaws.com" - - "*.azurecr.io" diff --git a/scripts/config/markdownlint.yaml b/scripts/config/markdownlint.yaml deleted file mode 100644 index 554ab55..0000000 --- a/scripts/config/markdownlint.yaml +++ /dev/null @@ -1,11 +0,0 @@ -# SEE: https://github.com/DavidAnson/markdownlint/blob/main/schema/.markdownlint.yaml - -# https://github.com/DavidAnson/markdownlint/blob/main/doc/md013.md -MD013: false - -# https://github.com/DavidAnson/markdownlint/blob/main/doc/md024.md -MD024: - siblings_only: true - -# https://github.com/DavidAnson/markdownlint/blob/main/doc/md033.md -MD033: false diff --git a/scripts/config/pre-commit.yaml b/scripts/config/pre-commit.yaml deleted file mode 100644 index 36ee902..0000000 --- a/scripts/config/pre-commit.yaml +++ /dev/null @@ -1,32 +0,0 @@ -repos: -- repo: local - hooks: - - id: scan-secrets - name: Scan Secrets - entry: ./scripts/githooks/scan-secrets.sh - args: ["check=staged-changes"] - language: script - pass_filenames: false -- repo: local - hooks: - - id: check-file-format - name: Check File Format - entry: ./scripts/githooks/check-file-format.sh - args: ["check=staged-changes"] - language: script - pass_filenames: false -- repo: local - hooks: - - id: check-markdown-format - name: Check Markdown Format - entry: ./scripts/githooks/check-markdown-format.sh - args: ["check=staged-changes"] - language: script - pass_filenames: false -- repo: local - hooks: - - id: check-terraform-format - name: Check Terraform Format - entry: ./scripts/githooks/check-terraform-format.sh - language: script - pass_filenames: false diff --git a/scripts/config/repository-template.yaml b/scripts/config/repository-template.yaml deleted file mode 100644 index eb37cee..0000000 --- a/scripts/config/repository-template.yaml +++ /dev/null @@ -1 +0,0 @@ -update-from-template: diff --git a/scripts/config/sonar-scanner.properties b/scripts/config/sonar-scanner.properties deleted file mode 100644 index 147891d..0000000 --- a/scripts/config/sonar-scanner.properties +++ /dev/null @@ -1,9 +0,0 @@ -# Please DO NOT set the following properties `sonar.organization` and `sonar.projectKey` in this file. They must be stored as `SONAR_ORGANISATION_KEY` and `SONAR_PROJECT_KEY` GitHub secrets. - -sonar.host.url=https://sonarcloud.io -sonar.qualitygate.wait=true -sonar.sourceEncoding=UTF-8 -sonar.sources=. - -#sonar.python.coverage.reportPaths=.coverage/coverage.xml -#sonar.[javascript|typescript].lcov.reportPaths=.coverage/lcov.info diff --git a/scripts/config/syft.yaml b/scripts/config/syft.yaml deleted file mode 100644 index e9f5f58..0000000 --- a/scripts/config/syft.yaml +++ /dev/null @@ -1,83 +0,0 @@ -# a list of globs to exclude from scanning. same as --exclude ; for example: -# exclude: -# - "/etc/**" -# - "./out/**/*.json" -exclude: - - ./.git/** - -# maximum number of workers used to process the list of package catalogers in parallel -parallelism: 3 - -# cataloging packages is exposed through the packages and power-user subcommands -package: - # search within archives that do contain a file index to search against (zip) - # note: for now this only applies to the java package cataloger - # SYFT_PACKAGE_SEARCH_INDEXED_ARCHIVES env var - search-indexed-archives: true - # search within archives that do not contain a file index to search against (tar, tar.gz, tar.bz2, etc) - # note: enabling this may result in a performance impact since all discovered compressed tars will be decompressed - # note: for now this only applies to the java package cataloger - # SYFT_PACKAGE_SEARCH_UNINDEXED_ARCHIVES env var - search-unindexed-archives: true - cataloger: - # enable/disable cataloging of packages - # SYFT_PACKAGE_CATALOGER_ENABLED env var - enabled: true - # the search space to look for packages (options: all-layers, squashed) - # same as -s ; SYFT_PACKAGE_CATALOGER_SCOPE env var - scope: "squashed" - -# cataloging file contents is exposed through the power-user subcommand -file-contents: - cataloger: - # enable/disable cataloging of secrets - # SYFT_FILE_CONTENTS_CATALOGER_ENABLED env var - enabled: true - # the search space to look for secrets (options: all-layers, squashed) - # SYFT_FILE_CONTENTS_CATALOGER_SCOPE env var - scope: "squashed" - # skip searching a file entirely if it is above the given size (default = 1MB; unit = bytes) - # SYFT_FILE_CONTENTS_SKIP_FILES_ABOVE_SIZE env var - skip-files-above-size: 1048576 - # file globs for the cataloger to match on - # SYFT_FILE_CONTENTS_GLOBS env var - globs: [] - -# cataloging file metadata is exposed through the power-user subcommand -file-metadata: - cataloger: - # enable/disable cataloging of file metadata - # SYFT_FILE_METADATA_CATALOGER_ENABLED env var - enabled: true - # the search space to look for file metadata (options: all-layers, squashed) - # SYFT_FILE_METADATA_CATALOGER_SCOPE env var - scope: "squashed" - # the file digest algorithms to use when cataloging files (options: "sha256", "md5", "sha1") - # SYFT_FILE_METADATA_DIGESTS env var - digests: ["sha256"] - -# cataloging secrets is exposed through the power-user subcommand -secrets: - cataloger: - # enable/disable cataloging of secrets - # SYFT_SECRETS_CATALOGER_ENABLED env var - enabled: true - # the search space to look for secrets (options: all-layers, squashed) - # SYFT_SECRETS_CATALOGER_SCOPE env var - scope: "all-layers" - # show extracted secret values in the final JSON report - # SYFT_SECRETS_REVEAL_VALUES env var - reveal-values: false - # skip searching a file entirely if it is above the given size (default = 1MB; unit = bytes) - # SYFT_SECRETS_SKIP_FILES_ABOVE_SIZE env var - skip-files-above-size: 1048576 - # name-regex pairs to consider when searching files for secrets. Note: the regex must match single line patterns - # but may also have OPTIONAL multiline capture groups. Regexes with a named capture group of "value" will - # use the entire regex to match, but the secret value will be assumed to be entirely contained within the - # "value" named capture group. - additional-patterns: {} - # names to exclude from the secrets search, valid values are: "aws-access-key", "aws-secret-key", "pem-private-key", - # "docker-config-auth", and "generic-api-key". Note: this does not consider any names introduced in the - # "secrets.additional-patterns" config option. - # SYFT_SECRETS_EXCLUDE_PATTERN_NAMES env var - exclude-pattern-names: [] diff --git a/scripts/docker/Dockerfile.metadata b/scripts/docker/Dockerfile.metadata deleted file mode 100644 index f54092e..0000000 --- a/scripts/docker/Dockerfile.metadata +++ /dev/null @@ -1,22 +0,0 @@ - -# === Metadata ================================================================= - -ARG IMAGE -ARG TITLE -ARG DESCRIPTION -ARG LICENCE -ARG GIT_URL -ARG GIT_BRANCH -ARG GIT_COMMIT_HASH -ARG BUILD_DATE -ARG BUILD_VERSION -LABEL \ - org.opencontainers.image.base.name=$IMAGE \ - org.opencontainers.image.title="$TITLE" \ - org.opencontainers.image.description="$DESCRIPTION" \ - org.opencontainers.image.licenses="$LICENCE" \ - org.opencontainers.image.url=$GIT_URL \ - org.opencontainers.image.ref.name=$GIT_BRANCH \ - org.opencontainers.image.revision=$GIT_COMMIT_HASH \ - org.opencontainers.image.created=$BUILD_DATE \ - org.opencontainers.image.version=$BUILD_VERSION diff --git a/scripts/docker/dgoss.sh b/scripts/docker/dgoss.sh deleted file mode 100644 index e573a48..0000000 --- a/scripts/docker/dgoss.sh +++ /dev/null @@ -1,139 +0,0 @@ -#!/bin/bash -# shellcheck disable=SC2016,SC2154,SC2166 - -# WARNING: Please DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -# SEE: https://github.com/goss-org/goss/blob/master/extras/dgoss/dgoss - -set -e - -USAGE="USAGE: $(basename "$0") [run|edit] " -GOSS_FILES_PATH="${GOSS_FILES_PATH:-.}" - -# Container runtime -CONTAINER_RUNTIME="${CONTAINER_RUNTIME:-docker}" - -info() { - echo -e "INFO: $*" >&2; -} -error() { - echo -e "ERROR: $*" >&2; - exit 1; -} - -cleanup() { - set +e - { kill "$log_pid" && wait "$log_pid"; } 2> /dev/null - if [ -n "$CONTAINER_LOG_OUTPUT" ]; then - cp "$tmp_dir/docker_output.log" "$CONTAINER_LOG_OUTPUT" - fi - rm -rf "$tmp_dir" - if [[ $id ]];then - info "Deleting container" - $CONTAINER_RUNTIME rm -vf "$id" > /dev/null - fi -} - -run(){ - # Copy in goss - cp "${GOSS_PATH}" "$tmp_dir/goss" - chmod 755 "$tmp_dir/goss" - [[ -e "${GOSS_FILES_PATH}/${GOSS_FILE:-goss.yaml}" ]] && cp "${GOSS_FILES_PATH}/${GOSS_FILE:-goss.yaml}" "$tmp_dir/goss.yaml" && chmod 644 "$tmp_dir/goss.yaml" - [[ -e "${GOSS_FILES_PATH}/goss_wait.yaml" ]] && cp "${GOSS_FILES_PATH}/goss_wait.yaml" "$tmp_dir" && chmod 644 "$tmp_dir/goss_wait.yaml" - [[ -n "${GOSS_VARS}" ]] && [[ -e "${GOSS_FILES_PATH}/${GOSS_VARS}" ]] && cp "${GOSS_FILES_PATH}/${GOSS_VARS}" "$tmp_dir" && chmod 644 "$tmp_dir/${GOSS_VARS}" - - # Switch between mount or cp files strategy - GOSS_FILES_STRATEGY=${GOSS_FILES_STRATEGY:="mount"} - case "$GOSS_FILES_STRATEGY" in - mount) - info "Starting $CONTAINER_RUNTIME container" - if [ "$CONTAINER_RUNTIME" == "podman" -a $# == 2 ]; then - id=$($CONTAINER_RUNTIME run -d -v "$tmp_dir:/goss:z" "${@:2}" sleep infinity) - else - id=$($CONTAINER_RUNTIME run -d -v "$tmp_dir:/goss:z" "${@:2}") - fi - ;; - cp) - info "Creating $CONTAINER_RUNTIME container" - id=$($CONTAINER_RUNTIME create "${@:2}") - info "Copy goss files into container" - $CONTAINER_RUNTIME cp "$tmp_dir/." "$id:/goss" - info "Starting $CONTAINER_RUNTIME container" - $CONTAINER_RUNTIME start "$id" > /dev/null - ;; - *) error "Wrong goss files strategy used! Correct options are \"mount\" or \"cp\"." - esac - - $CONTAINER_RUNTIME logs -f "$id" > "$tmp_dir/docker_output.log" 2>&1 & - log_pid=$! - info "Container ID: ${id:0:8}" -} - -get_docker_file() { - local cid=$1 # Docker container ID - local src=$2 # Source file path (in the container) - local dst=$3 # Destination file path - - if $CONTAINER_RUNTIME exec "${cid}" sh -c "test -e ${src}" > /dev/null; then - mkdir -p "${GOSS_FILES_PATH}" - $CONTAINER_RUNTIME cp "${cid}:${src}" "${dst}" - info "Copied '${src}' from container to '${dst}'" - fi -} - -# Main -tmp_dir=$(mktemp -d /tmp/tmp.XXXXXXXXXX) -chmod 777 "$tmp_dir" -trap 'ret=$?;cleanup;exit $ret' EXIT - -GOSS_PATH="${GOSS_PATH:-$(which goss 2> /dev/null || true)}" -[[ $GOSS_PATH ]] || { error "Couldn't find goss installation, please set GOSS_PATH to it"; } -[[ ${GOSS_OPTS+x} ]] || GOSS_OPTS="--color --format documentation" -[[ ${GOSS_WAIT_OPTS+x} ]] || GOSS_WAIT_OPTS="-r 30s -s 1s > /dev/null" -GOSS_SLEEP=${GOSS_SLEEP:-0.2} - -[[ $CONTAINER_RUNTIME =~ ^(docker|podman)$ ]] || { error "Runtime must be one of docker or podman"; } - -case "$1" in - run) - run "$@" - if [[ -e "${GOSS_FILES_PATH}/goss_wait.yaml" ]]; then - info "Found goss_wait.yaml, waiting for it to pass before running tests" - if [[ -z "${GOSS_VARS}" ]]; then - if ! $CONTAINER_RUNTIME exec "$id" sh -c "/goss/goss -g /goss/goss_wait.yaml validate $GOSS_WAIT_OPTS"; then - $CONTAINER_RUNTIME logs "$id" >&2 - error "goss_wait.yaml never passed" - fi - else - if ! $CONTAINER_RUNTIME exec "$id" sh -c "/goss/goss -g /goss/goss_wait.yaml --vars='/goss/${GOSS_VARS}' validate $GOSS_WAIT_OPTS"; then - $CONTAINER_RUNTIME logs "$id" >&2 - error "goss_wait.yaml never passed" - fi - fi - fi - [[ $GOSS_SLEEP ]] && { info "Sleeping for $GOSS_SLEEP"; sleep "$GOSS_SLEEP"; } - info "Container health" - if [ "true" != "$($CONTAINER_RUNTIME inspect -f '{{.State.Running}}' "$id")" ]; then - $CONTAINER_RUNTIME logs "$id" >&2 - error "the container failed to start" - fi - info "Running Tests" - if [[ -z "${GOSS_VARS}" ]]; then - $CONTAINER_RUNTIME exec "$id" sh -c "/goss/goss -g /goss/goss.yaml validate $GOSS_OPTS" - else - $CONTAINER_RUNTIME exec "$id" sh -c "/goss/goss -g /goss/goss.yaml --vars='/goss/${GOSS_VARS}' validate $GOSS_OPTS" - fi - ;; - edit) - run "$@" - info "Run goss add/autoadd to add resources" - $CONTAINER_RUNTIME exec -it "$id" sh -c 'cd /goss; PATH="/goss:$PATH" exec sh' - get_docker_file "$id" "/goss/goss.yaml" "${GOSS_FILES_PATH}/${GOSS_FILE:-goss.yaml}" - get_docker_file "$id" "/goss/goss_wait.yaml" "${GOSS_FILES_PATH}/goss_wait.yaml" - if [[ -n "${GOSS_VARS}" ]]; then - get_docker_file "$id" "/goss/${GOSS_VARS}" "${GOSS_FILES_PATH}/${GOSS_VARS}" - fi - ;; - *) - error "$USAGE" -esac diff --git a/scripts/docker/docker.lib.sh b/scripts/docker/docker.lib.sh deleted file mode 100644 index 1878710..0000000 --- a/scripts/docker/docker.lib.sh +++ /dev/null @@ -1,303 +0,0 @@ -#!/bin/bash -# shellcheck disable=SC2155 - -# WARNING: Please DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -set -euo pipefail - -# A set of Docker functions written in Bash. -# -# Usage: -# $ source ./docker.lib.sh -# -# Arguments (provided as environment variables): -# DOCKER_IMAGE=ghcr.io/org/repo # Docker image name -# DOCKER_TITLE="My Docker image" # Docker image title -# TOOL_VERSIONS=$project_dir/.tool-versions # Path to the tool versions file - -# ============================================================================== -# Functions to be used with custom images. - -# Build Docker image. -# Arguments (provided as environment variables): -# dir=[path to the Dockerfile to use, default is '.'] -function docker-build() { - - local dir=${dir:-$PWD} - - version-create-effective-file - _create-effective-dockerfile - # The current directory must be changed for the image build script to access - # assets that need to be copied - current_dir=$(pwd) - cd "$dir" - docker build \ - --progress=plain \ - --platform linux/amd64 \ - --build-arg IMAGE="${DOCKER_IMAGE}" \ - --build-arg TITLE="${DOCKER_TITLE}" \ - --build-arg DESCRIPTION="${DOCKER_TITLE}" \ - --build-arg LICENCE=MIT \ - --build-arg GIT_URL="$(git config --get remote.origin.url)" \ - --build-arg GIT_BRANCH="$(_get-git-branch-name)" \ - --build-arg GIT_COMMIT_HASH="$(git rev-parse --short HEAD)" \ - --build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%S%z")" \ - --build-arg BUILD_VERSION="$(_get-effective-version)" \ - --tag "${DOCKER_IMAGE}:$(_get-effective-version)" \ - --rm \ - --file "${dir}/Dockerfile.effective" \ - . - cd "$current_dir" - # Tag the image with all the stated versions, see the documentation for more details - for version in $(_get-all-effective-versions) latest; do - docker tag "${DOCKER_IMAGE}:$(_get-effective-version)" "${DOCKER_IMAGE}:${version}" - done - docker rmi --force "$(docker images | grep "" | awk '{print $3}')" 2> /dev/null ||: -} - -# Check test Docker image. -# Arguments (provided as environment variables): -# args=[arguments to pass to Docker to run the container, default is none/empty] -# cmd=[command to pass to the container for execution, default is none/empty] -# dir=[path to the image directory where the Dockerfile is located, default is '.'] -# check=[output string to search for] -function docker-check-test() { - - local dir=${dir:-$PWD} - - # shellcheck disable=SC2086,SC2154 - docker run --rm --platform linux/amd64 \ - ${args:-} \ - "${DOCKER_IMAGE}:$(_get-effective-version)" 2>/dev/null \ - ${cmd:-} \ - | grep -q "${check}" && echo PASS || echo FAIL -} - -# Run Docker image. -# Arguments (provided as environment variables): -# args=[arguments to pass to Docker to run the container, default is none/empty] -# cmd=[command to pass to the container for execution, default is none/empty] -# dir=[path to the image directory where the Dockerfile is located, default is '.'] -function docker-run() { - - local dir=${dir:-$PWD} - - # shellcheck disable=SC2086 - docker run --rm --platform linux/amd64 \ - ${args:-} \ - "${DOCKER_IMAGE}:$(dir="$dir" _get-effective-version)" \ - ${cmd:-} -} - -# Push Docker image. -# Arguments (provided as environment variables): -# dir=[path to the image directory where the Dockerfile is located, default is '.'] -function docker-push() { - - local dir=${dir:-$PWD} - - # Push all the image tags based on the stated versions, see the documentation for more details - for version in $(dir="$dir" _get-all-effective-versions) latest; do - docker push "${DOCKER_IMAGE}:${version}" - done -} - -# Remove Docker resources. -# Arguments (provided as environment variables): -# dir=[path to the image directory where the Dockerfile is located, default is '.'] -function docker-clean() { - - local dir=${dir:-$PWD} - - for version in $(dir="$dir" _get-all-effective-versions) latest; do - docker rmi "${DOCKER_IMAGE}:${version}" > /dev/null 2>&1 ||: - done - rm -f \ - .version \ - Dockerfile.effective -} - -# Create effective version from the VERSION file. -# Arguments (provided as environment variables): -# dir=[path to the VERSION file to use, default is '.'] -# BUILD_DATETIME=[build date and time in the '%Y-%m-%dT%H:%M:%S%z' format generated by the CI/CD pipeline, default is current date and time] -function version-create-effective-file() { - - local dir=${dir:-$PWD} - local version_file="$dir/VERSION" - local build_datetime=${BUILD_DATETIME:-$(date -u +'%Y-%m-%dT%H:%M:%S%z')} - - if [ -f "$version_file" ]; then - # shellcheck disable=SC2002 - cat "$version_file" | \ - sed "s/\(\${yyyy}\|\$yyyy\)/$(date --date="${build_datetime}" -u +"%Y")/g" | \ - sed "s/\(\${mm}\|\$mm\)/$(date --date="${build_datetime}" -u +"%m")/g" | \ - sed "s/\(\${dd}\|\$dd\)/$(date --date="${build_datetime}" -u +"%d")/g" | \ - sed "s/\(\${HH}\|\$HH\)/$(date --date="${build_datetime}" -u +"%H")/g" | \ - sed "s/\(\${MM}\|\$MM\)/$(date --date="${build_datetime}" -u +"%M")/g" | \ - sed "s/\(\${SS}\|\$SS\)/$(date --date="${build_datetime}" -u +"%S")/g" | \ - sed "s/\(\${hash}\|\$hash\)/$(git rev-parse --short HEAD)/g" \ - > "$dir/.version" - fi -} - -# ============================================================================== -# Functions to be used with external images. - -# Retrieve the Docker image version from the '.tool-versions' file and pull the -# image if required. This function is to be used in conjunction with the -# external images and it prevents Docker from downloading an image each time it -# is used, since the digest is not stored locally for compressed images. To -# optimise, the solution is to pull the image using its digest and then tag it, -# checking this tag for existence for any subsequent use. -# Arguments (provided as environment variables): -# name=[full name of the Docker image] -# match_version=[regexp to match the version, for example if the same image is used with multiple tags, default is '.*'] -# shellcheck disable=SC2001 -function docker-get-image-version-and-pull() { - - # E.g. for the given entry "# docker/ghcr.io/org/image 1.2.3@sha256:hash" in - # the '.tool-versions' file, the following variables will be set to: - # name="ghcr.io/org/image" - # version="1.2.3@sha256:hash" - # tag="1.2.3" - # digest="sha256:hash" - - # Get the image full version from the '.tool-versions' file, - # match it by name and version regex, if given. - local versions_file="${TOOL_VERSIONS:=$(git rev-parse --show-toplevel)/.tool-versions}" - local version="latest" - if [ -f "$versions_file" ]; then - line=$(grep "docker/${name} " "$versions_file" | sed "s/^#\s*//; s/\s*#.*$//" | grep "${match_version:-".*"}") - [ -n "$line" ] && version=$(echo "$line" | awk '{print $2}') - fi - - # Split the image version into two, tag name and digest sha256. - local tag="$(echo "$version" | sed 's/@.*$//')" - local digest="$(echo "$version" | sed 's/^.*@//')" - - # Check if the image exists locally already - if ! docker images | awk '{ print $1 ":" $2 }' | grep -q "^${name}:${tag}$"; then - if [ "$digest" != "latest" ]; then - # Pull image by the digest sha256 and tag it - docker pull \ - --platform linux/amd64 \ - "${name}@${digest}" \ - > /dev/null 2>&1 || true - docker tag "${name}@${digest}" "${name}:${tag}" - else - # Pull the latest image - docker pull \ - --platform linux/amd64 \ - "${name}:latest" \ - > /dev/null 2>&1 || true - fi - fi - - echo "${name}:${version}" -} - -# ============================================================================== -# "Private" functions. - -# Create effective Dockerfile. -# Arguments (provided as environment variables): -# dir=[path to the image directory where the Dockerfile is located, default is '.'] -function _create-effective-dockerfile() { - - local dir=${dir:-$PWD} - - cp "${dir}/Dockerfile" "${dir}/Dockerfile.effective" - _replace-image-latest-by-specific-version - _append-metadata -} - -# Replace image:latest by a specific version. -# Arguments (provided as environment variables): -# dir=[path to the image directory where the Dockerfile is located, default is '.'] -function _replace-image-latest-by-specific-version() { - - local dir=${dir:-$PWD} - local versions_file="${TOOL_VERSIONS:=$(git rev-parse --show-toplevel)/.tool-versions}" - local dockerfile="${dir}/Dockerfile.effective" - local build_datetime=${BUILD_DATETIME:-$(date -u +'%Y-%m-%dT%H:%M:%S%z')} - - if [ -f "$versions_file" ]; then - # First, list the entries specific for Docker to take precedence, then the rest but exclude comments - content=$(grep " docker/" "$versions_file"; grep -v " docker/" "$versions_file" ||: | grep -v "^#") - echo "$content" | while IFS= read -r line; do - [ -z "$line" ] && continue - line=$(echo "$line" | sed "s/^#\s*//; s/\s*#.*$//" | sed "s;docker/;;") - name=$(echo "$line" | awk '{print $1}') - version=$(echo "$line" | awk '{print $2}') - sed -i "s;\(FROM .*\)${name}:latest;\1${name}:${version};g" "$dockerfile" - done - fi - - if [ -f "$dockerfile" ]; then - # shellcheck disable=SC2002 - cat "$dockerfile" | \ - sed "s/\(\${yyyy}\|\$yyyy\)/$(date --date="${build_datetime}" -u +"%Y")/g" | \ - sed "s/\(\${mm}\|\$mm\)/$(date --date="${build_datetime}" -u +"%m")/g" | \ - sed "s/\(\${dd}\|\$dd\)/$(date --date="${build_datetime}" -u +"%d")/g" | \ - sed "s/\(\${HH}\|\$HH\)/$(date --date="${build_datetime}" -u +"%H")/g" | \ - sed "s/\(\${MM}\|\$MM\)/$(date --date="${build_datetime}" -u +"%M")/g" | \ - sed "s/\(\${SS}\|\$SS\)/$(date --date="${build_datetime}" -u +"%S")/g" | \ - sed "s/\(\${hash}\|\$hash\)/$(git rev-parse --short HEAD)/g" \ - > "$dockerfile.tmp" - mv "$dockerfile.tmp" "$dockerfile" - fi - - # Do not ignore the issue if 'latest' is used in the effective image - sed -Ei "/# hadolint ignore=DL3007$/d" "${dir}/Dockerfile.effective" -} - -# Append metadata to the end of Dockerfile. -# Arguments (provided as environment variables): -# dir=[path to the image directory where the Dockerfile is located, default is '.'] -function _append-metadata() { - - local dir=${dir:-$PWD} - - cat \ - "$dir/Dockerfile.effective" \ - "$(git rev-parse --show-toplevel)/scripts/docker/Dockerfile.metadata" \ - > "$dir/Dockerfile.effective.tmp" - mv "$dir/Dockerfile.effective.tmp" "$dir/Dockerfile.effective" -} - -# Print top Docker image version. -# Arguments (provided as environment variables): -# dir=[path to the image directory where the Dockerfile is located, default is '.'] -function _get-effective-version() { - - local dir=${dir:-$PWD} - - head -n 1 "${dir}/.version" 2> /dev/null ||: -} - -# Print all Docker image versions. -# Arguments (provided as environment variables): -# dir=[path to the image directory where the Dockerfile is located, default is '.'] -function _get-all-effective-versions() { - - local dir=${dir:-$PWD} - - cat "${dir}/.version" 2> /dev/null ||: -} - -# Print Git branch name. Check the GitHub variables first and then the local Git -# repo. -function _get-git-branch-name() { - - local branch_name=$(git rev-parse --abbrev-ref HEAD) - - if [ -n "${GITHUB_HEAD_REF:-}" ]; then - branch_name=$GITHUB_HEAD_REF - elif [ -n "${GITHUB_REF:-}" ]; then - # shellcheck disable=SC2001 - branch_name=$(echo "$GITHUB_REF" | sed "s#refs/heads/##") - fi - - echo "$branch_name" -} diff --git a/scripts/docker/docker.mk b/scripts/docker/docker.mk deleted file mode 100644 index a31ad9d..0000000 --- a/scripts/docker/docker.mk +++ /dev/null @@ -1,83 +0,0 @@ -# This file is for you! Edit it to implement your own Docker make targets. - -# ============================================================================== -# Custom implementation - implementation of a make target should not exceed 5 lines of effective code. -# In most cases there should be no need to modify the existing make targets. - -docker-build: # Build Docker image - optional: docker_dir|dir=[path to the Dockerfile to use, default is '.'] @Development - make _docker cmd="build" \ - dir=$(or ${docker_dir}, ${dir}) - file=$(or ${docker_dir}, ${dir})/Dockerfile.effective - scripts/docker/dockerfile-linter.sh - -docker-push: # Push Docker image - optional: docker_dir|dir=[path to the image directory where the Dockerfile is located, default is '.'] @Development - make _docker cmd="push" \ - dir=$(or ${docker_dir}, ${dir}) - -clean:: # Remove Docker resources (docker) - optional: docker_dir|dir=[path to the image directory where the Dockerfile is located, default is '.'] @Operations - make _docker cmd="clean" \ - dir=$(or ${docker_dir}, ${dir}) - -_docker: # Docker command wrapper - mandatory: cmd=[command to execute]; optional: dir=[path to the image directory where the Dockerfile is located, relative to the project's top-level directory, default is '.'] - # 'DOCKER_IMAGE' and 'DOCKER_TITLE' are passed to the functions as environment variables - DOCKER_IMAGE=$(or ${DOCKER_IMAGE}, $(or ${docker_image}, $(or ${IMAGE}, $(or ${image}, ghcr.io/org/repo)))) - DOCKER_TITLE=$(or "${DOCKER_TITLE}", $(or "${docker_title}", $(or "${TITLE}", $(or "${title}", "Service Docker image")))) - source scripts/docker/docker.lib.sh - dir=$(realpath ${dir}) - docker-${cmd} # 'dir' is accessible by the function as environment variable - -# ============================================================================== -# Quality checks - please DO NOT edit this section! - -docker-shellscript-lint: # Lint all Docker module shell scripts @Quality - for file in $$(find scripts/docker -type f -name "*.sh"); do - file=$${file} scripts/shellscript-linter.sh - done - -# ============================================================================== -# Module tests and examples - please DO NOT edit this section! - -docker-test-suite-run: # Run Docker test suite @ExamplesAndTests - scripts/docker/tests/docker.test.sh - -docker-example-build: # Build Docker example @ExamplesAndTests - source scripts/docker/docker.lib.sh - cd scripts/docker/examples/python - DOCKER_IMAGE=repository-template/docker-example-python - DOCKER_TITLE="Repository Template Docker Python Example" - TOOL_VERSIONS="$(shell git rev-parse --show-toplevel)/scripts/docker/examples/python/.tool-versions.example" - docker-build - -docker-example-lint: # Lint Docker example @ExamplesAndTests - dockerfile=scripts/docker/examples/python/Dockerfile - file=$${dockerfile} scripts/docker/dockerfile-linter.sh - -docker-example-run: # Run Docker example @ExamplesAndTests - source scripts/docker/docker.lib.sh - cd scripts/docker/examples/python - DOCKER_IMAGE=repository-template/docker-example-python - args=" \ - -it \ - --publish 8000:8000 \ - " - docker-run - -docker-example-clean: # Remove Docker example resources @ExamplesAndTests - source scripts/docker/docker.lib.sh - cd scripts/docker/examples/python - DOCKER_IMAGE=repository-template/docker-example-python - docker-clean - -# ============================================================================== - -${VERBOSE}.SILENT: \ - _docker \ - clean \ - docker-build \ - docker-example-build \ - docker-example-clean \ - docker-example-lint \ - docker-example-run \ - docker-push \ - docker-shellscript-lint \ - docker-test-suite-run \ diff --git a/scripts/docker/dockerfile-linter.sh b/scripts/docker/dockerfile-linter.sh deleted file mode 100755 index 7e8c75f..0000000 --- a/scripts/docker/dockerfile-linter.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/bash - -# WARNING: Please DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -set -euo pipefail - -# Hadolint command wrapper. It will run hadolint natively if it is installed, -# otherwise it will run it in a Docker container. -# -# Usage: -# $ [options] ./dockerfile-linter.sh -# -# Arguments (provided as environment variables): -# file=Dockerfile # Path to the Dockerfile to lint, relative to the project's top-level directory, default is './Dockerfile.effective' -# FORCE_USE_DOCKER=true # If set to true the command is run in a Docker container, default is 'false' -# VERBOSE=true # Show all the executed commands, default is 'false' - -# ============================================================================== - -function main() { - - cd "$(git rev-parse --show-toplevel)" - - local file=${file:-./Dockerfile.effective} - if command -v hadolint > /dev/null 2>&1 && ! is-arg-true "${FORCE_USE_DOCKER:-false}"; then - file="$file" run-hadolint-natively - else - file="$file" run-hadolint-in-docker - fi -} - -# Run hadolint natively. -# Arguments (provided as environment variables): -# file=[path to the Dockerfile to lint, relative to the project's top-level directory] -function run-hadolint-natively() { - - # shellcheck disable=SC2001 - hadolint "$(echo "$file" | sed "s#$PWD#.#")" -} - -# Run hadolint in a Docker container. -# Arguments (provided as environment variables): -# file=[path to the Dockerfile to lint, relative to the project's top-level directory] -function run-hadolint-in-docker() { - - # shellcheck disable=SC1091 - source ./scripts/docker/docker.lib.sh - - # shellcheck disable=SC2155 - local image=$(name=hadolint/hadolint docker-get-image-version-and-pull) - # shellcheck disable=SC2001 - docker run --rm --platform linux/amd64 \ - --volume "$PWD:/workdir" \ - --workdir /workdir \ - "$image" \ - hadolint \ - --config /workdir/scripts/config/hadolint.yaml \ - "/workdir/$(echo "$file" | sed "s#$PWD#.#")" -} - -# ============================================================================== - -function is-arg-true() { - - if [[ "$1" =~ ^(true|yes|y|on|1|TRUE|YES|Y|ON)$ ]]; then - return 0 - else - return 1 - fi -} - -# ============================================================================== - -is-arg-true "${VERBOSE:-false}" && set -x - -main "$@" - -exit 0 diff --git a/scripts/docker/examples/python/.tool-versions.example b/scripts/docker/examples/python/.tool-versions.example deleted file mode 100644 index 9209311..0000000 --- a/scripts/docker/examples/python/.tool-versions.example +++ /dev/null @@ -1,2 +0,0 @@ -# python, SEE: https://hub.docker.com/_/python/tags -# docker/python 3.11.4-alpine3.18@sha256:0135ae6442d1269379860b361760ad2cf6ab7c403d21935a8015b48d5bf78a86 diff --git a/scripts/docker/examples/python/Dockerfile b/scripts/docker/examples/python/Dockerfile deleted file mode 100644 index d0780aa..0000000 --- a/scripts/docker/examples/python/Dockerfile +++ /dev/null @@ -1,33 +0,0 @@ -# `*:latest` will be replaced with a corresponding version stored in the '.tool-versions' file -# hadolint ignore=DL3007 -FROM python:latest as base - -# === Builder ================================================================== - -FROM base AS builder -COPY ./assets/hello_world/requirements.txt /requirements.txt -WORKDIR /packages -RUN set -eux; \ - \ - # Install dependencies - pip install \ - --requirement /requirements.txt \ - --prefix=/packages \ - --no-warn-script-location \ - --no-cache-dir - -# === Runtime ================================================================== - -FROM base -ENV \ - LANG="C.UTF-8" \ - LC_ALL="C.UTF-8" \ - PYTHONDONTWRITEBYTECODE="1" \ - PYTHONUNBUFFERED="1" \ - TZ="UTC" -COPY --from=builder /packages /usr/local -COPY ./assets/hello_world /hello_world -WORKDIR /hello_world -USER nobody -CMD [ "python", "app.py" ] -EXPOSE 8000 diff --git a/scripts/docker/examples/python/Dockerfile.effective b/scripts/docker/examples/python/Dockerfile.effective deleted file mode 100644 index 3f1ea6b..0000000 --- a/scripts/docker/examples/python/Dockerfile.effective +++ /dev/null @@ -1,54 +0,0 @@ -# `*:latest` will be replaced with a corresponding version stored in the '.tool-versions' file -FROM python:3.11.4-alpine3.18@sha256:0135ae6442d1269379860b361760ad2cf6ab7c403d21935a8015b48d5bf78a86 as base - -# === Builder ================================================================== - -FROM base AS builder -COPY ./assets/hello_world/requirements.txt /requirements.txt -WORKDIR /packages -RUN set -eux; \ - \ - # Install dependencies - pip install \ - --requirement /requirements.txt \ - --prefix=/packages \ - --no-warn-script-location \ - --no-cache-dir - -# === Runtime ================================================================== - -FROM base -ENV \ - LANG="C.UTF-8" \ - LC_ALL="C.UTF-8" \ - PYTHONDONTWRITEBYTECODE="1" \ - PYTHONUNBUFFERED="1" \ - TZ="UTC" -COPY --from=builder /packages /usr/local -COPY ./assets/hello_world /hello_world -WORKDIR /hello_world -USER nobody -CMD [ "python", "app.py" ] -EXPOSE 8000 - -# === Metadata ================================================================= - -ARG IMAGE -ARG TITLE -ARG DESCRIPTION -ARG LICENCE -ARG GIT_URL -ARG GIT_BRANCH -ARG GIT_COMMIT_HASH -ARG BUILD_DATE -ARG BUILD_VERSION -LABEL \ - org.opencontainers.image.base.name=$IMAGE \ - org.opencontainers.image.title="$TITLE" \ - org.opencontainers.image.description="$DESCRIPTION" \ - org.opencontainers.image.licenses="$LICENCE" \ - org.opencontainers.image.url=$GIT_URL \ - org.opencontainers.image.ref.name=$GIT_BRANCH \ - org.opencontainers.image.revision=$GIT_COMMIT_HASH \ - org.opencontainers.image.created=$BUILD_DATE \ - org.opencontainers.image.version=$BUILD_VERSION diff --git a/scripts/docker/examples/python/VERSION b/scripts/docker/examples/python/VERSION deleted file mode 100644 index 8acdd82..0000000 --- a/scripts/docker/examples/python/VERSION +++ /dev/null @@ -1 +0,0 @@ -0.0.1 diff --git a/scripts/docker/examples/python/assets/hello_world/app.py b/scripts/docker/examples/python/assets/hello_world/app.py deleted file mode 100644 index 4844e89..0000000 --- a/scripts/docker/examples/python/assets/hello_world/app.py +++ /dev/null @@ -1,12 +0,0 @@ -from flask import Flask -from flask_wtf.csrf import CSRFProtect - -app = Flask(__name__) -csrf = CSRFProtect() -csrf.init_app(app) - -@app.route("/") -def index(): - return "Hello World!" - -app.run(host='0.0.0.0', port=8000) diff --git a/scripts/docker/examples/python/assets/hello_world/requirements.txt b/scripts/docker/examples/python/assets/hello_world/requirements.txt deleted file mode 100644 index ae33eb7..0000000 --- a/scripts/docker/examples/python/assets/hello_world/requirements.txt +++ /dev/null @@ -1,12 +0,0 @@ -blinker==1.6.2 -click==8.1.7 -Flask-WTF==1.2.0 -Flask==2.3.3 -itsdangerous==2.1.2 -Jinja2==3.1.2 -MarkupSafe==2.1.3 -pip==23.1.2 -setuptools==65.5.1 -Werkzeug==3.0.0 -wheel==0.41.1 -WTForms==3.0.1 diff --git a/scripts/docker/examples/python/tests/goss.yaml b/scripts/docker/examples/python/tests/goss.yaml deleted file mode 100644 index 589db37..0000000 --- a/scripts/docker/examples/python/tests/goss.yaml +++ /dev/null @@ -1,8 +0,0 @@ -package: - python: - installed: true - -command: - pip list | grep -i flask: - exit-status: 0 - timeout: 60000 diff --git a/scripts/docker/tests/.gitignore b/scripts/docker/tests/.gitignore deleted file mode 100644 index c50e8c0..0000000 --- a/scripts/docker/tests/.gitignore +++ /dev/null @@ -1 +0,0 @@ -Dockerfile.effective diff --git a/scripts/docker/tests/.tool-versions.test b/scripts/docker/tests/.tool-versions.test deleted file mode 100644 index 9209311..0000000 --- a/scripts/docker/tests/.tool-versions.test +++ /dev/null @@ -1,2 +0,0 @@ -# python, SEE: https://hub.docker.com/_/python/tags -# docker/python 3.11.4-alpine3.18@sha256:0135ae6442d1269379860b361760ad2cf6ab7c403d21935a8015b48d5bf78a86 diff --git a/scripts/docker/tests/Dockerfile b/scripts/docker/tests/Dockerfile deleted file mode 100644 index b5ea560..0000000 --- a/scripts/docker/tests/Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -# `*:latest` will be replaced with a corresponding version stored in the '.tool-versions' file -# hadolint ignore=DL3007 -FROM python:latest diff --git a/scripts/docker/tests/VERSION b/scripts/docker/tests/VERSION deleted file mode 100644 index fb36635..0000000 --- a/scripts/docker/tests/VERSION +++ /dev/null @@ -1,3 +0,0 @@ -${yyyy}${mm}${dd}-${hash} -$yyyy.$mm.$dd-$hash -somme-name-yyyyeah diff --git a/scripts/docker/tests/docker.test.sh b/scripts/docker/tests/docker.test.sh deleted file mode 100755 index 8f487b8..0000000 --- a/scripts/docker/tests/docker.test.sh +++ /dev/null @@ -1,162 +0,0 @@ -#!/bin/bash -# shellcheck disable=SC1091,SC2034,SC2317 - -# WARNING: Please DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -set -euo pipefail - -# Test suite for Docker functions. -# -# Usage: -# $ ./docker.test.sh -# -# Arguments (provided as environment variables): -# VERBOSE=true # Show all the executed commands, default is 'false' - -# ============================================================================== - -function main() { - - cd "$(git rev-parse --show-toplevel)" - source ./scripts/docker/docker.lib.sh - cd ./scripts/docker/tests - - DOCKER_IMAGE=repository-template/docker-test - DOCKER_TITLE="Repository Template Docker Test" - - test-docker-suite-setup - tests=( \ - test-docker-build \ - test-docker-image-from-signature \ - test-docker-version-file \ - test-docker-test \ - test-docker-run \ - test-docker-clean \ - test-docker-get-image-version-and-pull \ - ) - local status=0 - for test in "${tests[@]}"; do - { - echo -n "$test" - # shellcheck disable=SC2015 - $test && echo " PASS" || { echo " FAIL"; ((status++)); } - } - done - echo "Total: ${#tests[@]}, Passed: $(( ${#tests[@]} - status )), Failed: $status" - test-docker-suite-teardown - [ $status -gt 0 ] && return 1 || return 0 -} - -# ============================================================================== - -function test-docker-suite-setup() { - - : -} - -function test-docker-suite-teardown() { - - : -} - -# ============================================================================== - -function test-docker-build() { - - # Arrange - export BUILD_DATETIME="2023-09-04T15:46:34+0000" - # Act - docker-build > /dev/null 2>&1 - # Assert - docker image inspect "${DOCKER_IMAGE}:$(_get-effective-version)" > /dev/null 2>&1 && return 0 || return 1 -} - -function test-docker-image-from-signature() { - - # Arrange - TOOL_VERSIONS="$(git rev-parse --show-toplevel)/scripts/docker/tests/.tool-versions.test" - cp Dockerfile Dockerfile.effective - # Act - _replace-image-latest-by-specific-version - # Assert - grep -q "FROM python:.*-alpine.*@sha256:.*" Dockerfile.effective && return 0 || return 1 -} - -function test-docker-version-file() { - - # Arrange - export BUILD_DATETIME="2023-09-04T15:46:34+0000" - # Act - version-create-effective-file - # Assert - # shellcheck disable=SC2002 - ( - cat .version | grep -q "20230904-" && - cat .version | grep -q "2023.09.04-" && - cat .version | grep -q "somme-name-yyyyeah" - ) && return 0 || return 1 -} - -function test-docker-test() { - - # Arrange - cmd="python --version" - check="Python" - # Act - output=$(docker-check-test) - # Assert - echo "$output" | grep -q "PASS" -} - -function test-docker-run() { - - # Arrange - cmd="python --version" - # Act - output=$(docker-run) - # Assert - echo "$output" | grep -Eq "Python [0-9]+\.[0-9]+\.[0-9]+" -} - -function test-docker-clean() { - - # Arrange - version="$(_get-effective-version)" - # Act - docker-clean - # Assert - docker image inspect "${DOCKER_IMAGE}:${version}" > /dev/null 2>&1 && return 1 || return 0 -} - -function test-docker-get-image-version-and-pull() { - - # Arrange - name="ghcr.io/nhs-england-tools/github-runner-image" - match_version=".*-rt.*" - # Act - docker-get-image-version-and-pull > /dev/null 2>&1 - # Assert - docker images \ - --filter=reference="$name" \ - --format "{{.Tag}}" \ - | grep -vq "" -} - -# ============================================================================== - -function is-arg-true() { - - if [[ "$1" =~ ^(true|yes|y|on|1|TRUE|YES|Y|ON)$ ]]; then - return 0 - else - return 1 - fi -} - -# ============================================================================== - -is-arg-true "${VERBOSE:-false}" && set -x - -main "$@" - -exit 0 diff --git a/scripts/githooks/check-file-format.sh b/scripts/githooks/check-file-format.sh deleted file mode 100755 index fd466ad..0000000 --- a/scripts/githooks/check-file-format.sh +++ /dev/null @@ -1,124 +0,0 @@ -#!/bin/bash - -# WARNING: Please, DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -set -euo pipefail - -# Pre-commit git hook to check the EditorConfig rules compliance over changed -# files. It ensures all non-binary files across the codebase are formatted -# according to the style defined in the `.editorconfig` file. This is a -# editorconfig command wrapper. It will run editorconfig natively if it is -# installed, otherwise it will run it in a Docker container. -# -# Usage: -# $ [options] ./check-file-format.sh -# -# Options: -# check={all,staged-changes,working-tree-changes,branch} # Check mode, default is 'working-tree-changes' -# dry_run=true # Do not check, run dry run only, default is 'false' -# BRANCH_NAME=other-branch-than-main # Branch to compare with, default is `origin/main` -# FORCE_USE_DOCKER=true # If set to true the command is run in a Docker container, default is 'false' -# VERBOSE=true # Show all the executed commands, default is `false` -# -# Exit codes: -# 0 - All files are formatted correctly -# 1 - Files are not formatted correctly -# -# The `check` parameter controls which files are checked, so you can -# limit the scope of the check according to what is appropriate at the -# point the check is being applied. -# -# check=all: check all files in the repository -# check=staged-changes: check only files staged for commit. -# check=working-tree-changes: check modified, unstaged files. This is the default. -# check=branch: check for all changes since branching from $BRANCH_NAME -# -# Notes: -# Please make sure to enable EditorConfig linting in your IDE. For the -# Visual Studio Code editor it is `editorconfig.editorconfig` that is already -# specified in the `./.vscode/extensions.json` file. - -# ============================================================================== - -function main() { - - cd "$(git rev-parse --show-toplevel)" - - # shellcheck disable=SC2154 - is-arg-true "${dry_run:-false}" && dry_run_opt="--dry-run" - - check=${check:-working-tree-changes} - case $check in - "all") - filter="git ls-files" - ;; - "staged-changes") - filter="git diff --diff-filter=ACMRT --name-only --cached" - ;; - "working-tree-changes") - filter="git diff --diff-filter=ACMRT --name-only" - ;; - "branch") - filter="git diff --diff-filter=ACMRT --name-only ${BRANCH_NAME:-origin/main}" - ;; - *) - echo "Unrecognised check mode: $check" >&2 && exit 1 - ;; - esac - - if command -v editorconfig > /dev/null 2>&1 && ! is-arg-true "${FORCE_USE_DOCKER:-false}"; then - filter="$filter" dry_run_opt="${dry_run_opt:-}" run-editorconfig-natively - else - filter="$filter" dry_run_opt="${dry_run_opt:-}" run-editorconfig-in-docker - fi -} - -# Run editorconfig natively. -# Arguments (provided as environment variables): -# dry_run_opt=[dry run option] -# filter=[filter for files to check] -function run-editorconfig-natively() { - - # shellcheck disable=SC2046,SC2086 - editorconfig \ - --exclude '.git/' $dry_run_opt $($filter) -} - -# Run editorconfig in a Docker container. -# Arguments (provided as environment variables): -# dry_run_opt=[dry run option] -# filter=[filter for files to check] -function run-editorconfig-in-docker() { - - # shellcheck disable=SC1091 - source ./scripts/docker/docker.lib.sh - - # shellcheck disable=SC2155 - local image=$(name=mstruebing/editorconfig-checker docker-get-image-version-and-pull) - # We use /dev/null here as a backstop in case there are no files in the state - # we choose. If the filter comes back empty, adding `/dev/null` onto it has - # the effect of preventing `ec` from treating "no files" as "all the files". - docker run --rm --platform linux/amd64 \ - --volume "$PWD":/check \ - "$image" \ - sh -c "ec --exclude '.git/' $dry_run_opt \$($filter) /dev/null" -} - -# ============================================================================== - -function is-arg-true() { - - if [[ "$1" =~ ^(true|yes|y|on|1|TRUE|YES|Y|ON)$ ]]; then - return 0 - else - return 1 - fi -} - -# ============================================================================== - -is-arg-true "${VERBOSE:-false}" && set -x - -main "$@" - -exit 0 diff --git a/scripts/githooks/check-markdown-format.sh b/scripts/githooks/check-markdown-format.sh deleted file mode 100755 index 698df4a..0000000 --- a/scripts/githooks/check-markdown-format.sh +++ /dev/null @@ -1,109 +0,0 @@ -#!/bin/bash - -# WARNING: Please, DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -set -euo pipefail - -# Pre-commit git hook to check the Markdown file formatting rules compliance -# over changed files. This is a markdownlint command wrapper. It will run -# markdownlint natively if it is installed, otherwise it will run it in a Docker -# container. -# -# Usage: -# $ [options] ./check-markdown-format.sh -# -# Options: -# check={all,staged-changes,working-tree-changes,branch} # Check mode, default is 'working-tree-changes' -# BRANCH_NAME=other-branch-than-main # Branch to compare with, default is `origin/main` -# FORCE_USE_DOCKER=true # If set to true the command is run in a Docker container, default is 'false' -# VERBOSE=true # Show all the executed commands, default is `false` -# -# Exit codes: -# 0 - All files are formatted correctly -# 1 - Files are not formatted correctly -# -# Notes: -# 1) Please make sure to enable Markdown linting in your IDE. For the Visual -# Studio Code editor it is `davidanson.vscode-markdownlint` that is already -# specified in the `./.vscode/extensions.json` file. -# 2) To see the full list of the rules, please visit -# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md - -# ============================================================================== - -function main() { - - cd "$(git rev-parse --show-toplevel)" - - check=${check:-working-tree-changes} - case $check in - "all") - files="$(find ./ -type f -name "*.md")" - ;; - "staged-changes") - files="$(git diff --diff-filter=ACMRT --name-only --cached "*.md")" - ;; - "working-tree-changes") - files="$(git diff --diff-filter=ACMRT --name-only "*.md")" - ;; - "branch") - files="$( (git diff --diff-filter=ACMRT --name-only "${BRANCH_NAME:-origin/main}" "*.md"; git diff --name-only "*.md") | sort | uniq )" - ;; - esac - - if [ -n "$files" ]; then - if command -v markdownlint > /dev/null 2>&1 && ! is-arg-true "${FORCE_USE_DOCKER:-false}"; then - files="$files" run-markdownlint-natively - else - files="$files" run-markdownlint-in-docker - fi - fi -} - -# Run markdownlint natively. -# Arguments (provided as environment variables): -# files=[files to check] -function run-markdownlint-natively() { - - # shellcheck disable=SC2086 - markdownlint \ - $files \ - --config "$PWD/scripts/config/markdownlint.yaml" -} - -# Run markdownlint in a Docker container. -# Arguments (provided as environment variables): -# files=[files to check] -function run-markdownlint-in-docker() { - - # shellcheck disable=SC1091 - source ./scripts/docker/docker.lib.sh - - # shellcheck disable=SC2155 - local image=$(name=ghcr.io/igorshubovych/markdownlint-cli docker-get-image-version-and-pull) - # shellcheck disable=SC2086 - docker run --rm --platform linux/amd64 \ - --volume "$PWD":/workdir \ - "$image" \ - $files \ - --config /workdir/scripts/config/markdownlint.yaml -} - -# ============================================================================== - -function is-arg-true() { - - if [[ "$1" =~ ^(true|yes|y|on|1|TRUE|YES|Y|ON)$ ]]; then - return 0 - else - return 1 - fi -} - -# ============================================================================== - -is-arg-true "${VERBOSE:-false}" && set -x - -main "$@" - -exit 0 diff --git a/scripts/githooks/check-terraform-format.sh b/scripts/githooks/check-terraform-format.sh deleted file mode 100755 index 7255e51..0000000 --- a/scripts/githooks/check-terraform-format.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash - -# WARNING: Please DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -set -euo pipefail - -# Pre-commit git hook to check format Terraform code. -# -# Usage: -# $ [options] ./check-terraform-format.sh -# -# Options: -# check_only=true # Do not format, run check only, default is 'false' -# FORCE_USE_DOCKER=true # If set to true the command is run in a Docker container, default is 'false' -# VERBOSE=true # Show all the executed commands, default is 'false' - -# ============================================================================== - -function main() { - - cd "$(git rev-parse --show-toplevel)" - - local check_only=${check_only:-false} - check_only=$check_only terraform-fmt -} - -# Format Terraform files. -# Arguments (provided as environment variables): -# check_only=[do not format, run check only] -function terraform-fmt() { - - local opts= - if is-arg-true "$check_only"; then - opts="-check" - fi - opts=$opts make terraform-fmt -} - -# ============================================================================== - -function is-arg-true() { - - if [[ "$1" =~ ^(true|yes|y|on|1|TRUE|YES|Y|ON)$ ]]; then - return 0 - else - return 1 - fi -} - -# ============================================================================== - -is-arg-true "${VERBOSE:-false}" && set -x - -main "$@" - -exit 0 diff --git a/scripts/githooks/scan-secrets.sh b/scripts/githooks/scan-secrets.sh deleted file mode 100755 index 06155b8..0000000 --- a/scripts/githooks/scan-secrets.sh +++ /dev/null @@ -1,111 +0,0 @@ -#!/bin/bash - -# WARNING: Please, DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -set -euo pipefail - -# Pre-commit git hook to scan for secrets hard-coded in the codebase. This is a -# gitleaks command wrapper. It will run gitleaks natively if it is installed, -# otherwise it will run it in a Docker container. -# -# Usage: -# $ [options] ./scan-secrets.sh -# -# Options: -# check={whole-history,last-commit,staged-changes} # Type of the check to run, default is 'staged-changes' -# FORCE_USE_DOCKER=true # If set to true the command is run in a Docker container, default is 'false' -# VERBOSE=true # Show all the executed commands, default is 'false' -# -# Exit codes: -# 0 - No leaks present -# 1 - Leaks or error encountered -# 126 - Unknown flag - -# ============================================================================== - -function main() { - - cd "$(git rev-parse --show-toplevel)" - - if command -v gitleaks > /dev/null 2>&1 && ! is-arg-true "${FORCE_USE_DOCKER:-false}"; then - dir="$PWD" - cmd="$(get-cmd-to-run)" run-gitleaks-natively - else - dir="/workdir" - cmd="$(get-cmd-to-run)" run-gitleaks-in-docker - fi -} - -# Get Gitleaks command to execute and configuration. -# Arguments (provided as environment variables): -# dir=[project's top-level directory] -function get-cmd-to-run() { - - check=${check:-staged-changes} - case $check in - "whole-history") - cmd="detect --source $dir --verbose --redact" - ;; - "last-commit") - cmd="detect --source $dir --verbose --redact --log-opts -1" - ;; - "staged-changes") - cmd="protect --source $dir --verbose --staged" - ;; - esac - # Include base line file if it exists - if [ -f "$dir/scripts/config/.gitleaks-baseline.json" ]; then - cmd="$cmd --baseline-path $dir/scripts/config/.gitleaks-baseline.json" - fi - # Include the config file - cmd="$cmd --config $dir/scripts/config/gitleaks.toml" - - echo "$cmd" -} - -# Run Gitleaks natively. -# Arguments (provided as environment variables): -# cmd=[command to run] -function run-gitleaks-natively() { - - # shellcheck disable=SC2086 - gitleaks $cmd -} - -# Run Gitleaks in a Docker container. -# Arguments (provided as environment variables): -# cmd=[command to run] -# dir=[directory to mount as a volume] -function run-gitleaks-in-docker() { - - # shellcheck disable=SC1091 - source ./scripts/docker/docker.lib.sh - - # shellcheck disable=SC2155 - local image=$(name=ghcr.io/gitleaks/gitleaks docker-get-image-version-and-pull) - # shellcheck disable=SC2086 - docker run --rm --platform linux/amd64 \ - --volume "$PWD:$dir" \ - --workdir $dir \ - "$image" \ - $cmd -} - -# ============================================================================== - -function is-arg-true() { - - if [[ "$1" =~ ^(true|yes|y|on|1|TRUE|YES|Y|ON)$ ]]; then - return 0 - else - return 1 - fi -} - -# ============================================================================== - -is-arg-true "${VERBOSE:-false}" && set -x - -main "$@" - -exit 0 diff --git a/scripts/init.mk b/scripts/init.mk deleted file mode 100644 index 5800e1e..0000000 --- a/scripts/init.mk +++ /dev/null @@ -1,150 +0,0 @@ -# WARNING: Please DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -include scripts/docker/docker.mk -include scripts/tests/test.mk --include scripts/terraform/terraform.mk - -# ============================================================================== - -runner-act: # Run GitHub Actions locally - mandatory: workflow=[workflow file name], job=[job name] @Development - source ./scripts/docker/docker.lib.sh - act $(shell [[ "${VERBOSE}" =~ ^(true|yes|y|on|1|TRUE|YES|Y|ON)$$ ]] && echo --verbose) \ - --container-architecture linux/amd64 \ - --platform ubuntu-latest=$$(name="ghcr.io/nhs-england-tools/github-runner-image" docker-get-image-version-and-pull) \ - --container-options "--privileged" \ - --bind \ - --pull=false \ - --reuse \ - --rm \ - --defaultbranch main \ - --workflows .github/workflows/${workflow}.yaml \ - --job ${job} - -version-create-effective-file: # Create effective version file - optional: dir=[path to the VERSION file to use, default is '.'], BUILD_DATETIME=[build date and time in the '%Y-%m-%dT%H:%M:%S%z' format generated by the CI/CD pipeline, default is current date and time] @Development - source scripts/docker/docker.lib.sh - version-create-effective-file - -shellscript-lint-all: # Lint all shell scripts in this project, do not fail on error, just print the error messages @Quality - for file in $$(find . -type f -name "*.sh"); do - file=$${file} scripts/shellscript-linter.sh ||: - done - -githooks-config: # Trigger Git hooks on commit that are defined in this repository @Configuration - make _install-dependency name="pre-commit" - pre-commit install \ - --config scripts/config/pre-commit.yaml \ - --install-hooks - -githooks-run: # Run git hooks configured in this repository @Operations - pre-commit run \ - --config scripts/config/pre-commit.yaml \ - --all-files - -_install-dependency: # Install asdf dependency - mandatory: name=[listed in the '.tool-versions' file]; optional: version=[if not listed] - asdf plugin add ${name} ||: - asdf install ${name} $(or ${version},) - -clean:: # Remove all generated and temporary files (common) @Operations - rm -rf \ - .scannerwork \ - *report*.json \ - *report*json.zip \ - docs/diagrams/.*.bkp \ - docs/diagrams/.*.dtmp \ - .version - -config:: # Configure development environment (common) @Configuration - make \ - githooks-config - -help: # Print help @Others - printf "\nUsage: \033[3m\033[93m[arg1=val1] [arg2=val2] \033[0m\033[0m\033[32mmake\033[0m\033[34m \033[0m\n\n" - perl -e '$(HELP_SCRIPT)' $(MAKEFILE_LIST) - -list-variables: # List all the variables available to make @Others - $(foreach v, $(sort $(.VARIABLES)), - $(if $(filter-out default automatic, $(origin $v)), - $(if $(and $(patsubst %_PASSWORD,,$v), $(patsubst %_PASS,,$v), $(patsubst %_KEY,,$v), $(patsubst %_SECRET,,$v)), - $(info $v=$($v) ($(value $v)) [$(flavor $v),$(origin $v)]), - $(info $v=****** (******) [$(flavor $v),$(origin $v)]) - ) - ) - ) - -# ============================================================================== - -.DEFAULT_GOAL := help -.EXPORT_ALL_VARIABLES: -.NOTPARALLEL: -.ONESHELL: -.PHONY: * # Please do not change this line! The alternative usage of it introduces unnecessary complexity and is considered an anti-pattern. -MAKEFLAGS := --no-print-director -SHELL := /bin/bash -ifeq (true, $(shell [[ "${VERBOSE}" =~ ^(true|yes|y|on|1|TRUE|YES|Y|ON)$$ ]] && echo true)) - .SHELLFLAGS := -cex -else - .SHELLFLAGS := -ce -endif - -# This script parses all the make target descriptions and renders the help output. -HELP_SCRIPT = \ - \ - use Text::Wrap; \ - %help_info; \ - my $$max_command_length = 0; \ - my $$terminal_width = `tput cols` || 120; chomp($$terminal_width); \ - \ - while(<>){ \ - next if /^_/; \ - \ - if (/^([\w-_]+)\s*:.*\#(.*?)(@(\w+))?\s*$$/) { \ - my $$command = $$1; \ - my $$description = $$2; \ - $$description =~ s/@\w+//; \ - my $$category_key = $$4 // 'Others'; \ - (my $$category_name = $$category_key) =~ s/(?<=[a-z])([A-Z])/\ $$1/g; \ - $$category_name = lc($$category_name); \ - $$category_name =~ s/^(.)/\U$$1/; \ - \ - push @{$$help_info{$$category_name}}, [$$command, $$description]; \ - $$max_command_length = (length($$command) > 37) ? 40 : $$max_command_length; \ - } \ - } \ - \ - my $$description_width = $$terminal_width - $$max_command_length - 4; \ - $$Text::Wrap::columns = $$description_width; \ - \ - for my $$category (sort { $$a eq 'Others' ? 1 : $$b eq 'Others' ? -1 : $$a cmp $$b } keys %help_info) { \ - print "\033[1m$$category\033[0m:\n\n"; \ - for my $$item (sort { $$a->[0] cmp $$b->[0] } @{$$help_info{$$category}}) { \ - my $$description = $$item->[1]; \ - my @desc_lines = split("\n", wrap("", "", $$description)); \ - my $$first_line_description = shift @desc_lines; \ - \ - $$first_line_description =~ s/(\w+)(\|\w+)?=/\033[3m\033[93m$$1$$2\033[0m=/g; \ - \ - my $$formatted_command = $$item->[0]; \ - $$formatted_command = substr($$formatted_command, 0, 37) . "..." if length($$formatted_command) > 37; \ - \ - print sprintf(" \033[0m\033[34m%-$${max_command_length}s\033[0m%s %s\n", $$formatted_command, $$first_line_description); \ - for my $$line (@desc_lines) { \ - $$line =~ s/(\w+)(\|\w+)?=/\033[3m\033[93m$$1$$2\033[0m=/g; \ - print sprintf(" %-$${max_command_length}s %s\n", " ", $$line); \ - } \ - print "\n"; \ - } \ - } - -# ============================================================================== - -${VERBOSE}.SILENT: \ - _install-dependency \ - clean \ - config \ - githooks-config \ - githooks-run \ - help \ - list-variables \ - runner-act \ - shellscript-lint-all \ - version-create-effective-file \ diff --git a/scripts/reports/create-lines-of-code-report.sh b/scripts/reports/create-lines-of-code-report.sh deleted file mode 100755 index 01645c7..0000000 --- a/scripts/reports/create-lines-of-code-report.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/bin/bash - -# WARNING: Please, DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -set -euo pipefail - -# Count lines of code of this repository. This is a gocloc command wrapper. It -# will run gocloc natively if it is installed, otherwise it will run it in a -# Docker container. -# -# Usage: -# $ [options] ./create-lines-of-code-report.sh -# -# Options: -# BUILD_DATETIME=%Y-%m-%dT%H:%M:%S%z # Build datetime, default is `date -u +'%Y-%m-%dT%H:%M:%S%z'` -# FORCE_USE_DOCKER=true # If set to true the command is run in a Docker container, default is 'false' -# VERBOSE=true # Show all the executed commands, default is `false` - -# ============================================================================== - -function main() { - - cd "$(git rev-parse --show-toplevel)" - - create-report - enrich-report -} - -function create-report() { - - if command -v gocloc > /dev/null 2>&1 && ! is-arg-true "${FORCE_USE_DOCKER:-false}"; then - run-gocloc-natively - else - run-gocloc-in-docker - fi - # shellcheck disable=SC2002 - cat lines-of-code-report.tmp.json \ - | jq -r '["Language","files","blank","comment","code"],["--------"],(.languages[]|[.name,.files,.blank,.comment,.code]),["-----"],(.total|["TOTAL",.files,.blank,.comment,.code])|@tsv' \ - | sed 's/Plain Text/Plaintext/g' \ - | column -t -} - -function run-gocloc-natively() { - - gocloc --output-type=json . > lines-of-code-report.tmp.json -} - -function run-gocloc-in-docker() { - - # shellcheck disable=SC1091 - source ./scripts/docker/docker.lib.sh - - # shellcheck disable=SC2155 - local image=$(name=ghcr.io/make-ops-tools/gocloc docker-get-image-version-and-pull) - docker run --rm --platform linux/amd64 \ - --volume "$PWD":/workdir \ - "$image" \ - --output-type=json \ - . \ - > lines-of-code-report.tmp.json -} - -function enrich-report() { - - build_datetime=${BUILD_DATETIME:-$(date -u +'%Y-%m-%dT%H:%M:%S%z')} - git_url=$(git config --get remote.origin.url) - git_branch=$(git rev-parse --abbrev-ref HEAD) - git_commit_hash=$(git rev-parse HEAD) - git_tags=$(echo \""$(git tag | tr '\n' ',' | sed 's/,$//' | sed 's/,/","/g')"\" | sed 's/""//g') - pipeline_run_id=${GITHUB_RUN_ID:-0} - pipeline_run_number=${GITHUB_RUN_NUMBER:-0} - pipeline_run_attempt=${GITHUB_RUN_ATTEMPT:-0} - - # shellcheck disable=SC2086 - jq \ - '.creationInfo |= . + {"created":"'${build_datetime}'","repository":{"url":"'${git_url}'","branch":"'${git_branch}'","tags":['${git_tags}'],"commitHash":"'${git_commit_hash}'"},"pipeline":{"id":'${pipeline_run_id}',"number":'${pipeline_run_number}',"attempt":'${pipeline_run_attempt}'}}' \ - lines-of-code-report.tmp.json \ - > lines-of-code-report.json - rm -f lines-of-code-report.tmp.json -} - -# ============================================================================== - -function is-arg-true() { - - if [[ "$1" =~ ^(true|yes|y|on|1|TRUE|YES|Y|ON)$ ]]; then - return 0 - else - return 1 - fi -} - -# ============================================================================== - -is-arg-true "${VERBOSE:-false}" && set -x - -main "$@" - -exit 0 diff --git a/scripts/reports/create-sbom-report.sh b/scripts/reports/create-sbom-report.sh deleted file mode 100755 index 1ed735a..0000000 --- a/scripts/reports/create-sbom-report.sh +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/bash - -# WARNING: Please, DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -set -euo pipefail - -# Script to generate SBOM (Software Bill of Materials) for the repository -# content and any artefact created by the CI/CD pipeline. This is a syft command -# wrapper. It will run syft natively if it is installed, otherwise it will run -# it in a Docker container. -# -# Usage: -# $ [options] ./create-sbom-report.sh -# -# Options: -# BUILD_DATETIME=%Y-%m-%dT%H:%M:%S%z # Build datetime, default is `date -u +'%Y-%m-%dT%H:%M:%S%z'` -# FORCE_USE_DOCKER=true # If set to true the command is run in a Docker container, default is 'false' -# VERBOSE=true # Show all the executed commands, default is `false` - -# ============================================================================== - -function main() { - - cd "$(git rev-parse --show-toplevel)" - - create-report - enrich-report -} - -function create-report() { - - if command -v syft > /dev/null 2>&1 && ! is-arg-true "${FORCE_USE_DOCKER:-false}"; then - run-syft-natively - else - run-syft-in-docker - fi -} - -function run-syft-natively() { - - syft packages dir:"$PWD" \ - --config "$PWD/scripts/config/syft.yaml" \ - --output spdx-json="$PWD/sbom-repository-report.tmp.json" -} - -function run-syft-in-docker() { - - # shellcheck disable=SC1091 - source ./scripts/docker/docker.lib.sh - - # shellcheck disable=SC2155 - local image=$(name=ghcr.io/anchore/syft docker-get-image-version-and-pull) - docker run --rm --platform linux/amd64 \ - --volume "$PWD":/workdir \ - "$image" \ - packages dir:/workdir \ - --config /workdir/scripts/config/syft.yaml \ - --output spdx-json=/workdir/sbom-repository-report.tmp.json -} - -function enrich-report() { - - build_datetime=${BUILD_DATETIME:-$(date -u +'%Y-%m-%dT%H:%M:%S%z')} - git_url=$(git config --get remote.origin.url) - git_branch=$(git rev-parse --abbrev-ref HEAD) - git_commit_hash=$(git rev-parse HEAD) - git_tags=$(echo \""$(git tag | tr '\n' ',' | sed 's/,$//' | sed 's/,/","/g')"\" | sed 's/""//g') - pipeline_run_id=${GITHUB_RUN_ID:-0} - pipeline_run_number=${GITHUB_RUN_NUMBER:-0} - pipeline_run_attempt=${GITHUB_RUN_ATTEMPT:-0} - - # shellcheck disable=SC2086 - jq \ - '.creationInfo |= . + {"created":"'${build_datetime}'","repository":{"url":"'${git_url}'","branch":"'${git_branch}'","tags":['${git_tags}'],"commitHash":"'${git_commit_hash}'"},"pipeline":{"id":'${pipeline_run_id}',"number":'${pipeline_run_number}',"attempt":'${pipeline_run_attempt}'}}' \ - sbom-repository-report.tmp.json \ - > sbom-repository-report.json - rm -f sbom-repository-report.tmp.json -} - -# ============================================================================== - -function is-arg-true() { - - if [[ "$1" =~ ^(true|yes|y|on|1|TRUE|YES|Y|ON)$ ]]; then - return 0 - else - return 1 - fi -} - -# ============================================================================== - -is-arg-true "${VERBOSE:-false}" && set -x - -main "$@" - -exit 0 diff --git a/scripts/reports/perform-static-analysis.sh b/scripts/reports/perform-static-analysis.sh deleted file mode 100755 index 2426e6d..0000000 --- a/scripts/reports/perform-static-analysis.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/bash - -# WARNING: Please, DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -set -euo pipefail - -# Script to perform static analysis of the repository content and upload the -# report to SonarCloud. -# -# Usage: -# $ [options] ./perform-static-analysis.sh -# -# Expects: -# BRANCH_NAME=branch-name # Branch to report on -# SONAR_ORGANISATION_KEY=org-key # SonarCloud organisation key -# SONAR_PROJECT_KEY=project-key # SonarCloud project key -# SONAR_TOKEN=token # SonarCloud token -# -# Options: -# FORCE_USE_DOCKER=true # If set to true the command is run in a Docker container, default is 'false' -# VERBOSE=true # Show all the executed commands, default is 'false' - -# ============================================================================== - -function main() { - - cd "$(git rev-parse --show-toplevel)" - - if command -v sonar-scanner > /dev/null 2>&1 && ! is-arg-true "${FORCE_USE_DOCKER:-false}"; then - run-sonar-scanner-natively - else - run-sonar-scanner-in-docker - fi -} - -function run-sonar-scanner-natively() { - - sonar-scanner \ - -Dproject.settings="$PWD/scripts/config/sonar-scanner.properties" \ - -Dsonar.branch.name="${BRANCH_NAME:-$(git rev-parse --abbrev-ref HEAD)}" \ - -Dsonar.organization="$SONAR_ORGANISATION_KEY" \ - -Dsonar.projectKey="$SONAR_PROJECT_KEY" \ - -Dsonar.token="$SONAR_TOKEN" -} - -function run-sonar-scanner-in-docker() { - - # shellcheck disable=SC1091 - source ./scripts/docker/docker.lib.sh - - # shellcheck disable=SC2155 - local image=$(name=sonarsource/sonar-scanner-cli docker-get-image-version-and-pull) - docker run --rm --platform linux/amd64 \ - --volume "$PWD":/usr/src \ - "$image" \ - -Dproject.settings=/usr/src/scripts/config/sonar-scanner.properties \ - -Dsonar.branch.name="${BRANCH_NAME:-$(git rev-parse --abbrev-ref HEAD)}" \ - -Dsonar.organization="$SONAR_ORGANISATION_KEY" \ - -Dsonar.projectKey="$SONAR_PROJECT_KEY" \ - -Dsonar.token="$SONAR_TOKEN" -} - -# ============================================================================== - -function is-arg-true() { - - if [[ "$1" =~ ^(true|yes|y|on|1|TRUE|YES|Y|ON)$ ]]; then - return 0 - else - return 1 - fi -} - -# ============================================================================== - -is-arg-true "${VERBOSE:-false}" && set -x - -main "$@" - -exit 0 diff --git a/scripts/reports/scan-vulnerabilities.sh b/scripts/reports/scan-vulnerabilities.sh deleted file mode 100755 index eb68d4b..0000000 --- a/scripts/reports/scan-vulnerabilities.sh +++ /dev/null @@ -1,103 +0,0 @@ -#!/bin/bash - -# WARNING: Please, DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -set -euo pipefail - -# Script to scan an SBOM file for CVEs (Common Vulnerabilities and Exposures). -# This is a grype command wrapper. It will run grype natively if it is -# installed, otherwise it will run it in a Docker container. -# -# Usage: -# $ [options] ./scan-vulnerabilities.sh -# -# Options: -# BUILD_DATETIME=%Y-%m-%dT%H:%M:%S%z # Build datetime, default is `date -u +'%Y-%m-%dT%H:%M:%S%z'` -# FORCE_USE_DOCKER=true # If set to true the command is run in a Docker container, default is 'false' -# VERBOSE=true # Show all the executed commands, default is `false` -# -# Depends on: -# $ ./create-sbom-report.sh - -# ============================================================================== - -function main() { - - cd "$(git rev-parse --show-toplevel)" - - create-report - enrich-report -} - -function create-report() { - - if command -v grype > /dev/null 2>&1 && ! is-arg-true "${FORCE_USE_DOCKER:-false}"; then - run-grype-natively - else - run-grype-in-docker - fi -} - -function run-grype-natively() { - - grype \ - sbom:"$PWD/sbom-repository-report.json" \ - --config "$PWD/scripts/config/grype.yaml" \ - --output json \ - --file "$PWD/vulnerabilities-repository-report.tmp.json" -} - -function run-grype-in-docker() { - - # shellcheck disable=SC1091 - source ./scripts/docker/docker.lib.sh - - # shellcheck disable=SC2155 - local image=$(name=ghcr.io/anchore/grype docker-get-image-version-and-pull) - docker run --rm --platform linux/amd64 \ - --volume "$PWD":/workdir \ - --volume /tmp/grype/db:/.cache/grype/db \ - "$image" \ - sbom:/workdir/sbom-repository-report.json \ - --config /workdir/scripts/config/grype.yaml \ - --output json \ - --file /workdir/vulnerabilities-repository-report.tmp.json -} - -function enrich-report() { - - build_datetime=${BUILD_DATETIME:-$(date -u +'%Y-%m-%dT%H:%M:%S%z')} - git_url=$(git config --get remote.origin.url) - git_branch=$(git rev-parse --abbrev-ref HEAD) - git_commit_hash=$(git rev-parse HEAD) - git_tags=$(echo \""$(git tag | tr '\n' ',' | sed 's/,$//' | sed 's/,/","/g')"\" | sed 's/""//g') - pipeline_run_id=${GITHUB_RUN_ID:-0} - pipeline_run_number=${GITHUB_RUN_NUMBER:-0} - pipeline_run_attempt=${GITHUB_RUN_ATTEMPT:-0} - - # shellcheck disable=SC2086 - jq \ - '.creationInfo |= . + {"created":"'${build_datetime}'","repository":{"url":"'${git_url}'","branch":"'${git_branch}'","tags":['${git_tags}'],"commitHash":"'${git_commit_hash}'"},"pipeline":{"id":'${pipeline_run_id}',"number":'${pipeline_run_number}',"attempt":'${pipeline_run_attempt}'}}' \ - vulnerabilities-repository-report.tmp.json \ - > vulnerabilities-repository-report.json - rm -f vulnerabilities-repository-report.tmp.json -} - -# ============================================================================== - -function is-arg-true() { - - if [[ "$1" =~ ^(true|yes|y|on|1|TRUE|YES|Y|ON)$ ]]; then - return 0 - else - return 1 - fi -} - -# ============================================================================== - -is-arg-true "${VERBOSE:-false}" && set -x - -main "$@" - -exit 0 diff --git a/scripts/shellscript-linter.sh b/scripts/shellscript-linter.sh deleted file mode 100755 index 8b3fe09..0000000 --- a/scripts/shellscript-linter.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash - -# WARNING: Please DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -set -euo pipefail - -# ShellCheck command wrapper. It will run ShellCheck natively if it is -# installed, otherwise it will run it in a Docker container. -# -# Usage: -# $ [options] ./shellscript-linter.sh -# -# Arguments (provided as environment variables): -# file=shellscript # Path to the shell script to lint, relative to the project's top-level directory, default is itself -# FORCE_USE_DOCKER=true # If set to true the command is run in a Docker container, default is 'false' -# VERBOSE=true # Show all the executed commands, default is 'false' - -# ============================================================================== - -function main() { - - cd "$(git rev-parse --show-toplevel)" - - [ -z "${file:-}" ] && echo "WARNING: 'file' variable not set, defaulting to itself" - local file=${file:-scripts/shellscript-linter.sh} - if command -v shellcheck > /dev/null 2>&1 && ! is-arg-true "${FORCE_USE_DOCKER:-false}"; then - file="$file" run-shellcheck-natively - else - file="$file" run-shellcheck-in-docker - fi -} - -# Run ShellCheck natively. -# Arguments (provided as environment variables): -# file=[path to the shell script to lint, relative to the project's top-level directory] -function run-shellcheck-natively() { - - # shellcheck disable=SC2001 - shellcheck "$(echo "$file" | sed "s#$PWD#.#")" -} - -# Run ShellCheck in a Docker container. -# Arguments (provided as environment variables): -# file=[path to the shell script to lint, relative to the project's top-level directory] -function run-shellcheck-in-docker() { - - # shellcheck disable=SC1091 - source ./scripts/docker/docker.lib.sh - - # shellcheck disable=SC2155 - local image=$(name=koalaman/shellcheck docker-get-image-version-and-pull) - # shellcheck disable=SC2001 - docker run --rm --platform linux/amd64 \ - --volume "$PWD:/workdir" \ - --workdir /workdir \ - "$image" \ - "/workdir/$(echo "$file" | sed "s#$PWD#.#")" -} - -# ============================================================================== - -function is-arg-true() { - - if [[ "$1" =~ ^(true|yes|y|on|1|TRUE|YES|Y|ON)$ ]]; then - return 0 - else - return 1 - fi -} - -# ============================================================================== - -is-arg-true "${VERBOSE:-false}" && set -x - -main "$@" - -exit 0 diff --git a/scripts/terraform/examples/terraform-state-aws-s3/.gitignore b/scripts/terraform/examples/terraform-state-aws-s3/.gitignore deleted file mode 100644 index c831140..0000000 --- a/scripts/terraform/examples/terraform-state-aws-s3/.gitignore +++ /dev/null @@ -1,41 +0,0 @@ -# Ignore the lock file as this is just an example -.terraform.lock.hcl -# Ignore Terraform plan -*tfplan* - -# SEE: https://github.com/github/gitignore/blob/main/Terraform.gitignore - -# Local .terraform directories -**/.terraform/* - -# .tfstate files -*.tfstate -*.tfstate.* - -# Crash log files -crash.log -crash.*.log - -# Exclude all .tfvars files, which are likely to contain sensitive data, such as -# password, private keys, and other secrets. These should not be part of version -# control as they are data points which are potentially sensitive and subject -# to change depending on the environment. -*.tfvars -*.tfvars.json - -# Ignore override files as they are usually used to override resources locally and so -# are not checked in -override.tf -override.tf.json -*_override.tf -*_override.tf.json - -# Include override files you do wish to add to version control using negated pattern -# !example_override.tf - -# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan -# example: *tfplan* - -# Ignore CLI configuration files -.terraformrc -terraform.rc diff --git a/scripts/terraform/examples/terraform-state-aws-s3/main.tf b/scripts/terraform/examples/terraform-state-aws-s3/main.tf deleted file mode 100644 index a4ca5b0..0000000 --- a/scripts/terraform/examples/terraform-state-aws-s3/main.tf +++ /dev/null @@ -1,46 +0,0 @@ -resource "aws_s3_bucket" "terraform_state_store" { - bucket = var.terraform_state_bucket_name - lifecycle { - prevent_destroy = false // FIXME: Normally, this should be 'true' - this is just an example - } -} - -resource "aws_s3_bucket_versioning" "enabled" { - bucket = aws_s3_bucket.terraform_state_store.id - versioning_configuration { - status = "Enabled" - } -} - -resource "aws_s3_bucket_server_side_encryption_configuration" "default" { - bucket = aws_s3_bucket.terraform_state_store.id - rule { - apply_server_side_encryption_by_default { - sse_algorithm = "AES256" - } - } -} - -resource "aws_s3_bucket_public_access_block" "public_access" { - bucket = aws_s3_bucket.terraform_state_store.id - block_public_acls = true - block_public_policy = true - ignore_public_acls = true - restrict_public_buckets = true -} - -resource "aws_dynamodb_table" "dynamodb_terraform_state_lock" { - name = var.terraform_state_table_name - billing_mode = "PAY_PER_REQUEST" - hash_key = "LockID" - attribute { - name = "LockID" - type = "S" - } - server_side_encryption { - enabled = true - } - point_in_time_recovery { - enabled = true - } -} diff --git a/scripts/terraform/examples/terraform-state-aws-s3/provider.tf b/scripts/terraform/examples/terraform-state-aws-s3/provider.tf deleted file mode 100644 index b64be2a..0000000 --- a/scripts/terraform/examples/terraform-state-aws-s3/provider.tf +++ /dev/null @@ -1,3 +0,0 @@ -provider "aws" { - region = "eu-west-2" -} diff --git a/scripts/terraform/examples/terraform-state-aws-s3/variables.tf b/scripts/terraform/examples/terraform-state-aws-s3/variables.tf deleted file mode 100644 index 07f60cb..0000000 --- a/scripts/terraform/examples/terraform-state-aws-s3/variables.tf +++ /dev/null @@ -1,9 +0,0 @@ -variable "terraform_state_bucket_name" { - description = "The S3 bucket name to store Terraform state" - default = "repository-template-example-terraform-state-store" -} - -variable "terraform_state_table_name" { - description = "The DynamoDB table name to acquire Terraform lock" - default = "repository-template-example-terraform-state-lock" -} diff --git a/scripts/terraform/examples/terraform-state-aws-s3/versions.tf b/scripts/terraform/examples/terraform-state-aws-s3/versions.tf deleted file mode 100644 index 18fd04a..0000000 --- a/scripts/terraform/examples/terraform-state-aws-s3/versions.tf +++ /dev/null @@ -1,8 +0,0 @@ -terraform { - required_version = ">= 1.5.0" - required_providers { - aws = { - version = ">= 5.14.0" - } - } -} diff --git a/scripts/terraform/terraform.lib.sh b/scripts/terraform/terraform.lib.sh deleted file mode 100644 index 7793b9b..0000000 --- a/scripts/terraform/terraform.lib.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/bash - -# WARNING: Please DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -set -euo pipefail - -# A set of Terraform functions written in Bash. -# -# Usage: -# $ source ./terraform.lib.sh - -# ============================================================================== -# Common Terraform functions. - -# Initialise Terraform. -# Arguments (provided as environment variables): -# dir=[path to a directory where the command will be executed, relative to the project's top-level directory, default is '.'] -# opts=[options to pass to the Terraform init command, default is none/empty] -function terraform-init() { - - _terraform init # 'dir' and 'opts' are passed to the function as environment variables, if set -} - -# Plan Terraform changes. -# Arguments (provided as environment variables): -# dir=[path to a directory where the command will be executed, relative to the project's top-level directory, default is '.'] -# opts=[options to pass to the Terraform plan command, default is none/empty] -function terraform-plan() { - - _terraform plan # 'dir' and 'opts' are passed to the function as environment variables, if set -} - -# Apply Terraform changes. -# Arguments (provided as environment variables): -# dir=[path to a directory where the command will be executed, relative to the project's top-level directory, default is '.'] -# opts=[options to pass to the Terraform apply command, default is none/empty] -function terraform-apply() { - - _terraform apply # 'dir' and 'opts' are passed to the function as environment variables, if set -} - -# Destroy Terraform resources. -# Arguments (provided as environment variables): -# dir=[path to a directory where the command will be executed, relative to the project's top-level directory, default is '.'] -# opts=[options to pass to the Terraform destroy command, default is none/empty] -function terraform-destroy() { - - _terraform apply -destroy # 'dir' and 'opts' are passed to the function as environment variables, if set -} - -# Format Terraform code. -# Arguments (provided as environment variables): -# dir=[path to a directory where the command will be executed, relative to the project's top-level directory, default is '.'] -# opts=[options to pass to the Terraform fmt command, default is '-recursive'] -function terraform-fmt() { - - _terraform fmt -recursive # 'dir' and 'opts' are passed to the function as environment variables, if set -} - -# Validate Terraform code. -# Arguments (provided as environment variables): -# dir=[path to a directory where the command will be executed, relative to the project's top-level directory, default is '.'] -# opts=[options to pass to the Terraform validate command, default is none/empty] -function terraform-validate() { - - _terraform validate # 'dir' and 'opts' are passed to the function as environment variables, if set -} - -# shellcheck disable=SC2001,SC2155 -function _terraform() { - - local dir="$(echo "${dir:-$PWD}" | sed "s#$PWD#.#")" - local cmd="-chdir=$dir $* ${opts:-}" - local project_dir="$(git rev-parse --show-toplevel)" - - cmd="$cmd" "$project_dir/scripts/terraform/terraform.sh" -} - -# Remove Terraform files. -# Arguments (provided as environment variables): -# dir=[path to a directory where the command will be executed, relative to the project's top-level directory, default is '.'] -function terraform-clean() { - - ( - cd "${dir:-$PWD}" - rm -rf \ - .terraform \ - terraform.log \ - terraform.tfplan \ - terraform.tfstate \ - terraform.tfstate.backup - ) -} diff --git a/scripts/terraform/terraform.mk b/scripts/terraform/terraform.mk deleted file mode 100644 index 120a059..0000000 --- a/scripts/terraform/terraform.mk +++ /dev/null @@ -1,96 +0,0 @@ -# This file is for you! Edit it to implement your own Terraform make targets. - -# ============================================================================== -# Custom implementation - implementation of a make target should not exceed 5 lines of effective code. -# In most cases there should be no need to modify the existing make targets. - -terraform-init: # Initialise Terraform - optional: terraform_dir|dir=[path to a directory where the command will be executed, relative to the project's top-level directory, default is one of the module variables or the example directory, if not set], terraform_opts|opts=[options to pass to the Terraform init command, default is none/empty] @Development - make _terraform cmd="init" \ - dir=$(or ${terraform_dir}, ${dir}) \ - opts=$(or ${terraform_opts}, ${opts}) - -terraform-plan: # Plan Terraform changes - optional: terraform_dir|dir=[path to a directory where the command will be executed, relative to the project's top-level directory, default is one of the module variables or the example directory, if not set], terraform_opts|opts=[options to pass to the Terraform plan command, default is none/empty] @Development - make _terraform cmd="plan" \ - dir=$(or ${terraform_dir}, ${dir}) \ - opts=$(or ${terraform_opts}, ${opts}) - -terraform-apply: # Apply Terraform changes - optional: terraform_dir|dir=[path to a directory where the command will be executed, relative to the project's top-level directory, default is one of the module variables or the example directory, if not set], terraform_opts|opts=[options to pass to the Terraform apply command, default is none/empty] @Development - make _terraform cmd="apply" \ - dir=$(or ${terraform_dir}, ${dir}) \ - opts=$(or ${terraform_opts}, ${opts}) - -terraform-destroy: # Destroy Terraform resources - optional: terraform_dir|dir=[path to a directory where the command will be executed, relative to the project's top-level directory, default is one of the module variables or the example directory, if not set], terraform_opts|opts=[options to pass to the Terraform destroy command, default is none/empty] @Development - make _terraform \ - cmd="destroy" \ - dir=$(or ${terraform_dir}, ${dir}) \ - opts=$(or ${terraform_opts}, ${opts}) - -terraform-fmt: # Format Terraform files - optional: terraform_dir|dir=[path to a directory where the command will be executed, relative to the project's top-level directory, default is one of the module variables or the example directory, if not set], terraform_opts|opts=[options to pass to the Terraform fmt command, default is '-recursive'] @Quality - make _terraform cmd="fmt" \ - dir=$(or ${terraform_dir}, ${dir}) \ - opts=$(or ${terraform_opts}, ${opts}) - -terraform-validate: # Validate Terraform configuration - optional: terraform_dir|dir=[path to a directory where the command will be executed, relative to the project's top-level directory, default is one of the module variables or the example directory, if not set], terraform_opts|opts=[options to pass to the Terraform validate command, default is none/empty] @Quality - make _terraform cmd="validate" \ - dir=$(or ${terraform_dir}, ${dir}) \ - opts=$(or ${terraform_opts}, ${opts}) - -clean:: # Remove Terraform files (terraform) - optional: terraform_dir|dir=[path to a directory where the command will be executed, relative to the project's top-level directory, default is one of the module variables or the example directory, if not set] @Operations - make _terraform cmd="clean" \ - dir=$(or ${terraform_dir}, ${dir}) \ - opts=$(or ${terraform_opts}, ${opts}) - -_terraform: # Terraform command wrapper - mandatory: cmd=[command to execute]; optional: dir=[path to a directory where the command will be executed, relative to the project's top-level directory, default is one of the module variables or the example directory, if not set], opts=[options to pass to the Terraform command, default is none/empty] - # 'TERRAFORM_STACK' is passed to the functions as environment variable - TERRAFORM_STACK=$(or ${TERRAFORM_STACK}, $(or ${terraform_stack}, $(or ${STACK}, $(or ${stack}, scripts/terraform/examples/terraform-state-aws-s3)))) - dir=$(or ${dir}, ${TERRAFORM_STACK}) - source scripts/terraform/terraform.lib.sh - terraform-${cmd} # 'dir' and 'opts' are accessible by the function as environment variables, if set - -# ============================================================================== -# Quality checks - please DO NOT edit this section! - -terraform-shellscript-lint: # Lint all Terraform module shell scripts @Quality - for file in $$(find scripts/terraform -type f -name "*.sh"); do - file=$${file} scripts/shellscript-linter.sh - done - -# ============================================================================== -# Module tests and examples - please DO NOT edit this section! - -terraform-example-provision-aws-infrastructure: # Provision example of AWS infrastructure @ExamplesAndTests - make terraform-init - make terraform-plan opts="-out=terraform.tfplan" - make terraform-apply opts="-auto-approve terraform.tfplan" - -terraform-example-destroy-aws-infrastructure: # Destroy example of AWS infrastructure @ExamplesAndTests - make terraform-destroy opts="-auto-approve" - -terraform-example-clean: # Remove Terraform example files @ExamplesAndTests - dir=$(or ${dir}, ${TERRAFORM_STACK}) - source scripts/terraform/terraform.lib.sh - terraform-clean - rm -f ${TERRAFORM_STACK}/.terraform.lock.hcl - -# ============================================================================== -# Configuration - please DO NOT edit this section! - -terraform-install: # Install Terraform @Installation - make _install-dependency name="terraform" - -# ============================================================================== - -${VERBOSE}.SILENT: \ - _terraform \ - clean \ - terraform-apply \ - terraform-destroy \ - terraform-example-clean \ - terraform-example-destroy-aws-infrastructure \ - terraform-example-provision-aws-infrastructure \ - terraform-fmt \ - terraform-init \ - terraform-install \ - terraform-plan \ - terraform-shellscript-lint \ - terraform-validate \ diff --git a/scripts/terraform/terraform.sh b/scripts/terraform/terraform.sh deleted file mode 100755 index 73f37c1..0000000 --- a/scripts/terraform/terraform.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash - -# WARNING: Please DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -set -euo pipefail - -# Terraform command wrapper. It will run the command natively if Terraform is -# installed, otherwise it will run it in a Docker container. -# -# Usage: -# $ [options] ./terraform.sh -# -# Options: -# cmd=command # Terraform command to execute -# FORCE_USE_DOCKER=true # If set to true the command is run in a Docker container, default is 'false' -# VERBOSE=true # Show all the executed commands, default is 'false' - -# ============================================================================== - -function main() { - - cd "$(git rev-parse --show-toplevel)" - - if command -v terraform > /dev/null 2>&1 && ! is-arg-true "${FORCE_USE_DOCKER:-false}"; then - # shellcheck disable=SC2154 - cmd=$cmd run-terraform-natively - else - cmd=$cmd run-terraform-in-docker - fi -} - -# Run Terraform natively. -# Arguments (provided as environment variables): -# cmd=[Terraform command to execute] -function run-terraform-natively() { - - # shellcheck disable=SC2086 - terraform $cmd -} - -# Run Terraform in a Docker container. -# Arguments (provided as environment variables): -# cmd=[Terraform command to execute] -function run-terraform-in-docker() { - - # shellcheck disable=SC1091 - source ./scripts/docker/docker.lib.sh - - # shellcheck disable=SC2155 - local image=$(name=hashicorp/terraform docker-get-image-version-and-pull) - # shellcheck disable=SC2086 - docker run --rm --platform linux/amd64 \ - --volume "$PWD":/workdir \ - --workdir /workdir \ - "$image" \ - $cmd -} - -# ============================================================================== - -function is-arg-true() { - - if [[ "$1" =~ ^(true|yes|y|on|1|TRUE|YES|Y|ON)$ ]]; then - return 0 - else - return 1 - fi -} - -# ============================================================================== - -is-arg-true "${VERBOSE:-false}" && set -x - -main "$@" - -exit 0 diff --git a/scripts/tests/test.mk b/scripts/tests/test.mk deleted file mode 100644 index aab47c6..0000000 --- a/scripts/tests/test.mk +++ /dev/null @@ -1,91 +0,0 @@ -# WARNING: Please DO NOT edit this file! It is maintained in the Repository Template (https://github.com/nhs-england-tools/repository-template). Raise a PR instead. - -# The test types listed here are both those which might run both locally and in CI, or -# in one but not the other. All of the test types listed at -# https://github.com/NHSDigital/software-engineering-quality-framework/blob/main/quality-checks.md -# should be represented here with the exception of: -# - dependency scanning, which we expect to be applied at the repository level -# - secret scanning, which we expect to be a pre-commit hook -# - code review, which is outside the scope of automated testing for the moment - -test-unit: # Run your unit tests from scripts/test/unit @Testing - make _test name="unit" - -test-lint: # Lint your code from scripts/test/lint @Testing - make _test name="lint" - -test-coverage: # Evaluate code coverage from scripts/test/coverage @Testing - make _test name="coverage" - -test-accessibility: # Run your accessibility tests from scripts/test/accessibility @Testing - make _test name="accessibility" - -test-contract: # Run your contract tests from scripts/test/contract @Testing - make _test name="contract" - -test-integration: # Run your integration tests from scripts/test/integration @Testing - make _test name="integration" - -test-load: # Run all your load tests @Testing - make \ - test-capacity \ - test-soak \ - test-response-time - # You may wish to add more here, depending on your app - -test-capacity: # Test what load level your app fails at from scripts/test/capacity @Testing - make _test name="capacity" - -test-soak: # Test that resources don't get exhausted over time from scripts/test/soak @Testing - make _test name="soak" - -test-response-time: # Test your API response times from scripts/test/response-time @Testing - make _test name="response-time" - -test-security: # Run your security tests from scripts/test/security @Testing - make _test name="security" - -test-ui: # Run your UI tests from scripts/test/ui @Testing - make _test name="ui" - -test-ui-performance: # Run UI render tests from scripts/test/ui-performance @Testing - make _test name="ui-performance" - -test: # Run all the test tasks @Testing - make \ - test-unit \ - test-lint \ - test-coverage \ - test-contract \ - test-security \ - test-ui \ - test-ui-performance \ - test-integration \ - test-accessibility \ - test-load - -_test: - set -e - script="./scripts/tests/${name}.sh" - if [ -e "$${script}" ]; then - exec $${script} - else - echo "make test-${name} not implemented: $${script} not found" >&2 - fi - -${VERBOSE}.SILENT: \ - _test \ - test \ - test-accessibility \ - test-capacity \ - test-contract \ - test-coverage \ - test-soak \ - test-integration \ - test-lint \ - test-load \ - test-response-time \ - test-security \ - test-ui \ - test-ui-performance \ - test-unit \ diff --git a/scripts/tests/unit.sh b/scripts/tests/unit.sh deleted file mode 100755 index c589be5..0000000 --- a/scripts/tests/unit.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -set -euo pipefail - -cd "$(git rev-parse --show-toplevel)" - -# This file is for you! Edit it to call your unit test suite. Note that the same -# file will be called if you run it locally as if you run it on CI. - -# Replace the following line with something like: -# -# rails test:unit -# python manage.py test -# npm run test -# -# or whatever is appropriate to your project. You should *only* run your fast -# tests from here. If you want to run other test suites, see the predefined -# tasks in scripts/test.mk. - -echo "Unit tests are not yet implemented. See scripts/tests/unit.sh for more." diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000..0ca8e86 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,6 @@ +sonar.projectKey=NHSDigital_nhs-eps-spine-client +sonar.organization=nhsdigital +sonar.host.url=https://sonarcloud.io + +sonar.coverage.exclusions=**/*.test.*,**/jest.config.ts,scripts/* +sonar.javascript.lcov.reportPaths=coverage/lcov.info diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..8b4b08c --- /dev/null +++ b/src/index.ts @@ -0,0 +1,4 @@ +import {createSpineClient} from "./spine-client" +import {LiveSpineClient} from "./live-spine-client" + +export {createSpineClient, LiveSpineClient} diff --git a/src/live-spine-client.ts b/src/live-spine-client.ts new file mode 100644 index 0000000..1cdf4a3 --- /dev/null +++ b/src/live-spine-client.ts @@ -0,0 +1,161 @@ +import {Logger} from "@aws-lambda-powertools/logger" +import {serviceHealthCheck} from "./status" +import {SpineClient, SpineStatus} from "./spine-client" +import {Agent} from "https" +import axios, {Axios, AxiosRequestConfig, AxiosResponse} from "axios" +import {APIGatewayProxyEventHeaders} from "aws-lambda" + +// timeout in ms to wait for response from spine to avoid lambda timeout +const SPINE_TIMEOUT = 45000 + +export class LiveSpineClient implements SpineClient { + private readonly SPINE_URL_SCHEME = "https" + private readonly SPINE_ENDPOINT = process.env.TargetSpineServer + private readonly spineASID: string | undefined + private readonly httpsAgent: Agent + private readonly spinePartyKey: string | undefined + private readonly axiosInstance: Axios + private readonly logger: Logger + + constructor(logger: Logger) { + this.spineASID = process.env.SpineASID + this.spinePartyKey = process.env.SpinePartyKey + + this.httpsAgent = new Agent({ + cert: process.env.SpinePublicCertificate, + key: process.env.SpinePrivateKey, + ca: process.env.SpineCAChain + }) + this.logger = logger + this.axiosInstance = axios.create() + this.axiosInstance.interceptors.request.use((config) => { + config.headers["request-startTime"] = new Date().getTime() + return config + }) + + this.axiosInstance.interceptors.response.use((response) => { + const currentTime = new Date().getTime() + const startTime = response.config.headers["request-startTime"] + this.logger.info("spine request duration", {spine_duration: currentTime - startTime}) + + return response + }, (error) => { + const currentTime = new Date().getTime() + const startTime = error.config?.headers["request-startTime"] + this.logger.info("spine request duration", {spine_duration: currentTime - startTime}) + + return Promise.reject(error) + }) + + } + async getPrescriptions(inboundHeaders: APIGatewayProxyEventHeaders): Promise { + try { + const address = this.getSpineEndpoint("mm/patientfacingprescriptions") + // nhsd-nhslogin-user looks like P9:9912003071 + + const outboundHeaders = { + Accept: "application/json", + "Spine-From-Asid": this.spineASID, + "nhsd-party-key": this.spinePartyKey, + nhsNumber: inboundHeaders["nhsNumber"], + "nhsd-correlation-id": inboundHeaders["nhsd-correlation-id"], + "nhsd-nhslogin-user": inboundHeaders["nhsd-nhslogin-user"], + "x-request-id": inboundHeaders["x-request-id"], + "x-correlation-id": inboundHeaders["x-correlation-id"], + "nhsd-request-id": inboundHeaders["nhsd-request-id"] + } + + const queryParams = { + format: "trace-summary" + } + this.logger.info(`making request to ${address}`) + const response = await this.axiosInstance.get(address, { + headers: outboundHeaders, + params: queryParams, + httpsAgent: this.httpsAgent, + timeout: SPINE_TIMEOUT + }) + + // This can be removed when https://nhsd-jira.digital.nhs.uk/browse/AEA-3448 is complete + if ( + response.data["statusCode"] !== undefined && + response.data["statusCode"] !== "1" && + response.data["statusCode"] !== "0" + ) { + this.logger.error("Unsuccessful status code response from spine", { + response: { + data: response.data, + status: response.status, + Headers: response.headers + } + }) + throw new Error("Unsuccessful status code response from spine") + } + return response + } catch (error) { + if (axios.isAxiosError(error)) { + if (error.response) { + this.logger.error("error in response from spine", { + response: { + data: error.response.data, + status: error.response.status, + Headers: error.response.headers + }, + request: { + method: error.request?.path, + params: error.request?.params, + headers: error.request?.headers, + host: error.request?.host + } + }) + } else if (error.request) { + this.logger.error("error in request to spine", { + method: error.request.method, + path: error.request.path, + params: error.request.params, + headers: error.request.headers, + host: error.request.host + }) + } else { + this.logger.error("general error calling spine", {error}) + } + } else { + this.logger.error("general error", {error}) + } + throw error + } + } + + private getSpineEndpoint(requestPath?: string) { + return `${this.SPINE_URL_SCHEME}://${this.SPINE_ENDPOINT}/${requestPath}` + } + + async getStatus(): Promise { + if (!this.isCertificateConfigured()) { + return {status: "pass", message: "Spine certificate is not configured"} + } + + const axiosConfig: AxiosRequestConfig = {timeout: 20000} + let endpoint: string + + if (process.env.healthCheckUrl === undefined) { + axiosConfig.httpsAgent = this.httpsAgent + endpoint = this.getSpineEndpoint("healthcheck") + } else { + axiosConfig.httpsAgent = new Agent() + endpoint = process.env.healthCheckUrl + } + + const spineStatus = await serviceHealthCheck(endpoint, this.logger, axiosConfig, this.axiosInstance) + return {status: spineStatus.status, spineStatus: spineStatus} + } + + isCertificateConfigured(): boolean { + // Check if the required certificate-related environment variables are defined + return ( + process.env.SpinePublicCertificate !== "ChangeMe" && + process.env.SpinePrivateKey !== "ChangeMe" && + process.env.SpineCAChain !== "ChangeMe" + ) + } +} diff --git a/src/sandbox-spine-client.ts b/src/sandbox-spine-client.ts new file mode 100644 index 0000000..42e1c4e --- /dev/null +++ b/src/sandbox-spine-client.ts @@ -0,0 +1,23 @@ +import {AxiosResponse} from "axios" +import {SpineClient} from "./spine-client" +import {StatusCheckResponse} from "./status" + +export class SandboxSpineClient implements SpineClient { + async getStatus(): Promise { + return { + status: "pass", + timeout: "false", + responseCode: 200 + } + } + + async getPrescriptions(): Promise { + // This is not implemented as sandbox lambda does not use this code + throw new Error("INTERACTION_NOT_SUPPORTED_BY_SANDBOX") + } + + isCertificateConfigured(): boolean { + // In the sandbox environment, assume the certificate is always configured + return true + } +} diff --git a/src/spine-client.ts b/src/spine-client.ts new file mode 100644 index 0000000..06c22b7 --- /dev/null +++ b/src/spine-client.ts @@ -0,0 +1,27 @@ +import {Logger} from "@aws-lambda-powertools/logger" +import {LiveSpineClient} from "./live-spine-client" +import {SandboxSpineClient} from "./sandbox-spine-client" +import {APIGatewayProxyEventHeaders} from "aws-lambda" +import {AxiosResponse} from "axios" +import {StatusCheckResponse} from "./status" + +export interface SpineStatus { + status: string + message?: string + spineStatus?: StatusCheckResponse +} + +export interface SpineClient { + getStatus(): Promise + getPrescriptions(inboundHeaders: APIGatewayProxyEventHeaders): Promise + isCertificateConfigured(): boolean +} + +export function createSpineClient(logger: Logger): SpineClient { + const liveMode = process.env.TargetSpineServer !== "sandbox" + if (liveMode) { + return new LiveSpineClient(logger) + } else { + return new SandboxSpineClient() + } +} diff --git a/src/status.ts b/src/status.ts new file mode 100644 index 0000000..d649e63 --- /dev/null +++ b/src/status.ts @@ -0,0 +1,52 @@ +import {Logger} from "@aws-lambda-powertools/logger" +import {Axios, AxiosError, AxiosRequestConfig} from "axios" + +export interface StatusCheckResponse { + status: "pass" | "warn" | "error" + timeout: "true" | "false" + responseCode: number + outcome?: string + links?: string +} + +export async function serviceHealthCheck( + url: string, + logger: Logger, + axiosConfig: AxiosRequestConfig, + axiosInstance: Axios +): Promise { + try { + logger.info(`making request to ${url}`) + + const response = await axiosInstance.get(url, axiosConfig) + return { + status: response.status === 200 ? "pass" : "error", + timeout: "false", + responseCode: response.status, + outcome: response.data, + links: url + } + } catch (error) { + let message + if (error instanceof Error) message = error.message + else message = String(error) + logger.error("Error calling external service for status check: " + message) + + let responseCode + + const axiosError = error as AxiosError + if (axiosError.response === undefined) { + responseCode = 500 + } else { + responseCode = axiosError.response.status + } + + return { + status: "error", + timeout: axiosError.code === "ECONNABORTED" ? "true" : "false", + responseCode: responseCode, + outcome: typeof axiosError.response?.data === "string" ? axiosError.response?.data : undefined, + links: url + } + } +} diff --git a/tests/.gitkeep b/tests/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/tests/live-spine-client.test.ts b/tests/live-spine-client.test.ts new file mode 100644 index 0000000..b1c7a69 --- /dev/null +++ b/tests/live-spine-client.test.ts @@ -0,0 +1,107 @@ +import {LiveSpineClient} from "../src/live-spine-client" +import {jest, expect, describe} from "@jest/globals" +import MockAdapter from "axios-mock-adapter" +import axios from "axios" +import {Logger} from "@aws-lambda-powertools/logger" +import {APIGatewayProxyEventHeaders} from "aws-lambda" + +const mock = new MockAdapter(axios) +process.env.TargetSpineServer = "spine" +type spineFailureTestData = { + httpResponseCode: number + spineStatusCode: string + nhsdLoginUser: string | undefined + errorMessage: string + scenarioDescription: string +} + +describe("live spine client", () => { + const logger = new Logger({serviceName: "spineClient"}) + + afterEach(() => { + mock.reset() + }) + + test("successful response when http response is status 200 and spine status does not exist", async () => { + mock.onGet("https://spine/mm/patientfacingprescriptions").reply(200, {resourceType: "Bundle"}) + const spineClient = new LiveSpineClient(logger) + const headers: APIGatewayProxyEventHeaders = { + "nhsd-nhslogin-user": "P9:9912003071" + } + const spineResponse = await spineClient.getPrescriptions(headers) + + expect(spineResponse.status).toBe(200) + expect(spineResponse.data).toStrictEqual({resourceType: "Bundle"}) + }) + + test("log response time on successful call", async () => { + mock.onGet("https://spine/mm/patientfacingprescriptions").reply(200, {resourceType: "Bundle"}) + const mockLoggerInfo = jest.spyOn(Logger.prototype, "info") + const spineClient = new LiveSpineClient(logger) + const headers: APIGatewayProxyEventHeaders = { + "nhsd-nhslogin-user": "P9:9912003071" + } + await spineClient.getPrescriptions(headers) + + expect(mockLoggerInfo).toHaveBeenCalledWith("spine request duration", {"spine_duration": expect.any(Number)}) + }) + + test("log response time on unsuccessful call", async () => { + mock.onGet("https://spine/mm/patientfacingprescriptions").reply(401) + const mockLoggerInfo = jest.spyOn(Logger.prototype, "info") + const spineClient = new LiveSpineClient(logger) + const headers: APIGatewayProxyEventHeaders = { + "nhsd-nhslogin-user": "P9:9912003071" + } + await expect(spineClient.getPrescriptions(headers)).rejects.toThrow("Request failed with status code 401") + + expect(mockLoggerInfo).toHaveBeenCalledWith("spine request duration", {"spine_duration": expect.any(Number)}) + }) + + test.each([ + { + httpResponseCode: 200, + spineStatusCode: "99", + nhsdLoginUser: "P9:9912003071", + errorMessage: "Unsuccessful status code response from spine", + scenarioDescription: "spine returns a non successful response status" + }, + { + httpResponseCode: 500, + spineStatusCode: "0", + nhsdLoginUser: "P9:9912003071", + errorMessage: "Request failed with status code 500", + scenarioDescription: "spine returns an unsuccessful http status code" + } + ])( + "throw error when $scenarioDescription", + async ({httpResponseCode, spineStatusCode, nhsdLoginUser, errorMessage}) => { + mock.onGet("https://spine/mm/patientfacingprescriptions").reply(httpResponseCode, {statusCode: spineStatusCode}) + const spineClient = new LiveSpineClient(logger) + const headers: APIGatewayProxyEventHeaders = { + "nhsd-nhslogin-user": nhsdLoginUser + } + await expect(spineClient.getPrescriptions(headers)).rejects.toThrow(errorMessage) + } + ) + + test("should throw error when unsuccessful http request", async () => { + mock.onGet("https://spine/mm/patientfacingprescriptions").networkError() + + const spineClient = new LiveSpineClient(logger) + const headers: APIGatewayProxyEventHeaders = { + "nhsd-nhslogin-user": "P9:9912003071" + } + await expect(spineClient.getPrescriptions(headers)).rejects.toThrow("Network Error") + }) + + test("should throw error when timeout on http request", async () => { + mock.onGet("https://spine/mm/patientfacingprescriptions").timeout() + + const spineClient = new LiveSpineClient(logger) + const headers: APIGatewayProxyEventHeaders = { + "nhsd-nhslogin-user": "P9:9912003071" + } + await expect(spineClient.getPrescriptions(headers)).rejects.toThrow("timeout of 45000ms exceeded") + }) +}) diff --git a/tests/status.test.ts b/tests/status.test.ts new file mode 100644 index 0000000..32daf4c --- /dev/null +++ b/tests/status.test.ts @@ -0,0 +1,55 @@ +import {serviceHealthCheck} from "../src/status" +import "jest" +import MockAdapter from "axios-mock-adapter" +import axios from "axios" +import {Logger} from "@aws-lambda-powertools/logger" + +const mock = new MockAdapter(axios) +const axiosInstance = axios.create() + +describe("Health check", () => { + const logger = new Logger({serviceName: "spineClient"}) + + afterEach(() => { + mock.reset() + }) + + test("Successful health check result returns success", async () => { + mock.onGet("/healthcheck").reply(200, {}) + + const spineResponse = await serviceHealthCheck( + "healthcheck", logger, {}, axiosInstance + ) + + expect(spineResponse.status).toBe("pass") + expect(spineResponse.responseCode).toBe(200) + expect(spineResponse.links).toBe("healthcheck") + expect(spineResponse.timeout).toBe("false") + }) + + test("Failure health check result returns failure", async () => { + mock.onGet("/healthcheck").reply(500, {}) + + const spineResponse = await serviceHealthCheck( + "healthcheck", logger, {}, axiosInstance + ) + + expect(spineResponse.status).toBe("error") + expect(spineResponse.responseCode).toBe(500) + expect(spineResponse.links).toBe("healthcheck") + expect(spineResponse.timeout).toBe("false") + }) + + test("health check network issues result returns failure", async () => { + mock.onGet("/healthcheck").networkError() + + const spineResponse = await serviceHealthCheck( + "healthcheck", logger, {}, axiosInstance + ) + + expect(spineResponse.status).toBe("error") + expect(spineResponse.responseCode).toBe(500) + expect(spineResponse.links).toBe("healthcheck") + expect(spineResponse.timeout).toBe("false") + }) +}) diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..149b640 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "rootDir": "src", + "outDir": "lib", + "incremental": true, + "target": "es2020", + "module": "ES2020", + "declaration": true, + "sourceMap": true, + "composite": true, + "moduleResolution": "node", + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "preserveConstEnums": true, + "resolveJsonModule": true, + "allowJs": true, + "strict": false + }, + "include": ["src/*"], + "exclude": ["node_modules"] +} From 28b14d72bae3bb7c0d48112f6df6dcacbf60b2c2 Mon Sep 17 00:00:00 2001 From: Kris Szlapa Date: Wed, 31 Jan 2024 10:36:37 +0000 Subject: [PATCH 02/14] Rename the package --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fc00901..38a02a4 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "@nhs/eps-spine-client", + "name": "@NHSDigital/eps-spine-client", "version": "1.0.0", "description": "The code to invoke the Spine client", "scripts": { From 381f076135a77a36ffcc836208c73370535f76c4 Mon Sep 17 00:00:00 2001 From: Kris Szlapa Date: Wed, 31 Jan 2024 11:57:25 +0000 Subject: [PATCH 03/14] Update the package-lock --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 21f05a7..3bdd124 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "@nhs/eps-spine-client", + "name": "@NHSDigital/eps-spine-client", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@nhs/eps-spine-client", + "name": "@NHSDigital/eps-spine-client", "version": "1.0.0", "license": "MIT", "dependencies": { From 75de05f9f3e84429c707509f814a94c2415df411 Mon Sep 17 00:00:00 2001 From: Kris Szlapa Date: Wed, 31 Jan 2024 12:44:26 +0000 Subject: [PATCH 04/14] Amend the integration guide --- .npmrc | 2 +- README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.npmrc b/.npmrc index bc13573..98b6397 100644 --- a/.npmrc +++ b/.npmrc @@ -1,3 +1,3 @@ //npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN} -@nhs:registry=https://npm.pkg.github.com +@NHSDigital:registry=https://npm.pkg.github.com always-auth=true diff --git a/README.md b/README.md index 7262e8e..da690a5 100644 --- a/README.md +++ b/README.md @@ -13,11 +13,11 @@ This repository encompasses the code for invoking the Spine client, designed for To integrate this into your project, install the package using the following: - command line ```bash -npm install @nhs/eps-spine-client +npm install @NHSDigital/eps-spine-client ``` - package.json ``` -"@nhs/eps-spine-client": "latest" +"@NHSDigital/eps-spine-client": "latest" ``` ## Project Structure From ed235add37d2d41ec78192ea0485874120fe37ee Mon Sep 17 00:00:00 2001 From: Kris Szlapa Date: Thu, 1 Feb 2024 09:13:23 +0000 Subject: [PATCH 05/14] Move sonarcloud steps to within quality check job --- .github/workflows/quality_checks.yml | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/.github/workflows/quality_checks.yml b/.github/workflows/quality_checks.yml index 50f5b64..45cff85 100644 --- a/.github/workflows/quality_checks.yml +++ b/.github/workflows/quality_checks.yml @@ -11,7 +11,7 @@ on: required: true jobs: - lint_build_test: + quality_checks: runs-on: ubuntu-latest steps: - name: Checkout code @@ -54,20 +54,9 @@ jobs: - name: run build run: make build - shell: bash - name: run unit tests run: make test - shell: bash - - sonarcloud: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - ref: ${{ inputs.BRANCH_NAME }} - fetch-depth: 0 - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@master From 6cbd8fb0751f32450e74fe237ea7d266a4dafef6 Mon Sep 17 00:00:00 2001 From: Kris Szlapa Date: Thu, 1 Feb 2024 09:14:05 +0000 Subject: [PATCH 06/14] Add sonarcloud badge --- README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index da690a5..063ab9b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # NHS EPS Spine Client -![Build](https://github.com/NHSDigital/nhs-eps-spine-client/workflows/release/badge.svg?branch=main) +[![Quality gate](https://sonarcloud.io/api/project_badges/quality_gate?project=NHSDigital_nhs-fhir-middy-error-handler)](https://sonarcloud.io/summary/new_code?id=NHSDigital_nhs-fhir-middy-error-handler) This repository contains the code to invoke the Spine client, utilised in @@ -11,11 +11,15 @@ This repository encompasses the code for invoking the Spine client, designed for ### Usage To integrate this into your project, install the package using the following: -- command line + +- command line + ```bash npm install @NHSDigital/eps-spine-client ``` -- package.json + +- package.json + ``` "@NHSDigital/eps-spine-client": "latest" ``` From 86a445c26e8d2a647bd96b60d58e0a444e2c82a7 Mon Sep 17 00:00:00 2001 From: Kris Szlapa Date: Thu, 1 Feb 2024 09:47:08 +0000 Subject: [PATCH 07/14] Fix sonarcloud badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 063ab9b..a6f27e0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # NHS EPS Spine Client -[![Quality gate](https://sonarcloud.io/api/project_badges/quality_gate?project=NHSDigital_nhs-fhir-middy-error-handler)](https://sonarcloud.io/summary/new_code?id=NHSDigital_nhs-fhir-middy-error-handler) +[![Quality gate](https://sonarcloud.io/api/project_badges/quality_gate?project=NHSDigital_nhs-eps-spine-client)](https://sonarcloud.io/summary/new_code?id=NHSDigital_nhs-eps-spine-client) This repository contains the code to invoke the Spine client, utilised in From 815e5f4b52ca35179168ecb97a0153f89b3c9108 Mon Sep 17 00:00:00 2001 From: Kris Szlapa Date: Thu, 1 Feb 2024 15:28:55 +0000 Subject: [PATCH 08/14] Add the package badges --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a6f27e0..2e7c396 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # NHS EPS Spine Client +[![Release to GitHub Packages](https://github.com/NHSDigital/nhs-eps-spine-client/actions/workflows/release.yml/badge.svg?branch=main)](https://github.com/NHSDigital/nhs-eps-spine-client/actions/workflows/release.yml) +[![GitHub package version](https://img.shields.io/github/package-json/v/NHSDigital/nhs-eps-spine-client)](https://github.com/NHSDigital/nhs-eps-spine-client/pkgs/npm/eps-spine-client) [![Quality gate](https://sonarcloud.io/api/project_badges/quality_gate?project=NHSDigital_nhs-eps-spine-client)](https://sonarcloud.io/summary/new_code?id=NHSDigital_nhs-eps-spine-client) This repository contains the code to invoke the Spine client, utilised in From 2834b5fc5f7dac83a86d4c1b3f3ef747e73ce97a Mon Sep 17 00:00:00 2001 From: Kris Szlapa Date: Thu, 1 Feb 2024 17:22:23 +0000 Subject: [PATCH 09/14] Change the package access to public --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 38a02a4..c0c743f 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "license": "MIT", "private": false, "publishConfig": { - "registry": "https://npm.pkg.github.com" + "registry": "https://npm.pkg.github.com", + "access": "public" }, "type": "module", "devDependencies": { From 312c2299913f9f66b0297177558bb009ceedef22 Mon Sep 17 00:00:00 2001 From: Kris Szlapa Date: Thu, 1 Feb 2024 20:20:10 +0000 Subject: [PATCH 10/14] Update integration guide --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2e7c396..b2faa7d 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ npm install @NHSDigital/eps-spine-client - package.json ``` -"@NHSDigital/eps-spine-client": "latest" +"@NHSDigital/eps-spine-client": "^1.0.0" ``` ## Project Structure From 4faeb45d97047571c8186c5c0cf1674f19852905 Mon Sep 17 00:00:00 2001 From: Kris Szlapa Date: Thu, 1 Feb 2024 22:54:55 +0000 Subject: [PATCH 11/14] Change npm always-auth value --- .npmrc | 1 - 1 file changed, 1 deletion(-) diff --git a/.npmrc b/.npmrc index 98b6397..e19cc50 100644 --- a/.npmrc +++ b/.npmrc @@ -1,3 +1,2 @@ //npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN} @NHSDigital:registry=https://npm.pkg.github.com -always-auth=true From 21bd305abbf4eb06e2a5dc2732642a55223a3ee1 Mon Sep 17 00:00:00 2001 From: Kris Szlapa Date: Fri, 2 Feb 2024 14:07:46 +0000 Subject: [PATCH 12/14] Remove docker-outside-of-docker feature --- .devcontainer/devcontainer.json | 42 +++++++++++++-------------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index a930b6d..a4a4011 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -6,20 +6,12 @@ "build": { "dockerfile": "Dockerfile", "context": "..", - "args": {} + "args": {}, }, "mounts": [ "source=${env:HOME}${env:USERPROFILE}/.ssh,target=/home/vscode/.ssh,type=bind", - "source=${env:HOME}${env:USERPROFILE}/.gnupg,target=/home/vscode/.gnupg,type=bind" + "source=${env:HOME}${env:USERPROFILE}/.gnupg,target=/home/vscode/.gnupg,type=bind", ], - // Features to add to the dev container. More info: https://containers.dev/features. - "features": { - "ghcr.io/devcontainers/features/docker-outside-of-docker:1": { - "version": "latest", - "moby": "true", - "installDockerBuildx": "true" - }, - }, "customizations": { "vscode": { "extensions": [ @@ -34,7 +26,7 @@ "rvest.vs-code-prettier-eslint", "esbenp.prettier-vscode", "ms-azuretools.vscode-docker", - "tamasfe.even-better-toml" + "tamasfe.even-better-toml", ], "settings": { "python.defaultInterpreterPath": "/workspaces/nhs-eps-spine-client/.venv/bin/python", @@ -46,31 +38,31 @@ "editor.formatOnSaveMode": "file", "vs-code-prettier-eslint.prettierLast": false, "[javascript]": { - "editor.defaultFormatter": "rvest.vs-code-prettier-eslint" + "editor.defaultFormatter": "rvest.vs-code-prettier-eslint", }, "[typescript]": { - "editor.defaultFormatter": "rvest.vs-code-prettier-eslint" + "editor.defaultFormatter": "rvest.vs-code-prettier-eslint", }, "[json]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "esbenp.prettier-vscode", }, "[jsonc]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "esbenp.prettier-vscode", }, "[yaml]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "esbenp.prettier-vscode", }, "[markdown]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "esbenp.prettier-vscode", }, "[dockerfile]": { - "editor.defaultFormatter": "ms-azuretools.vscode-docker" + "editor.defaultFormatter": "ms-azuretools.vscode-docker", }, "[toml]": { - "editor.defaultFormatter": "tamasfe.even-better-toml" + "editor.defaultFormatter": "tamasfe.even-better-toml", }, "files.associations": { - ".releaserc": "json" + ".releaserc": "json", }, "cSpell.words": [ "fhir", @@ -78,10 +70,10 @@ "pino", "serialisation", "devcontainer", - "sonarcloud" - ] - } - } + "sonarcloud", + ], + }, + }, }, - "postCreateCommand": "rm -f ~/.docker/config.json; git config --global --add safe.directory /workspaces/nhs-eps-spine-client; make install; direnv allow ." + "postCreateCommand": "rm -f ~/.docker/config.json; git config --global --add safe.directory /workspaces/nhs-eps-spine-client; make install; direnv allow .", } From 9883dd61ae4202445845ab3d5e6706426d539397 Mon Sep 17 00:00:00 2001 From: Kris Szlapa Date: Fri, 2 Feb 2024 14:20:08 +0000 Subject: [PATCH 13/14] Refactor the code --- .devcontainer/devcontainer.json | 34 ++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index a4a4011..0e85f95 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -6,11 +6,11 @@ "build": { "dockerfile": "Dockerfile", "context": "..", - "args": {}, + "args": {} }, "mounts": [ "source=${env:HOME}${env:USERPROFILE}/.ssh,target=/home/vscode/.ssh,type=bind", - "source=${env:HOME}${env:USERPROFILE}/.gnupg,target=/home/vscode/.gnupg,type=bind", + "source=${env:HOME}${env:USERPROFILE}/.gnupg,target=/home/vscode/.gnupg,type=bind" ], "customizations": { "vscode": { @@ -26,7 +26,7 @@ "rvest.vs-code-prettier-eslint", "esbenp.prettier-vscode", "ms-azuretools.vscode-docker", - "tamasfe.even-better-toml", + "tamasfe.even-better-toml" ], "settings": { "python.defaultInterpreterPath": "/workspaces/nhs-eps-spine-client/.venv/bin/python", @@ -38,31 +38,31 @@ "editor.formatOnSaveMode": "file", "vs-code-prettier-eslint.prettierLast": false, "[javascript]": { - "editor.defaultFormatter": "rvest.vs-code-prettier-eslint", + "editor.defaultFormatter": "rvest.vs-code-prettier-eslint" }, "[typescript]": { - "editor.defaultFormatter": "rvest.vs-code-prettier-eslint", + "editor.defaultFormatter": "rvest.vs-code-prettier-eslint" }, "[json]": { - "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[jsonc]": { - "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[yaml]": { - "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[markdown]": { - "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[dockerfile]": { - "editor.defaultFormatter": "ms-azuretools.vscode-docker", + "editor.defaultFormatter": "ms-azuretools.vscode-docker" }, "[toml]": { - "editor.defaultFormatter": "tamasfe.even-better-toml", + "editor.defaultFormatter": "tamasfe.even-better-toml" }, "files.associations": { - ".releaserc": "json", + ".releaserc": "json" }, "cSpell.words": [ "fhir", @@ -70,10 +70,10 @@ "pino", "serialisation", "devcontainer", - "sonarcloud", - ], - }, - }, + "sonarcloud" + ] + } + } }, - "postCreateCommand": "rm -f ~/.docker/config.json; git config --global --add safe.directory /workspaces/nhs-eps-spine-client; make install; direnv allow .", + "postCreateCommand": "rm -f ~/.docker/config.json; git config --global --add safe.directory /workspaces/nhs-eps-spine-client; make install; direnv allow ." } From b599162209d99cc278d7ba17aec3e70e7468e3c5 Mon Sep 17 00:00:00 2001 From: Kris Szlapa Date: Mon, 5 Feb 2024 10:01:17 +0000 Subject: [PATCH 14/14] Remove GitHub package version badge --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index b2faa7d..87ab1d3 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ # NHS EPS Spine Client [![Release to GitHub Packages](https://github.com/NHSDigital/nhs-eps-spine-client/actions/workflows/release.yml/badge.svg?branch=main)](https://github.com/NHSDigital/nhs-eps-spine-client/actions/workflows/release.yml) -[![GitHub package version](https://img.shields.io/github/package-json/v/NHSDigital/nhs-eps-spine-client)](https://github.com/NHSDigital/nhs-eps-spine-client/pkgs/npm/eps-spine-client) [![Quality gate](https://sonarcloud.io/api/project_badges/quality_gate?project=NHSDigital_nhs-eps-spine-client)](https://sonarcloud.io/summary/new_code?id=NHSDigital_nhs-eps-spine-client) This repository contains the code to invoke the Spine client, utilised in