From 13c6150b9a23345ef4df2bd24341ffa87e52e363 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Sat, 1 Jun 2024 08:34:17 +0200 Subject: [PATCH] Create 2.5 docs (#3732) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: qwerty287 Co-authored-by: qwerty287 <80460567+qwerty287@users.noreply.github.com> --- docs/blog/2024-05-27-release-v2.5.0/index.md | 90 + docs/docusaurus.config.ts | 54 +- docs/package.json | 2 +- docs/plugins/woodpecker-plugins/package.json | 25 +- docs/pnpm-lock.yaml | 3223 ++++++++++++----- docs/versioned_docs/version-2.5/10-intro.md | 89 + .../version-2.5/20-usage/10-intro.md | 72 + .../15-terminology/architecture.excalidraw | 1549 ++++++++ .../20-usage/15-terminology/architecture.svg | 17 + .../20-usage/15-terminology/index.md | 64 + .../pipeline-workflow-step.excalidraw | 1077 ++++++ .../15-terminology/pipeline-workflow-step.svg | 17 + .../20-usage/20-workflow-syntax.md | 774 ++++ .../version-2.5/20-usage/25-workflows.md | 118 + .../20-usage/30-matrix-workflows.md | 143 + .../version-2.5/20-usage/40-secrets.md | 133 + .../version-2.5/20-usage/41-registries.md | 73 + .../version-2.5/20-usage/45-cron.md | 34 + .../version-2.5/20-usage/50-environment.md | 226 ++ .../51-plugins/20-creating-plugins.md | 139 + .../20-usage/51-plugins/51-overview.md | 45 + .../20-usage/51-plugins/_category_.yaml | 7 + .../version-2.5/20-usage/60-services.md | 114 + .../version-2.5/20-usage/70-volumes.md | 27 + .../version-2.5/20-usage/72-linter.md | 62 + .../20-usage/75-project-settings.md | 61 + .../version-2.5/20-usage/80-badges.md | 18 + .../version-2.5/20-usage/90-advanced-usage.md | 129 + .../version-2.5/20-usage/_category_.yaml | 4 + .../version-2.5/20-usage/cron-settings.png | Bin 0 -> 40821 bytes .../20-usage/linter-warnings-errors.png | Bin 0 -> 116049 bytes .../version-2.5/20-usage/project-settings.png | Bin 0 -> 169337 bytes .../version-2.5/20-usage/repo-list.png | Bin 0 -> 21355 bytes .../00-deployment/00-overview.md | 92 + .../00-deployment/10-docker-compose.md | 147 + .../00-deployment/20-kubernetes.md | 9 + .../00-deployment/30-nixos.md | 88 + .../00-deployment/_category_.yaml | 6 + .../30-administration/10-server-config.md | 566 +++ .../100-external-configuration-api.md | 104 + .../30-administration/11-forges/100-addon.md | 68 + .../11-forges/11-overview.md | 13 + .../30-administration/11-forges/20-github.md | 89 + .../30-administration/11-forges/30-gitea.md | 103 + .../30-administration/11-forges/40-gitlab.md | 68 + .../11-forges/50-bitbucket.md | 75 + .../11-forges/60-bitbucket_datacenter.md | 98 + .../11-forges/_category_.yaml | 6 + .../11-forges/bitbucket_oauth.png | Bin 0 -> 29361 bytes .../11-forges/bitbucket_permissions.png | Bin 0 -> 20641 bytes .../11-forges/gitea_oauth.gif | Bin 0 -> 132331 bytes .../11-forges/github_oauth.png | Bin 0 -> 26042 bytes .../30-administration/15-agent-config.md | 199 + .../22-backends/10-docker.md | 64 + .../30-administration/22-backends/20-local.md | 71 + .../22-backends/40-kubernetes.md | 292 ++ .../22-backends/50-custom-backends.md | 23 + .../22-backends/_category_.yaml | 4 + .../30-administration/30-database.md | 53 + .../version-2.5/30-administration/60-ssl.md | 90 + .../version-2.5/30-administration/70-proxy.md | 199 + .../30-administration/80-autoscaler.md | 37 + .../30-administration/90-prometheus.md | 81 + .../30-administration/_category_.yaml | 4 + .../30-administration/new-agent-connected.png | Bin 0 -> 5468 bytes .../30-administration/new-agent-created.png | Bin 0 -> 4492 bytes .../new-agent-registration.png | Bin 0 -> 25500 bytes docs/versioned_docs/version-2.5/40-cli.md | 609 ++++ .../version-2.5/91-migrations.md | 153 + docs/versioned_docs/version-2.5/92-awesome.md | 67 + .../92-development/01-getting-started.md | 153 + .../92-development/02-core-ideas.md | 26 + .../version-2.5/92-development/03-ui.md | 39 + .../version-2.5/92-development/04-docs.md | 20 + .../92-development/05-architecture.md | 48 + .../version-2.5/92-development/06-guides.md | 23 + .../92-development/07-translations.md | 9 + .../version-2.5/92-development/08-swagger.md | 63 + .../92-development/_category_.yaml | 4 + .../version-2.5/92-development/ui-proxy.svg | 16 + .../92-development/vscode-debug.png | Bin 0 -> 17502 bytes .../92-development/vscode-run-test.png | Bin 0 -> 11440 bytes .../woodpecker-architecture.png | Bin 0 -> 62587 bytes .../versioned_docs/version-2.5/woodpecker.png | Bin 0 -> 71639 bytes .../version-2.5-sidebars.json | 8 + docs/versions.json | 2 +- 86 files changed, 11317 insertions(+), 958 deletions(-) create mode 100644 docs/blog/2024-05-27-release-v2.5.0/index.md create mode 100644 docs/versioned_docs/version-2.5/10-intro.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/10-intro.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/15-terminology/architecture.excalidraw create mode 100644 docs/versioned_docs/version-2.5/20-usage/15-terminology/architecture.svg create mode 100644 docs/versioned_docs/version-2.5/20-usage/15-terminology/index.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/15-terminology/pipeline-workflow-step.excalidraw create mode 100644 docs/versioned_docs/version-2.5/20-usage/15-terminology/pipeline-workflow-step.svg create mode 100644 docs/versioned_docs/version-2.5/20-usage/20-workflow-syntax.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/25-workflows.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/30-matrix-workflows.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/40-secrets.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/41-registries.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/45-cron.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/50-environment.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/51-plugins/20-creating-plugins.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/51-plugins/51-overview.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/51-plugins/_category_.yaml create mode 100644 docs/versioned_docs/version-2.5/20-usage/60-services.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/70-volumes.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/72-linter.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/75-project-settings.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/80-badges.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/90-advanced-usage.md create mode 100644 docs/versioned_docs/version-2.5/20-usage/_category_.yaml create mode 100644 docs/versioned_docs/version-2.5/20-usage/cron-settings.png create mode 100644 docs/versioned_docs/version-2.5/20-usage/linter-warnings-errors.png create mode 100644 docs/versioned_docs/version-2.5/20-usage/project-settings.png create mode 100644 docs/versioned_docs/version-2.5/20-usage/repo-list.png create mode 100644 docs/versioned_docs/version-2.5/30-administration/00-deployment/00-overview.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/00-deployment/10-docker-compose.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/00-deployment/20-kubernetes.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/00-deployment/30-nixos.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/00-deployment/_category_.yaml create mode 100644 docs/versioned_docs/version-2.5/30-administration/10-server-config.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/100-external-configuration-api.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/11-forges/100-addon.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/11-forges/11-overview.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/11-forges/20-github.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/11-forges/30-gitea.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/11-forges/40-gitlab.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/11-forges/50-bitbucket.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/11-forges/60-bitbucket_datacenter.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/11-forges/_category_.yaml create mode 100644 docs/versioned_docs/version-2.5/30-administration/11-forges/bitbucket_oauth.png create mode 100644 docs/versioned_docs/version-2.5/30-administration/11-forges/bitbucket_permissions.png create mode 100644 docs/versioned_docs/version-2.5/30-administration/11-forges/gitea_oauth.gif create mode 100644 docs/versioned_docs/version-2.5/30-administration/11-forges/github_oauth.png create mode 100644 docs/versioned_docs/version-2.5/30-administration/15-agent-config.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/22-backends/10-docker.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/22-backends/20-local.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/22-backends/40-kubernetes.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/22-backends/50-custom-backends.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/22-backends/_category_.yaml create mode 100644 docs/versioned_docs/version-2.5/30-administration/30-database.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/60-ssl.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/70-proxy.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/80-autoscaler.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/90-prometheus.md create mode 100644 docs/versioned_docs/version-2.5/30-administration/_category_.yaml create mode 100644 docs/versioned_docs/version-2.5/30-administration/new-agent-connected.png create mode 100644 docs/versioned_docs/version-2.5/30-administration/new-agent-created.png create mode 100644 docs/versioned_docs/version-2.5/30-administration/new-agent-registration.png create mode 100644 docs/versioned_docs/version-2.5/40-cli.md create mode 100644 docs/versioned_docs/version-2.5/91-migrations.md create mode 100644 docs/versioned_docs/version-2.5/92-awesome.md create mode 100644 docs/versioned_docs/version-2.5/92-development/01-getting-started.md create mode 100644 docs/versioned_docs/version-2.5/92-development/02-core-ideas.md create mode 100644 docs/versioned_docs/version-2.5/92-development/03-ui.md create mode 100644 docs/versioned_docs/version-2.5/92-development/04-docs.md create mode 100644 docs/versioned_docs/version-2.5/92-development/05-architecture.md create mode 100644 docs/versioned_docs/version-2.5/92-development/06-guides.md create mode 100644 docs/versioned_docs/version-2.5/92-development/07-translations.md create mode 100644 docs/versioned_docs/version-2.5/92-development/08-swagger.md create mode 100644 docs/versioned_docs/version-2.5/92-development/_category_.yaml create mode 100644 docs/versioned_docs/version-2.5/92-development/ui-proxy.svg create mode 100644 docs/versioned_docs/version-2.5/92-development/vscode-debug.png create mode 100644 docs/versioned_docs/version-2.5/92-development/vscode-run-test.png create mode 100644 docs/versioned_docs/version-2.5/92-development/woodpecker-architecture.png create mode 100644 docs/versioned_docs/version-2.5/woodpecker.png create mode 100644 docs/versioned_sidebars/version-2.5-sidebars.json diff --git a/docs/blog/2024-05-27-release-v2.5.0/index.md b/docs/blog/2024-05-27-release-v2.5.0/index.md new file mode 100644 index 0000000000..2aa9548ba4 --- /dev/null +++ b/docs/blog/2024-05-27-release-v2.5.0/index.md @@ -0,0 +1,90 @@ +--- +title: Here is Woodpecker 2.5.0 +description: Introducing Woodpecker 2.5.0 +slug: release-v250 +authors: + - name: Anbraten + title: Maintainer of Woodpecker + url: https://github.com/anbraten + image_url: https://github.com/anbraten.png +tags: [release, minor] +hide_table_of_contents: false +--- + +Here is the next minor release 2.5.0 of Woodpecker 🪶 ☀️. + + + +As always thanks to all contributors who helped to make this release possible. It includes quite a few enhancements +most users will benefit from while they are probably not that visible at first sight for most. The release also includes some preparations for new features to come in the next versions. Anyway, let's dive into some of the highlights of this release: + +## Improve the way entrypoints work + +The implementation wasn't perfect yet so we improved the way entrypoints work: + +If you define [`commands`](/docs/usage/workflow-syntax#commands), the default entrypoint will be `["/bin/sh", "-c", "echo $CI_SCRIPT | base64 -d | /bin/sh -e"]`. + +If you define your own entrypoint, you can completely overwrite the default entrypoint. If you define `entrypoint: ["/bin/my-script", ""]` for example you can run your own binary / script. In this case the commands section will ignord, however you can still access it in your own script by using the base64 encoded string of the `CI_SCRIPT` environment variable. + +[#3269](https://github.com/woodpecker-ci/woodpecker/pull/3269) + +## Cli output formats + +The cli output has been improved. The first command (mainly pipeline info, ls, create) support a `--output` flag now which allows you to change the output format. There is a new `table` format (the new default) which will look like the following and can be further customized: + +```bash +# use default table output +❯ woodpecker-cli pipeline ls --limit 2 2 +NUMBER STATUS EVENT BRANCH COMMIT AUTHOR +43 error manual main 473761d8b26b20f7c206408563d54cf998410329 woodpecker +42 success push main 473761d8b26b20f7c206408563d54cf998410329 woodpecker + +# customize table output and disable header +❯ woodpecker-cli pipeline ls --limit 2 --output table=number,status,event --no-header 2 +43 error manual +42 success push +``` + +In addition especially useful for programmtic usage there is a `go-template` output format which will output the data using the provided go template like this: + +```bash +######## +# go crazy and use a template layout +❯ woodpecker-cli pipeline ls --limit 2 --output go-template='{{range .}}{{printf "\x1b[33mPipeline #%d\x1b[0m\nStatus: %s\nEvent:%s\nCommit:%s\n\n" .Number .Status .Event .Commit}}{{end}}' 2 +Pipeline #43 +Status: error +Event:manual +Commit:473761d8b26b20f7c206408563d54cf998410329 + +Pipeline #42 +Status: success +Event:push +Commit:473761d8b26b20f7c206408563d54cf998410329 +``` + +[#3660](https://github.com/woodpecker-ci/woodpecker/pull/3660) + +## Deleting logs or complete pipelines + +If you accidentially exposed some secret to the public in your logs or you simply want to cleanup some logs you can now delete logs or complete pipelines using the api and the cli. + +[#3451](https://github.com/woodpecker-ci/woodpecker/pull/3451) +[#3506](https://github.com/woodpecker-ci/woodpecker/pull/3506) +[#3458](https://github.com/woodpecker-ci/woodpecker/pull/3458) + +## Support for Github deploy tasks + +Woodpecker now supports Github deploy tasks. This allows you to pass the deploy task set in Github to your Woodpecker pipeline. + +[#3512](https://github.com/woodpecker-ci/woodpecker/pull/3512) + +## Deprecations + +To keep things clean and simple we deprecated some pipeline options, server settings and features which will +be removed in the next major release: + +- Deprecated `environment` filter, use `when.evaluate` +- Use `WOODPECKER_EXPERT_FORGE_OAUTH_HOST` instead of `WOODPECKER_DEV_GITEA_OAUTH_URL` or `WOODPECKER_DEV_OAUTH_HOST` +- Deprecated `WOODPECKER_WEBHOOK_HOST` in favor of `WOODPECKER_EXPERT_WEBHOOK_HOST` + +For a full list of deprecations that will be dropped in the `next` major release `3.0.0` (no eta yet), please check the [migrations](/docs/migrations#next) section. diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index 027f9fa487..286242f783 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -35,30 +35,32 @@ const config: Config = { position: 'left', label: 'Plugins', }, + { to: 'blog', label: 'Blog', position: 'left' }, { - to: '/docs/next/migrations', // Always point to newest migration guide - activeBaseRegex: 'docs/(next/)?migrations', - position: 'left', - label: 'Migrations', - }, - { - to: '/faq', - position: 'left', - label: 'FAQ', - }, - { - to: '/docs/next/awesome', // Always point to newest awesome list - activeBaseRegex: 'docs/(next/)?awesome', - position: 'left', - label: 'Awesome', - }, - { - to: '/api', + label: 'More Resources', position: 'left', - label: 'API', + items: [ + { + to: '/docs/next/migrations', // Always point to newest migration guide + activeBaseRegex: 'docs/(next/)?migrations', + label: 'Migrations', + }, + { + to: '/docs/next/awesome', // Always point to newest awesome list + activeBaseRegex: 'docs/(next/)?awesome', + label: 'Awesome', + }, + { + to: '/faq', + label: 'FAQ', + }, + { + to: '/api', + label: 'API', + }, + { to: 'cookbook', label: 'Cookbook' }, + ], }, - { to: 'blog', label: 'Blog', position: 'left' }, - { to: 'cookbook', label: 'Cookbook', position: 'left' }, { type: 'docsVersionDropdown', position: 'right', @@ -207,7 +209,7 @@ const config: Config = { webSocketURL: 'auto://0.0.0.0:0/ws', }, }, - }; + } as any; }, }), [ @@ -243,14 +245,20 @@ const config: Config = { sidebarPath: require.resolve('./sidebars.js'), editUrl: 'https://github.com/woodpecker-ci/woodpecker/edit/main/docs/', includeCurrentVersion: true, - lastVersion: '2.4', + lastVersion: '2.5', + onlyIncludeVersions: + process.env.NODE_ENV === 'development' ? ['current', '2.5'] : ['current', '2.5', '2.4', '2.3', '1.0'], versions: { current: { label: 'Next', banner: 'unreleased', }, + '2.5': { + label: '2.5.x', + }, '2.4': { label: '2.4.x', + banner: 'unmaintained', }, '2.3': { label: '2.3.x', diff --git a/docs/package.json b/docs/package.json index 74a2984c4a..99ca4a6a10 100644 --- a/docs/package.json +++ b/docs/package.json @@ -24,7 +24,7 @@ "esbuild-loader": "^4.1.0", "file-loader": "^6.2.0", "prism-react-renderer": "^2.3.1", - "react": "^18.2.0", + "react": "^18.3.1", "react-dom": "^18.2.0", "redocusaurus": "^2.0.2", "url-loader": "^4.1.1" diff --git a/docs/plugins/woodpecker-plugins/package.json b/docs/plugins/woodpecker-plugins/package.json index acbf02a067..04a19eff90 100644 --- a/docs/plugins/woodpecker-plugins/package.json +++ b/docs/plugins/woodpecker-plugins/package.json @@ -10,18 +10,17 @@ "style": "mkdir -p dist/theme/ && cp src/theme/style.css dist/theme/style.css" }, "devDependencies": { - "@docusaurus/module-type-aliases": "^3.0.0", - "@docusaurus/theme-classic": "^3.0.0", - "@docusaurus/types": "^3.0.0", - "@tsconfig/docusaurus": "^2.0.0", - "@types/marked": "^6.0.0", - "@types/node": "^20.11.30", - "axios": "^1.6.8", - "concurrently": "^8.0.0", - "isomorphic-dompurify": "^2.5.0", - "marked": "^12.0.1", - "tslib": "^2.6.1", - "typescript": "^5.4.3" + "@docusaurus/module-type-aliases": "^3.3.2", + "@docusaurus/theme-classic": "^3.3.2", + "@docusaurus/types": "^3.3.2", + "@tsconfig/docusaurus": "^2.0.3", + "@types/node": "^20.12.13", + "axios": "^1.7.2", + "concurrently": "^8.2.2", + "isomorphic-dompurify": "^2.11.0", + "marked": "^12.0.2", + "tslib": "^2.6.2", + "typescript": "^5.4.5" }, "peerDependencies": { "react": "^17.0.2 || ^18.0.0", @@ -29,6 +28,6 @@ }, "dependencies": { "fuse.js": "^7.0.0", - "yaml": "^2.4.1" + "yaml": "^2.4.2" } } diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index 3a451d10cd..c4ea4706c3 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -14,19 +14,19 @@ importers: dependencies: '@docusaurus/core': specifier: ^3.1.0 - version: 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) + version: 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) '@docusaurus/plugin-content-blog': specifier: ^3.1.0 - version: 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) + version: 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) '@docusaurus/preset-classic': specifier: ^3.1.0 - version: 3.2.1(@algolia/client-search@4.23.3)(@types/react@18.3.0)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(search-insights@2.13.0)(typescript@5.4.5) + version: 3.3.2(@algolia/client-search@4.23.3)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0)(typescript@5.4.5) '@easyops-cn/docusaurus-search-local': specifier: ^0.40.1 - version: 0.40.1(@docusaurus/theme-common@3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5))(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) + version: 0.40.1(@docusaurus/theme-common@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) '@mdx-js/react': specifier: ^3.0.0 - version: 3.0.1(@types/react@18.3.0)(react@18.3.0) + version: 3.0.1(@types/react@18.3.3)(react@18.3.1) '@svgr/webpack': specifier: ^8.1.0 version: 8.1.0(typescript@5.4.5) @@ -41,35 +41,35 @@ importers: version: 6.2.0(webpack@5.91.0) prism-react-renderer: specifier: ^2.3.1 - version: 2.3.1(react@18.3.0) + version: 2.3.1(react@18.3.1) react: - specifier: ^18.2.0 - version: 18.3.0 + specifier: ^18.3.1 + version: 18.3.1 react-dom: specifier: ^18.2.0 - version: 18.3.0(react@18.3.0) + version: 18.3.1(react@18.3.1) redocusaurus: specifier: ^2.0.2 - version: 2.0.2(@docusaurus/theme-common@3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5))(@docusaurus/utils@3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)))(core-js@3.37.0)(mobx@6.12.3)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(styled-components@6.1.8(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(webpack@5.91.0) + version: 2.0.2(@docusaurus/theme-common@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(@docusaurus/utils@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5))(core-js@3.37.1)(mobx@6.12.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(webpack@5.91.0) url-loader: specifier: ^4.1.1 version: 4.1.1(file-loader@6.2.0(webpack@5.91.0))(webpack@5.91.0) devDependencies: '@docusaurus/module-type-aliases': specifier: ^3.1.0 - version: 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) + version: 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/tsconfig': specifier: 3.2.1 version: 3.2.1 '@docusaurus/types': specifier: ^3.1.0 - version: 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) + version: 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/node': specifier: ^20.11.30 - version: 20.12.7 + version: 20.12.12 '@types/react': specifier: ^18.2.67 - version: 18.3.0 + version: 18.3.3 '@types/react-helmet': specifier: ^6.1.11 version: 6.1.11 @@ -87,49 +87,46 @@ importers: version: 7.0.0 react: specifier: ^17.0.2 || ^18.0.0 - version: 18.3.0 + version: 18.3.1 react-dom: specifier: ^17.0.2 || ^18.0.0 - version: 18.3.0(react@18.3.0) + version: 18.3.1(react@18.3.1) yaml: - specifier: ^2.4.1 - version: 2.4.1 + specifier: ^2.4.2 + version: 2.4.2 devDependencies: '@docusaurus/module-type-aliases': - specifier: ^3.0.0 - version: 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) + specifier: ^3.3.2 + version: 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/theme-classic': - specifier: ^3.0.0 - version: 3.2.1(@types/react@18.3.0)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) + specifier: ^3.3.2 + version: 3.3.2(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) '@docusaurus/types': - specifier: ^3.0.0 - version: 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) + specifier: ^3.3.2 + version: 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tsconfig/docusaurus': - specifier: ^2.0.0 + specifier: ^2.0.3 version: 2.0.3 - '@types/marked': - specifier: ^6.0.0 - version: 6.0.0 '@types/node': - specifier: ^20.11.30 - version: 20.12.7 + specifier: ^20.12.13 + version: 20.12.13 axios: - specifier: ^1.6.8 - version: 1.6.8 + specifier: ^1.7.2 + version: 1.7.2 concurrently: - specifier: ^8.0.0 + specifier: ^8.2.2 version: 8.2.2 isomorphic-dompurify: - specifier: ^2.5.0 - version: 2.7.0 + specifier: ^2.11.0 + version: 2.11.0 marked: - specifier: ^12.0.1 + specifier: ^12.0.2 version: 12.0.2 tslib: - specifier: ^2.6.1 + specifier: ^2.6.2 version: 2.6.2 typescript: - specifier: ^5.4.3 + specifier: ^5.4.5 version: 5.4.5 packages: @@ -210,42 +207,82 @@ packages: resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.24.6': + resolution: {integrity: sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.24.4': resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.24.6': + resolution: {integrity: sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==} + engines: {node: '>=6.9.0'} + '@babel/core@7.24.4': resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} engines: {node: '>=6.9.0'} + '@babel/core@7.24.6': + resolution: {integrity: sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.24.4': resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} engines: {node: '>=6.9.0'} + '@babel/generator@7.24.6': + resolution: {integrity: sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.22.5': resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.24.6': + resolution: {integrity: sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg==} + engines: {node: '>=6.9.0'} + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} + '@babel/helper-builder-binary-assignment-operator-visitor@7.24.6': + resolution: {integrity: sha512-+wnfqc5uHiMYtvRX7qu80Toef8BXeh4HHR1SPeonGb1SKPniNEd4a/nlaJJMv/OIEYvIVavvo0yR7u10Gqz0Iw==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.23.6': resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.24.6': + resolution: {integrity: sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==} + engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.24.4': resolution: {integrity: sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-create-class-features-plugin@7.24.6': + resolution: {integrity: sha512-djsosdPJVZE6Vsw3kk7IPRWethP94WHGOhQTc67SNXE0ZzMhHgALw8iGmYS0TD1bbMM0VDROy43od7/hN6WYcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-create-regexp-features-plugin@7.22.15': resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-create-regexp-features-plugin@7.24.6': + resolution: {integrity: sha512-C875lFBIWWwyv6MHZUG9HmRrlTDgOsLWZfYR0nW69gaKJNe0/Mpxx5r0EID2ZdHQkdUmQo2t0uNckTL08/1BgA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-define-polyfill-provider@0.6.2': resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: @@ -255,113 +292,224 @@ packages: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} + '@babel/helper-environment-visitor@7.24.6': + resolution: {integrity: sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==} + engines: {node: '>=6.9.0'} + '@babel/helper-function-name@7.23.0': resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} + '@babel/helper-function-name@7.24.6': + resolution: {integrity: sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==} + engines: {node: '>=6.9.0'} + '@babel/helper-hoist-variables@7.22.5': resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} + '@babel/helper-hoist-variables@7.24.6': + resolution: {integrity: sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==} + engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.23.0': resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.24.6': + resolution: {integrity: sha512-OTsCufZTxDUsv2/eDXanw/mUZHWOxSbEmC3pP8cgjcy5rgeVPWWMStnv274DV60JtHxTk0adT0QrCzC4M9NWGg==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.24.3': resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.24.6': + resolution: {integrity: sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.23.3': resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.24.6': + resolution: {integrity: sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.22.5': resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} + '@babel/helper-optimise-call-expression@7.24.6': + resolution: {integrity: sha512-3SFDJRbx7KuPRl8XDUr8O7GAEB8iGyWPjLKJh/ywP/Iy9WOmEfMrsWbaZpvBu2HSYn4KQygIsz0O7m8y10ncMA==} + engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.24.0': resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.24.6': + resolution: {integrity: sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==} + engines: {node: '>=6.9.0'} + '@babel/helper-remap-async-to-generator@7.22.20': resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-remap-async-to-generator@7.24.6': + resolution: {integrity: sha512-1Qursq9ArRZPAMOZf/nuzVW8HgJLkTB9y9LfP4lW2MVp4e9WkLJDovfKBxoDcCk6VuzIxyqWHyBoaCtSRP10yg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.24.1': resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.24.6': + resolution: {integrity: sha512-mRhfPwDqDpba8o1F8ESxsEkJMQkUF8ZIWrAc0FtWhxnjfextxMWxr22RtFizxxSYLjVHDeMgVsRq8BBZR2ikJQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-simple-access@7.22.5': resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} + '@babel/helper-simple-access@7.24.6': + resolution: {integrity: sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==} + engines: {node: '>=6.9.0'} + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} + '@babel/helper-skip-transparent-expression-wrappers@7.24.6': + resolution: {integrity: sha512-jhbbkK3IUKc4T43WadP96a27oYti9gEf1LdyGSP2rHGH77kwLwfhO7TgwnWvxxQVmke0ImmCSS47vcuxEMGD3Q==} + engines: {node: '>=6.9.0'} + '@babel/helper-split-export-declaration@7.22.6': resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} + '@babel/helper-split-export-declaration@7.24.6': + resolution: {integrity: sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.24.1': resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.24.6': + resolution: {integrity: sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.22.20': resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.6': + resolution: {integrity: sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.23.5': resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.24.6': + resolution: {integrity: sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.22.20': resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.24.6': + resolution: {integrity: sha512-f1JLrlw/jbiNfxvdrfBgio/gRBk3yTAEJWirpAkiJG2Hb22E7cEYKHWo0dFPTv/niPovzIdPdEDetrv6tC6gPQ==} + engines: {node: '>=6.9.0'} + '@babel/helpers@7.24.4': resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.24.6': + resolution: {integrity: sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==} + engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.2': resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.6': + resolution: {integrity: sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.24.4': resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.24.6': + resolution: {integrity: sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.4': resolution: {integrity: sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.6': + resolution: {integrity: sha512-bYndrJ6Ph6Ar+GaB5VAc0JPoP80bQCm4qon6JEzXfRl5QZyQ8Ur1K6k7htxWmPA5z+k7JQvaMUrtXlqclWYzKw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1': resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.6': + resolution: {integrity: sha512-iVuhb6poq5ikqRq2XWU6OQ+R5o9wF+r/or9CeUyovgptz0UlnK4/seOQ1Istu/XybYjAhQv1FRSSfHHufIku5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1': resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.6': + resolution: {integrity: sha512-c8TER5xMDYzzFcGqOEp9l4hvB7dcbhcGjcLVwxWfe4P5DOafdwjsBJZKsmv+o3aXh7NhopvayQIovHrh2zSRUQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1': resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.6': + resolution: {integrity: sha512-z8zEjYmwBUHN/pCF3NuWBhHQjJCrd33qAi8MgANfMrAvn72k2cImT8VjK9LJFu4ysOLJqhfkYYb3MvwANRUNZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} @@ -400,12 +548,24 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-assertions@7.24.6': + resolution: {integrity: sha512-BE6o2BogJKJImTmGpkmOic4V0hlRRxVtzqxiSPa8TIFxyhi4EFjHm08nq1M4STK4RytuLMgnSz0/wfflvGFNOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.24.1': resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.24.6': + resolution: {integrity: sha512-D+CfsVZousPXIdudSII7RGy52+dYRtbyKAZcvtQKq/NpsivyMVduepzcLqG5pMBugtMdedxdC8Ramdpcne9ZWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-meta@7.10.4': resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -422,6 +582,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.24.6': + resolution: {integrity: sha512-lWfvAIFNWMlCsU0DRUun2GpFwZdGTukLaHJqRh1JRb80NdAP5Sb1HDHB5X9P9OtgZHQl089UzQkpYlBq2VTPRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -470,6 +636,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.24.6': + resolution: {integrity: sha512-TzCtxGgVTEJWWwcYwQhCIQ6WaKlo80/B+Onsk4RRCcYqpYGFcG9etPW94VToGte5AAcxRrhjPUFvUS3Y2qKi4A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} @@ -482,222 +654,444 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-arrow-functions@7.24.6': + resolution: {integrity: sha512-jSSSDt4ZidNMggcLx8SaKsbGNEfIl0PHx/4mFEulorE7bpYLbN0d3pDW3eJ7Y5Z3yPhy3L3NaPCYyTUY7TuugQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-generator-functions@7.24.3': resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-generator-functions@7.24.6': + resolution: {integrity: sha512-VEP2o4iR2DqQU6KPgizTW2mnMx6BG5b5O9iQdrW9HesLkv8GIA8x2daXBQxw1MrsIkFQGA/iJ204CKoQ8UcnAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-to-generator@7.24.1': resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-to-generator@7.24.6': + resolution: {integrity: sha512-NTBA2SioI3OsHeIn6sQmhvXleSl9T70YY/hostQLveWs0ic+qvbA3fa0kwAwQ0OA/XGaAerNZRQGJyRfhbJK4g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoped-functions@7.24.1': resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoped-functions@7.24.6': + resolution: {integrity: sha512-XNW7jolYHW9CwORrZgA/97tL/k05qe/HL0z/qqJq1mdWhwwCM6D4BJBV7wAz9HgFziN5dTOG31znkVIzwxv+vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoping@7.24.4': resolution: {integrity: sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoping@7.24.6': + resolution: {integrity: sha512-S/t1Xh4ehW7sGA7c1j/hiOBLnEYCp/c2sEG4ZkL8kI1xX9tW2pqJTCHKtdhe/jHKt8nG0pFCrDHUXd4DvjHS9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-class-properties@7.24.1': resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-class-properties@7.24.6': + resolution: {integrity: sha512-j6dZ0Z2Z2slWLR3kt9aOmSIrBvnntWjMDN/TVcMPxhXMLmJVqX605CBRlcGI4b32GMbfifTEsdEjGjiE+j/c3A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-class-static-block@7.24.4': resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 + '@babel/plugin-transform-class-static-block@7.24.6': + resolution: {integrity: sha512-1QSRfoPI9RoLRa8Mnakc6v3e0gJxiZQTYrMfLn+mD0sz5+ndSzwymp2hDcYJTyT0MOn0yuWzj8phlIvO72gTHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + '@babel/plugin-transform-classes@7.24.1': resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-classes@7.24.6': + resolution: {integrity: sha512-+fN+NO2gh8JtRmDSOB6gaCVo36ha8kfCW1nMq2Gc0DABln0VcHN4PrALDvF5/diLzIRKptC7z/d7Lp64zk92Fg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-computed-properties@7.24.1': resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-computed-properties@7.24.6': + resolution: {integrity: sha512-cRzPobcfRP0ZtuIEkA8QzghoUpSB3X3qSH5W2+FzG+VjWbJXExtx0nbRqwumdBN1x/ot2SlTNQLfBCnPdzp6kg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-destructuring@7.24.1': resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-destructuring@7.24.6': + resolution: {integrity: sha512-YLW6AE5LQpk5npNXL7i/O+U9CE4XsBCuRPgyjl1EICZYKmcitV+ayuuUGMJm2lC1WWjXYszeTnIxF/dq/GhIZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dotall-regex@7.24.1': resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dotall-regex@7.24.6': + resolution: {integrity: sha512-rCXPnSEKvkm/EjzOtLoGvKseK+dS4kZwx1HexO3BtRtgL0fQ34awHn34aeSHuXtZY2F8a1X8xqBBPRtOxDVmcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-duplicate-keys@7.24.1': resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-duplicate-keys@7.24.6': + resolution: {integrity: sha512-/8Odwp/aVkZwPFJMllSbawhDAO3UJi65foB00HYnK/uXvvCPm0TAXSByjz1mpRmp0q6oX2SIxpkUOpPFHk7FLA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dynamic-import@7.24.1': resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dynamic-import@7.24.6': + resolution: {integrity: sha512-vpq8SSLRTBLOHUZHSnBqVo0AKX3PBaoPs2vVzYVWslXDTDIpwAcCDtfhUcHSQQoYoUvcFPTdC8TZYXu9ZnLT/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-exponentiation-operator@7.24.1': resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-exponentiation-operator@7.24.6': + resolution: {integrity: sha512-EemYpHtmz0lHE7hxxxYEuTYOOBZ43WkDgZ4arQ4r+VX9QHuNZC+WH3wUWmRNvR8ECpTRne29aZV6XO22qpOtdA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-export-namespace-from@7.24.1': resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-export-namespace-from@7.24.6': + resolution: {integrity: sha512-inXaTM1SVrIxCkIJ5gqWiozHfFMStuGbGJAxZFBoHcRRdDP0ySLb3jH6JOwmfiinPwyMZqMBX+7NBDCO4z0NSA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-for-of@7.24.1': resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-for-of@7.24.6': + resolution: {integrity: sha512-n3Sf72TnqK4nw/jziSqEl1qaWPbCRw2CziHH+jdRYvw4J6yeCzsj4jdw8hIntOEeDGTmHVe2w4MVL44PN0GMzg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-function-name@7.24.1': resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-function-name@7.24.6': + resolution: {integrity: sha512-sOajCu6V0P1KPljWHKiDq6ymgqB+vfo3isUS4McqW1DZtvSVU2v/wuMhmRmkg3sFoq6GMaUUf8W4WtoSLkOV/Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-json-strings@7.24.1': resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-json-strings@7.24.6': + resolution: {integrity: sha512-Uvgd9p2gUnzYJxVdBLcU0KurF8aVhkmVyMKW4MIY1/BByvs3EBpv45q01o7pRTVmTvtQq5zDlytP3dcUgm7v9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-literals@7.24.1': resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-literals@7.24.6': + resolution: {integrity: sha512-f2wHfR2HF6yMj+y+/y07+SLqnOSwRp8KYLpQKOzS58XLVlULhXbiYcygfXQxJlMbhII9+yXDwOUFLf60/TL5tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-logical-assignment-operators@7.24.1': resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-logical-assignment-operators@7.24.6': + resolution: {integrity: sha512-EKaWvnezBCMkRIHxMJSIIylzhqK09YpiJtDbr2wsXTwnO0TxyjMUkaw4RlFIZMIS0iDj0KyIg7H7XCguHu/YDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-member-expression-literals@7.24.1': resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-member-expression-literals@7.24.6': + resolution: {integrity: sha512-9g8iV146szUo5GWgXpRbq/GALTnY+WnNuRTuRHWWFfWGbP9ukRL0aO/jpu9dmOPikclkxnNsjY8/gsWl6bmZJQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-amd@7.24.1': resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-amd@7.24.6': + resolution: {integrity: sha512-eAGogjZgcwqAxhyFgqghvoHRr+EYRQPFjUXrTYKBRb5qPnAVxOOglaxc4/byHqjvq/bqO2F3/CGwTHsgKJYHhQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.24.1': resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.24.6': + resolution: {integrity: sha512-JEV8l3MHdmmdb7S7Cmx6rbNEjRCgTQMZxllveHO0mx6uiclB0NflCawlQQ6+o5ZrwjUBYPzHm2XoK4wqGVUFuw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-systemjs@7.24.1': resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-systemjs@7.24.6': + resolution: {integrity: sha512-xg1Z0J5JVYxtpX954XqaaAT6NpAY6LtZXvYFCJmGFJWwtlz2EmJoR8LycFRGNE8dBKizGWkGQZGegtkV8y8s+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-umd@7.24.1': resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-umd@7.24.6': + resolution: {integrity: sha512-esRCC/KsSEUvrSjv5rFYnjZI6qv4R1e/iHQrqwbZIoRJqk7xCvEUiN7L1XrmW5QSmQe3n1XD88wbgDTWLbVSyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-transform-named-capturing-groups-regex@7.24.6': + resolution: {integrity: sha512-6DneiCiu91wm3YiNIGDWZsl6GfTTbspuj/toTEqLh9d4cx50UIzSdg+T96p8DuT7aJOBRhFyaE9ZvTHkXrXr6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-transform-new-target@7.24.1': resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-new-target@7.24.6': + resolution: {integrity: sha512-f8liz9JG2Va8A4J5ZBuaSdwfPqN6axfWRK+y66fjKYbwf9VBLuq4WxtinhJhvp1w6lamKUwLG0slK2RxqFgvHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-nullish-coalescing-operator@7.24.1': resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-nullish-coalescing-operator@7.24.6': + resolution: {integrity: sha512-+QlAiZBMsBK5NqrBWFXCYeXyiU1y7BQ/OYaiPAcQJMomn5Tyg+r5WuVtyEuvTbpV7L25ZSLfE+2E9ywj4FD48A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-numeric-separator@7.24.1': resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-numeric-separator@7.24.6': + resolution: {integrity: sha512-6voawq8T25Jvvnc4/rXcWZQKKxUNZcKMS8ZNrjxQqoRFernJJKjE3s18Qo6VFaatG5aiX5JV1oPD7DbJhn0a4Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-rest-spread@7.24.1': resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-rest-spread@7.24.6': + resolution: {integrity: sha512-OKmi5wiMoRW5Smttne7BwHM8s/fb5JFs+bVGNSeHWzwZkWXWValR1M30jyXo1s/RaqgwwhEC62u4rFH/FBcBPg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-super@7.24.1': resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-super@7.24.6': + resolution: {integrity: sha512-N/C76ihFKlZgKfdkEYKtaRUtXZAgK7sOY4h2qrbVbVTXPrKGIi8aww5WGe/+Wmg8onn8sr2ut6FXlsbu/j6JHg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-catch-binding@7.24.1': resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-catch-binding@7.24.6': + resolution: {integrity: sha512-L5pZ+b3O1mSzJ71HmxSCmTVd03VOT2GXOigug6vDYJzE5awLI7P1g0wFcdmGuwSDSrQ0L2rDOe/hHws8J1rv3w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-chaining@7.24.1': resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-chaining@7.24.6': + resolution: {integrity: sha512-cHbqF6l1QP11OkYTYQ+hhVx1E017O5ZcSPXk9oODpqhcAD1htsWG2NpHrrhthEO2qZomLK0FXS+u7NfrkF5aOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-parameters@7.24.1': resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-parameters@7.24.6': + resolution: {integrity: sha512-ST7guE8vLV+vI70wmAxuZpIKzVjvFX9Qs8bl5w6tN/6gOypPWUmMQL2p7LJz5E63vEGrDhAiYetniJFyBH1RkA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-methods@7.24.1': resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-methods@7.24.6': + resolution: {integrity: sha512-T9LtDI0BgwXOzyXrvgLTT8DFjCC/XgWLjflczTLXyvxbnSR/gpv0hbmzlHE/kmh9nOvlygbamLKRo6Op4yB6aw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-property-in-object@7.24.1': resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-property-in-object@7.24.6': + resolution: {integrity: sha512-Qu/ypFxCY5NkAnEhCF86Mvg3NSabKsh/TPpBVswEdkGl7+FbsYHy1ziRqJpwGH4thBdQHh8zx+z7vMYmcJ7iaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-property-literals@7.24.1': resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-property-literals@7.24.6': + resolution: {integrity: sha512-oARaglxhRsN18OYsnPTpb8TcKQWDYNsPNmTnx5++WOAsUJ0cSC/FZVlIJCKvPbU4yn/UXsS0551CFKJhN0CaMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-constant-elements@7.24.1': resolution: {integrity: sha512-QXp1U9x0R7tkiGB0FOk8o74jhnap0FlZ5gNkRIWdG3eP+SvMFg118e1zaWewDzgABb106QSKpVsD3Wgd8t6ifA==} engines: {node: '>=6.9.0'} @@ -710,38 +1104,74 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-display-name@7.24.6': + resolution: {integrity: sha512-/3iiEEHDsJuj9QU09gbyWGSUxDboFcD7Nj6dnHIlboWSodxXAoaY/zlNMHeYAC0WsERMqgO9a7UaM77CsYgWcg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-development@7.22.5': resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-development@7.24.6': + resolution: {integrity: sha512-F7EsNp5StNDouSSdYyDSxh4J+xvj/JqG+Cb6s2fA+jCyHOzigG5vTwgH8tU2U8Voyiu5zCG9bAK49wTr/wPH0w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx@7.23.4': resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx@7.24.6': + resolution: {integrity: sha512-pCtPHhpRZHfwdA5G1Gpk5mIzMA99hv0R8S/Ket50Rw+S+8hkt3wBWqdqHaPw0CuUYxdshUgsPiLQ5fAs4ASMhw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-pure-annotations@7.24.1': resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-pure-annotations@7.24.6': + resolution: {integrity: sha512-0HoDQlFJJkXRyV2N+xOpUETbKHcouSwijRQbKWVtxsPoq5bbB30qZag9/pSc5xcWVYjTHlLsBsY+hZDnzQTPNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-regenerator@7.24.1': resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-regenerator@7.24.6': + resolution: {integrity: sha512-SMDxO95I8WXRtXhTAc8t/NFQUT7VYbIWwJCJgEli9ml4MhqUMh4S6hxgH6SmAC3eAQNWCDJFxcFeEt9w2sDdXg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-reserved-words@7.24.1': resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-runtime@7.24.3': - resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} + '@babel/plugin-transform-reserved-words@7.24.6': + resolution: {integrity: sha512-DcrgFXRRlK64dGE0ZFBPD5egM2uM8mgfrvTMOSB2yKzOtjpGegVYkzh3s1zZg1bBck3nkXiaOamJUqK3Syk+4A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-runtime@7.24.6': + resolution: {integrity: sha512-W3gQydMb0SY99y/2lV0Okx2xg/8KzmZLQsLaiCmwNRl1kKomz14VurEm+2TossUb+sRvBCnGe+wx8KtIgDtBbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -752,66 +1182,132 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-shorthand-properties@7.24.6': + resolution: {integrity: sha512-xnEUvHSMr9eOWS5Al2YPfc32ten7CXdH7Zwyyk7IqITg4nX61oHj+GxpNvl+y5JHjfN3KXE2IV55wAWowBYMVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-spread@7.24.1': resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-spread@7.24.6': + resolution: {integrity: sha512-h/2j7oIUDjS+ULsIrNZ6/TKG97FgmEk1PXryk/HQq6op4XUUUwif2f69fJrzK0wza2zjCS1xhXmouACaWV5uPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-sticky-regex@7.24.1': resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-sticky-regex@7.24.6': + resolution: {integrity: sha512-fN8OcTLfGmYv7FnDrsjodYBo1DhPL3Pze/9mIIE2MGCT1KgADYIOD7rEglpLHZj8PZlC/JFX5WcD+85FLAQusw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-template-literals@7.24.1': resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-template-literals@7.24.6': + resolution: {integrity: sha512-BJbEqJIcKwrqUP+KfUIkxz3q8VzXe2R8Wv8TaNgO1cx+nNavxn/2+H8kp9tgFSOL6wYPPEgFvU6IKS4qoGqhmg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typeof-symbol@7.24.1': resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typeof-symbol@7.24.6': + resolution: {integrity: sha512-IshCXQ+G9JIFJI7bUpxTE/oA2lgVLAIK8q1KdJNoPXOpvRaNjMySGuvLfBw/Xi2/1lLo953uE8hyYSDW3TSYig==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.24.4': resolution: {integrity: sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.24.6': + resolution: {integrity: sha512-H0i+hDLmaYYSt6KU9cZE0gb3Cbssa/oxWis7PX4ofQzbvsfix9Lbh8SRk7LCPDlLWJHUiFeHU0qRRpF/4Zv7mQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-escapes@7.24.1': resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-escapes@7.24.6': + resolution: {integrity: sha512-bKl3xxcPbkQQo5eX9LjjDpU2xYHeEeNQbOhj0iPvetSzA+Tu9q/o5lujF4Sek60CM6MgYvOS/DJuwGbiEYAnLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-property-regex@7.24.1': resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-property-regex@7.24.6': + resolution: {integrity: sha512-8EIgImzVUxy15cZiPii9GvLZwsy7Vxc+8meSlR3cXFmBIl5W5Tn9LGBf7CDKkHj4uVfNXCJB8RsVfnmY61iedA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-regex@7.24.1': resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-regex@7.24.6': + resolution: {integrity: sha512-pssN6ExsvxaKU638qcWb81RrvvgZom3jDgU/r5xFZ7TONkZGFf4MhI2ltMb8OcQWhHyxgIavEU+hgqtbKOmsPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-sets-regex@7.24.1': resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-transform-unicode-sets-regex@7.24.6': + resolution: {integrity: sha512-quiMsb28oXWIDK0gXLALOJRXLgICLiulqdZGOaPPd0vRT7fQp74NtdADAVu+D8s00C+0Xs0MxVP0VKF/sZEUgw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/preset-env@7.24.4': resolution: {integrity: sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/preset-env@7.24.6': + resolution: {integrity: sha512-CrxEAvN7VxfjOG8JNF2Y/eMqMJbZPZ185amwGUBp8D9USK90xQmv7dLdFSa+VbD7fdIqcy/Mfv7WtzG8+/qxKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/preset-modules@0.1.6-no-external-plugins': resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: @@ -823,35 +1319,63 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/preset-react@7.24.6': + resolution: {integrity: sha512-8mpzh1bWvmINmwM3xpz6ahu57mNaWavMm+wBNjQ4AFu1nghKBiIRET7l/Wmj4drXany/BBGjJZngICcD98F1iw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/preset-typescript@7.24.1': resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/preset-typescript@7.24.6': + resolution: {integrity: sha512-U10aHPDnokCFRXgyT/MaIRTivUu2K/mu0vJlwRS9LxJmJet+PFQNKpggPyFCUtC6zWSBPjvxjnpNkAn3Uw2m5w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/regjsgen@0.8.0': resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - '@babel/runtime-corejs3@7.24.4': - resolution: {integrity: sha512-VOQOexSilscN24VEY810G/PqtpFvx/z6UqDIjIWbDe2368HhDLkYN5TYwaEz/+eRCUkhJ2WaNLLmQAlxzfWj4w==} + '@babel/runtime-corejs3@7.24.6': + resolution: {integrity: sha512-tbC3o8uHK9xMgMsvUm9qGqxVpbv6yborMBLbDteHIc7JDNHsTV0vDMQ5j1O1NXvO+BDELtL9KgoWYaUVIVGt8w==} engines: {node: '>=6.9.0'} '@babel/runtime@7.24.4': resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.24.6': + resolution: {integrity: sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==} + engines: {node: '>=6.9.0'} + '@babel/template@7.24.0': resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} + '@babel/template@7.24.6': + resolution: {integrity: sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.24.1': resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.24.6': + resolution: {integrity: sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==} + engines: {node: '>=6.9.0'} + '@babel/types@7.24.0': resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} + '@babel/types@7.24.6': + resolution: {integrity: sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==} + engines: {node: '>=6.9.0'} + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -880,139 +1404,139 @@ packages: search-insights: optional: true - '@docusaurus/core@3.2.1': - resolution: {integrity: sha512-ZeMAqNvy0eBv2dThEeMuNzzuu+4thqMQakhxsgT5s02A8LqRcdkg+rbcnuNqUIpekQ4GRx3+M5nj0ODJhBXo9w==} + '@docusaurus/core@3.3.2': + resolution: {integrity: sha512-PzKMydKI3IU1LmeZQDi+ut5RSuilbXnA8QdowGeJEgU8EJjmx3rBHNT1LxQxOVqNEwpWi/csLwd9bn7rUjggPA==} engines: {node: '>=18.0'} hasBin: true peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - '@docusaurus/cssnano-preset@3.2.1': - resolution: {integrity: sha512-wTL9KuSSbMJjKrfu385HZEzAoamUsbKqwscAQByZw4k6Ja/RWpqgVvt/CbAC+aYEH6inLzOt+MjuRwMOrD3VBA==} + '@docusaurus/cssnano-preset@3.3.2': + resolution: {integrity: sha512-+5+epLk/Rp4vFML4zmyTATNc3Is+buMAL6dNjrMWahdJCJlMWMPd/8YfU+2PA57t8mlSbhLJ7vAZVy54cd1vRQ==} engines: {node: '>=18.0'} - '@docusaurus/logger@3.2.1': - resolution: {integrity: sha512-0voOKJCn9RaM3np6soqEfo7SsVvf2C+CDTWhW+H/1AyBhybASpExtDEz+7ECck9TwPzFQ5tt+I3zVugUJbJWDg==} + '@docusaurus/logger@3.3.2': + resolution: {integrity: sha512-Ldu38GJ4P8g4guN7d7pyCOJ7qQugG7RVyaxrK8OnxuTlaImvQw33aDRwaX2eNmX8YK6v+//Z502F4sOZbHHCHQ==} engines: {node: '>=18.0'} - '@docusaurus/mdx-loader@3.2.1': - resolution: {integrity: sha512-Fs8tXhXKZjNkdGaOy1xSLXSwfjCMT73J3Zfrju2U16uGedRFRjgK0ojpK5tiC7TnunsL3tOFgp1BSMBRflX9gw==} + '@docusaurus/mdx-loader@3.3.2': + resolution: {integrity: sha512-AFRxj/aOk3/mfYDPxE3wTbrjeayVRvNSZP7mgMuUlrb2UlPRbSVAFX1k2RbgAJrnTSwMgb92m2BhJgYRfptN3g==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - '@docusaurus/module-type-aliases@3.2.1': - resolution: {integrity: sha512-FyViV5TqhL1vsM7eh29nJ5NtbRE6Ra6LP1PDcPvhwPSlA7eiWGRKAn3jWwMUcmjkos5SYY+sr0/feCdbM3eQHQ==} + '@docusaurus/module-type-aliases@3.3.2': + resolution: {integrity: sha512-b/XB0TBJah5yKb4LYuJT4buFvL0MGAb0+vJDrJtlYMguRtsEBkf2nWl5xP7h4Dlw6ol0hsHrCYzJ50kNIOEclw==} peerDependencies: react: '*' react-dom: '*' - '@docusaurus/plugin-content-blog@3.2.1': - resolution: {integrity: sha512-lOx0JfhlGZoZu6pEJfeEpSISZR5dQbJGGvb42IP13G5YThNHhG9R9uoWuo4IOimPqBC7sHThdLA3VLevk61Fsw==} + '@docusaurus/plugin-content-blog@3.3.2': + resolution: {integrity: sha512-fJU+dmqp231LnwDJv+BHVWft8pcUS2xVPZdeYH6/ibH1s2wQ/sLcmUrGWyIv/Gq9Ptj8XWjRPMghlxghuPPoxg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - '@docusaurus/plugin-content-docs@3.2.1': - resolution: {integrity: sha512-GHe5b/lCskAR8QVbfWAfPAApvRZgqk7FN3sOHgjCtjzQACZxkHmq6QqyqZ8Jp45V7lVck4wt2Xw2IzBJ7Cz3bA==} + '@docusaurus/plugin-content-docs@3.3.2': + resolution: {integrity: sha512-Dm1ri2VlGATTN3VGk1ZRqdRXWa1UlFubjaEL6JaxaK7IIFqN/Esjpl+Xw10R33loHcRww/H76VdEeYayaL76eg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - '@docusaurus/plugin-content-pages@3.2.1': - resolution: {integrity: sha512-TOqVfMVTAHqWNEGM94Drz+PUpHDbwFy6ucHFgyTx9zJY7wPNSG5EN+rd/mU7OvAi26qpOn2o9xTdUmb28QLjEQ==} + '@docusaurus/plugin-content-pages@3.3.2': + resolution: {integrity: sha512-EKc9fQn5H2+OcGER8x1aR+7URtAGWySUgULfqE/M14+rIisdrBstuEZ4lUPDRrSIexOVClML82h2fDS+GSb8Ew==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - '@docusaurus/plugin-debug@3.2.1': - resolution: {integrity: sha512-AMKq8NuUKf2sRpN1m/sIbqbRbnmk+rSA+8mNU1LNxEl9BW9F/Gng8m9HKlzeyMPrf5XidzS1jqkuTLDJ6KIrFw==} + '@docusaurus/plugin-debug@3.3.2': + resolution: {integrity: sha512-oBIBmwtaB+YS0XlmZ3gCO+cMbsGvIYuAKkAopoCh0arVjtlyPbejzPrHuCoRHB9G7abjNZw7zoONOR8+8LM5+Q==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - '@docusaurus/plugin-google-analytics@3.2.1': - resolution: {integrity: sha512-/rJ+9u+Px0eTCiF4TNcNtj3kHf8cp6K1HCwOTdbsSlz6Xn21syZYcy+f1VM9wF6HrvUkXUcbM5TDCvg2IRL6bQ==} + '@docusaurus/plugin-google-analytics@3.3.2': + resolution: {integrity: sha512-jXhrEIhYPSClMBK6/IA8qf1/FBoxqGXZvg7EuBax9HaK9+kL3L0TJIlatd8jQJOMtds8mKw806TOCc3rtEad1A==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - '@docusaurus/plugin-google-gtag@3.2.1': - resolution: {integrity: sha512-XtuJnlMvYfppeVdUyKiDIJAa/gTJKCQU92z8CLZZ9ibJdgVjFOLS10s0hIC0eL5z0U2u2loJz2rZ63HOkNHbBA==} + '@docusaurus/plugin-google-gtag@3.3.2': + resolution: {integrity: sha512-vcrKOHGbIDjVnNMrfbNpRQR1x6Jvcrb48kVzpBAOsKbj9rXZm/idjVAXRaewwobHdOrJkfWS/UJoxzK8wyLRBQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - '@docusaurus/plugin-google-tag-manager@3.2.1': - resolution: {integrity: sha512-wiS/kE0Ny5pnjTxVCs8ljRnkL1RVMj59t6jmSsgEX7piDOoaXSMIUaoIt9ogS/v132uO0xEsxHstkRUZHQyPcQ==} + '@docusaurus/plugin-google-tag-manager@3.3.2': + resolution: {integrity: sha512-ldkR58Fdeks0vC+HQ+L+bGFSJsotQsipXD+iKXQFvkOfmPIV6QbHRd7IIcm5b6UtwOiK33PylNS++gjyLUmaGw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - '@docusaurus/plugin-sitemap@3.2.1': - resolution: {integrity: sha512-uWZ7AxzdeaQSTCwD2yZtOiEm9zyKU+wqCmi/Sf25kQQqqFSBZUStXfaQ8OHP9cecnw893ZpZ811rPhB/wfujJw==} + '@docusaurus/plugin-sitemap@3.3.2': + resolution: {integrity: sha512-/ZI1+bwZBhAgC30inBsHe3qY9LOZS+79fRGkNdTcGHRMcdAp6Vw2pCd1gzlxd/xU+HXsNP6cLmTOrggmRp3Ujg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - '@docusaurus/preset-classic@3.2.1': - resolution: {integrity: sha512-E3OHSmttpEBcSMhfPBq3EJMBxZBM01W1rnaCUTXy9EHvkmB5AwgTfW1PwGAybPAX579ntE03R+2zmXdizWfKnQ==} + '@docusaurus/preset-classic@3.3.2': + resolution: {integrity: sha512-1SDS7YIUN1Pg3BmD6TOTjhB7RSBHJRpgIRKx9TpxqyDrJ92sqtZhomDc6UYoMMLQNF2wHFZZVGFjxJhw2VpL+Q==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - '@docusaurus/react-loadable@5.5.2': - resolution: {integrity: sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==} + '@docusaurus/react-loadable@6.0.0': + resolution: {integrity: sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==} peerDependencies: react: '*' - '@docusaurus/theme-classic@3.2.1': - resolution: {integrity: sha512-+vSbnQyoWjc6vRZi4vJO2dBU02wqzynsai15KK+FANZudrYaBHtkbLZAQhgmxzBGVpxzi87gRohlMm+5D8f4tA==} + '@docusaurus/theme-classic@3.3.2': + resolution: {integrity: sha512-gepHFcsluIkPb4Im9ukkiO4lXrai671wzS3cKQkY9BXQgdVwsdPf/KS0Vs4Xlb0F10fTz+T3gNjkxNEgSN9M0A==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - '@docusaurus/theme-common@3.2.1': - resolution: {integrity: sha512-d+adiD7L9xv6EvfaAwUqdKf4orsM3jqgeqAM+HAjgL/Ux0GkVVnfKr+tsoe+4ow4rHe6NUt+nkkW8/K8dKdilA==} + '@docusaurus/theme-common@3.3.2': + resolution: {integrity: sha512-kXqSaL/sQqo4uAMQ4fHnvRZrH45Xz2OdJ3ABXDS7YVGPSDTBC8cLebFrRR4YF9EowUHto1UC/EIklJZQMG/usA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - '@docusaurus/theme-search-algolia@3.2.1': - resolution: {integrity: sha512-bzhCrpyXBXzeydNUH83II2akvFEGfhsNTPPWsk5N7e+odgQCQwoHhcF+2qILbQXjaoZ6B3c48hrvkyCpeyqGHw==} + '@docusaurus/theme-search-algolia@3.3.2': + resolution: {integrity: sha512-qLkfCl29VNBnF1MWiL9IyOQaHxUvicZp69hISyq/xMsNvFKHFOaOfk9xezYod2Q9xx3xxUh9t/QPigIei2tX4w==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - '@docusaurus/theme-translations@3.2.1': - resolution: {integrity: sha512-jAUMkIkFfY+OAhJhv6mV8zlwY6J4AQxJPTgLdR2l+Otof9+QdJjHNh/ifVEu9q0lp3oSPlJj9l05AaP7Ref+cg==} + '@docusaurus/theme-translations@3.3.2': + resolution: {integrity: sha512-bPuiUG7Z8sNpGuTdGnmKl/oIPeTwKr0AXLGu9KaP6+UFfRZiyWbWE87ti97RrevB2ffojEdvchNujparR3jEZQ==} engines: {node: '>=18.0'} '@docusaurus/tsconfig@3.2.1': resolution: {integrity: sha512-+biUwtsYW3oChLxYezzA+NIgS3Q9KDRl7add/YT54RXs9Q4rKInebxdHdG6JFs5BaTg45gyjDu0rvNVcGeHODg==} - '@docusaurus/types@3.2.1': - resolution: {integrity: sha512-n/toxBzL2oxTtRTOFiGKsHypzn/Pm+sXyw+VSk1UbqbXQiHOwHwts55bpKwbcUgA530Is6kix3ELiFOv9GAMfw==} + '@docusaurus/types@3.3.2': + resolution: {integrity: sha512-5p201S7AZhliRxTU7uMKtSsoC8mgPA9bs9b5NQg1IRdRxJfflursXNVsgc3PcMqiUTul/v1s3k3rXXFlRE890w==} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - '@docusaurus/utils-common@3.2.1': - resolution: {integrity: sha512-N5vadULnRLiqX2QfTjVEU3u5vo6RG2EZTdyXvJdzDOdrLCGIZAfnf/VkssinFZ922sVfaFfQ4FnStdhn5TWdVg==} + '@docusaurus/utils-common@3.3.2': + resolution: {integrity: sha512-QWFTLEkPYsejJsLStgtmetMFIA3pM8EPexcZ4WZ7b++gO5jGVH7zsipREnCHzk6+eDgeaXfkR6UPaTt86bp8Og==} engines: {node: '>=18.0'} peerDependencies: '@docusaurus/types': '*' @@ -1020,12 +1544,12 @@ packages: '@docusaurus/types': optional: true - '@docusaurus/utils-validation@3.2.1': - resolution: {integrity: sha512-+x7IR9hNMXi62L1YAglwd0s95fR7+EtirjTxSN4kahYRWGqOi3jlQl1EV0az/yTEvKbxVvOPcdYicGu9dk4LJw==} + '@docusaurus/utils-validation@3.3.2': + resolution: {integrity: sha512-itDgFs5+cbW9REuC7NdXals4V6++KifgVMzoGOOOSIifBQw+8ULhy86u5e1lnptVL0sv8oAjq2alO7I40GR7pA==} engines: {node: '>=18.0'} - '@docusaurus/utils@3.2.1': - resolution: {integrity: sha512-DPkIS/EPc+pGAV798PUXgNzJFM3HJouoQXgr0KDZuJVz1EkWbDLOcQwLIz8Qx7liI9ddfkN/TXTRQdsTPZNakw==} + '@docusaurus/utils@3.3.2': + resolution: {integrity: sha512-f4YMnBVymtkSxONv4Y8js3Gez9IgHX+Lcg6YRMOjVbq8sgCcdYK1lf6SObAuz5qB/mxiSK7tW0M9aaiIaUSUJg==} engines: {node: '>=18.0'} peerDependencies: '@docusaurus/types': '*' @@ -1394,12 +1918,6 @@ packages: '@slorber/remark-comment@1.0.0': resolution: {integrity: sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==} - '@svgr/babel-plugin-add-jsx-attribute@6.5.1': - resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@svgr/babel-plugin-add-jsx-attribute@8.0.0': resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} engines: {node: '>=14'} @@ -1418,122 +1936,62 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1': - resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0': resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 - '@svgr/babel-plugin-svg-dynamic-title@6.5.1': - resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@svgr/babel-plugin-svg-dynamic-title@8.0.0': resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 - '@svgr/babel-plugin-svg-em-dimensions@6.5.1': - resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@svgr/babel-plugin-svg-em-dimensions@8.0.0': resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 - '@svgr/babel-plugin-transform-react-native-svg@6.5.1': - resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@svgr/babel-plugin-transform-react-native-svg@8.1.0': resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 - '@svgr/babel-plugin-transform-svg-component@6.5.1': - resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} - engines: {node: '>=12'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@svgr/babel-plugin-transform-svg-component@8.0.0': resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 - '@svgr/babel-preset@6.5.1': - resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@svgr/babel-preset@8.1.0': resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 - '@svgr/core@6.5.1': - resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} - engines: {node: '>=10'} - '@svgr/core@8.1.0': resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} engines: {node: '>=14'} - '@svgr/hast-util-to-babel-ast@6.5.1': - resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} - engines: {node: '>=10'} - '@svgr/hast-util-to-babel-ast@8.0.0': resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} engines: {node: '>=14'} - '@svgr/plugin-jsx@6.5.1': - resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} - engines: {node: '>=10'} - peerDependencies: - '@svgr/core': ^6.0.0 - '@svgr/plugin-jsx@8.1.0': resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} engines: {node: '>=14'} peerDependencies: '@svgr/core': '*' - '@svgr/plugin-svgo@6.5.1': - resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==} - engines: {node: '>=10'} - peerDependencies: - '@svgr/core': '*' - '@svgr/plugin-svgo@8.1.0': resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} engines: {node: '>=14'} peerDependencies: '@svgr/core': '*' - '@svgr/webpack@6.5.1': - resolution: {integrity: sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==} - engines: {node: '>=10'} - '@svgr/webpack@8.1.0': resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} engines: {node: '>=14'} @@ -1624,10 +2082,6 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/marked@6.0.0': - resolution: {integrity: sha512-jmjpa4BwUsmhxcfsgUit/7A9KbrC48Q0q8KvnY107ogcjGgTFDlIL3RpihNpx2Mu1hM4mdFQjoVc4O6JoGKHsA==} - deprecated: This is a stub types definition. marked provides its own type definitions, so you do not need this installed. - '@types/mdast@4.0.3': resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} @@ -1646,8 +2100,11 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@20.12.7': - resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} + '@types/node@20.12.12': + resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} + + '@types/node@20.12.13': + resolution: {integrity: sha512-gBGeanV41c1L171rR7wjbMiEpEI/l5XFQdLLfhr/REwpgDy/4U8y89+i8kRiLzDyZdOkXh+cRaTetUnCYutoXA==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -1676,8 +2133,8 @@ packages: '@types/react-router@5.1.20': resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} - '@types/react@18.3.0': - resolution: {integrity: sha512-DiUcKjzE6soLyln8NNZmyhcQjVv+WsUIFSqetMN0p8927OztKT4VTfFTqsbAi5oAGIcgOmOajlfBqyptDDjZRw==} + '@types/react@18.3.3': + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} '@types/retry@0.12.0': resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} @@ -1905,8 +2362,8 @@ packages: peerDependencies: postcss: ^8.1.0 - axios@1.6.8: - resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} + axios@1.7.2: + resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} babel-loader@9.1.3: resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} @@ -1977,6 +2434,10 @@ packages: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -2097,8 +2558,8 @@ packages: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} - cli-table3@0.6.4: - resolution: {integrity: sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} cliui@8.0.1: @@ -2240,11 +2701,14 @@ packages: core-js-compat@3.37.0: resolution: {integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==} - core-js-pure@3.37.0: - resolution: {integrity: sha512-d3BrpyFr5eD4KcbRvQ3FTUx/KWmaDesr7+a3+1+P46IUnNoEt+oiLijPINZMEon7w9oGkIINWxrBAU9DEciwFQ==} + core-js-compat@3.37.1: + resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} - core-js@3.37.0: - resolution: {integrity: sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==} + core-js-pure@3.37.1: + resolution: {integrity: sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==} + + core-js@3.37.1: + resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -2253,10 +2717,6 @@ packages: resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} engines: {node: '>=8'} - cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - cosmiconfig@8.3.6: resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} @@ -2278,9 +2738,9 @@ packages: resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} engines: {node: '>=4'} - css-declaration-sorter@6.4.1: - resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} - engines: {node: ^10 || ^12 || >=14} + css-declaration-sorter@7.2.0: + resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} + engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.0.9 @@ -2296,8 +2756,8 @@ packages: webpack: optional: true - css-minimizer-webpack-plugin@4.2.2: - resolution: {integrity: sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==} + css-minimizer-webpack-plugin@5.0.1: + resolution: {integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==} engines: {node: '>= 14.15.0'} peerDependencies: '@parcel/css': '*' @@ -2330,10 +2790,6 @@ packages: css-to-react-native@3.2.0: resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} - css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - css-tree@2.2.1: resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} @@ -2351,33 +2807,29 @@ packages: engines: {node: '>=4'} hasBin: true - cssnano-preset-advanced@5.3.10: - resolution: {integrity: sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==} - engines: {node: ^10 || ^12 || >=14.0} + cssnano-preset-advanced@6.1.2: + resolution: {integrity: sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - cssnano-preset-default@5.2.14: - resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} - engines: {node: ^10 || ^12 || >=14.0} + cssnano-preset-default@6.1.2: + resolution: {integrity: sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - cssnano-utils@3.1.0: - resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} - engines: {node: ^10 || ^12 || >=14.0} + cssnano-utils@4.0.2: + resolution: {integrity: sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - cssnano@5.1.15: - resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} - engines: {node: ^10 || ^12 || >=14.0} + cssnano@6.1.2: + resolution: {integrity: sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 - - csso@4.2.0: - resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} - engines: {node: '>=8.0.0'} + postcss: ^8.4.31 csso@5.0.5: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} @@ -2421,6 +2873,15 @@ packages: supports-color: optional: true + debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} @@ -2494,8 +2955,9 @@ packages: engines: {node: '>= 4.2.1'} hasBin: true - detect-port@1.5.1: - resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} + detect-port@1.6.1: + resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} + engines: {node: '>= 4.0.0'} hasBin: true devlop@1.1.0: @@ -2545,8 +3007,8 @@ packages: dompurify@2.5.1: resolution: {integrity: sha512-HH391uRJXAAeelougod93W++2gECfHIVCqq+B/4znhjCgb2zVPL+iLOVnTYwejqAuNf69Ffc5ILQYdPHsZACJA==} - dompurify@3.1.1: - resolution: {integrity: sha512-tVP8C/GJwnABOn/7cx/ymx/hXpmBfWIPihC1aOEvS8GbMqy3pgeYtJk1HXN3CO7tu+8bpY18f6isjR5Cymj0TQ==} + dompurify@3.1.5: + resolution: {integrity: sha512-lwG+n5h8QNpxtyrJW/gJWckL+1/DQiYMX8f7t8Z2AZTPw1esVrqjI63i7Zc2Gz0aKzLVMYC1V1PL/ky+aY/NgA==} domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -2778,6 +3240,10 @@ packages: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} @@ -2923,6 +3389,7 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} @@ -3181,6 +3648,7 @@ packages: inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.3: resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} @@ -3345,8 +3813,8 @@ packages: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} - isomorphic-dompurify@2.7.0: - resolution: {integrity: sha512-0FTlXP/gEEWW+O/sXaO9yZ4bgegrHnOqzbdCNAMeO2KYIOVMAcqVIo+uTcWYd1+DmI+nV58vUmNW03nauoKn2w==} + isomorphic-dompurify@2.11.0: + resolution: {integrity: sha512-PNGGCbbSH7+zF45UKu4Kh+yI8hm1bWA8kIZQow4KMImnjYQtrqJA0ZmwHamYUU7+M5tQ84z7xXMWmZF/v5t5eA==} engines: {node: '>=18'} jest-util@29.7.0: @@ -3365,8 +3833,8 @@ packages: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true - joi@17.13.0: - resolution: {integrity: sha512-9qcrTyoBmFZRNHeVP4edKqIUEgFzq7MHvTNSDuHSqkpOPtiBkgNgcmTSqmiw1kw9tdKaiddvIDv/eCJDxmqWCA==} + joi@17.13.1: + resolution: {integrity: sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==} js-levenshtein@1.1.6: resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} @@ -3383,8 +3851,8 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsdom@24.0.0: - resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==} + jsdom@24.1.0: + resolution: {integrity: sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==} engines: {node: '>=18'} peerDependencies: canvas: ^2.11.2 @@ -3449,9 +3917,9 @@ packages: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} + lilconfig@3.1.1: + resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} + engines: {node: '>=14'} lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -3596,9 +4064,6 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} @@ -3754,6 +4219,10 @@ packages: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + mime-db@1.33.0: resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} engines: {node: '>= 0.6'} @@ -3902,10 +4371,6 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - normalize-url@6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - normalize-url@8.0.1: resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} engines: {node: '>=14.16'} @@ -3920,8 +4385,8 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nwsapi@2.2.9: - resolution: {integrity: sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==} + nwsapi@2.2.10: + resolution: {integrity: sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==} oas-kit-common@1.0.8: resolution: {integrity: sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==} @@ -4108,6 +4573,9 @@ packages: picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -4128,52 +4596,53 @@ packages: resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} engines: {node: '>=10'} - postcss-calc@8.2.4: - resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + postcss-calc@9.0.1: + resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.2 - postcss-colormin@5.3.1: - resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-colormin@6.1.0: + resolution: {integrity: sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-convert-values@5.1.3: - resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-convert-values@6.1.0: + resolution: {integrity: sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-discard-comments@5.1.2: - resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-discard-comments@6.0.2: + resolution: {integrity: sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-discard-duplicates@5.1.0: - resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-discard-duplicates@6.0.3: + resolution: {integrity: sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-discard-empty@5.1.1: - resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-discard-empty@6.0.3: + resolution: {integrity: sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-discard-overridden@5.1.0: - resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-discard-overridden@6.0.2: + resolution: {integrity: sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-discard-unused@5.1.0: - resolution: {integrity: sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-discard-unused@6.0.5: + resolution: {integrity: sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 postcss-loader@7.3.4: resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} @@ -4182,47 +4651,47 @@ packages: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 - postcss-merge-idents@5.1.1: - resolution: {integrity: sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-merge-idents@6.0.3: + resolution: {integrity: sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-merge-longhand@5.1.7: - resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-merge-longhand@6.0.5: + resolution: {integrity: sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-merge-rules@5.1.4: - resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-merge-rules@6.1.1: + resolution: {integrity: sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-minify-font-values@5.1.0: - resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-minify-font-values@6.1.0: + resolution: {integrity: sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-minify-gradients@5.1.1: - resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-minify-gradients@6.0.3: + resolution: {integrity: sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-minify-params@5.1.4: - resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-minify-params@6.1.0: + resolution: {integrity: sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-minify-selectors@5.2.1: - resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-minify-selectors@6.0.4: + resolution: {integrity: sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 postcss-modules-extract-imports@3.1.0: resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} @@ -4248,114 +4717,114 @@ packages: peerDependencies: postcss: ^8.1.0 - postcss-normalize-charset@5.1.0: - resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-normalize-charset@6.0.2: + resolution: {integrity: sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-normalize-display-values@5.1.0: - resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-normalize-display-values@6.0.2: + resolution: {integrity: sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-normalize-positions@5.1.1: - resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-normalize-positions@6.0.2: + resolution: {integrity: sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-normalize-repeat-style@5.1.1: - resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-normalize-repeat-style@6.0.2: + resolution: {integrity: sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-normalize-string@5.1.0: - resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-normalize-string@6.0.2: + resolution: {integrity: sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-normalize-timing-functions@5.1.0: - resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-normalize-timing-functions@6.0.2: + resolution: {integrity: sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-normalize-unicode@5.1.1: - resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-normalize-unicode@6.1.0: + resolution: {integrity: sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-normalize-url@5.1.0: - resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-normalize-url@6.0.2: + resolution: {integrity: sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-normalize-whitespace@5.1.1: - resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-normalize-whitespace@6.0.2: + resolution: {integrity: sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-ordered-values@5.1.3: - resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-ordered-values@6.0.2: + resolution: {integrity: sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-reduce-idents@5.2.0: - resolution: {integrity: sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-reduce-idents@6.0.3: + resolution: {integrity: sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-reduce-initial@5.1.2: - resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-reduce-initial@6.1.0: + resolution: {integrity: sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-reduce-transforms@5.1.0: - resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-reduce-transforms@6.0.2: + resolution: {integrity: sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 postcss-selector-parser@6.0.16: resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} engines: {node: '>=4'} - postcss-sort-media-queries@4.4.1: - resolution: {integrity: sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==} - engines: {node: '>=10.0.0'} + postcss-sort-media-queries@5.2.0: + resolution: {integrity: sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==} + engines: {node: '>=14.0.0'} peerDependencies: - postcss: ^8.4.16 + postcss: ^8.4.23 - postcss-svgo@5.1.0: - resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-svgo@6.0.3: + resolution: {integrity: sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==} + engines: {node: ^14 || ^16 || >= 18} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 - postcss-unique-selectors@5.1.1: - resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-unique-selectors@6.0.4: + resolution: {integrity: sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss-zindex@5.1.0: - resolution: {integrity: sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==} - engines: {node: ^10 || ^12 || >=14.0} + postcss-zindex@6.0.2: + resolution: {integrity: sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} @@ -4464,10 +4933,10 @@ packages: typescript: optional: true - react-dom@18.3.0: - resolution: {integrity: sha512-zaKdLBftQJnvb7FtDIpZtsAIb2MZU087RM8bRDZU8LVCCFYjPTsDZJNFUWPcVz3HFSN1n/caxi0ca4B/aaVQGQ==} + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: - react: ^18.3.0 + react: ^18.3.1 react-error-overlay@6.0.11: resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} @@ -4524,8 +4993,8 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-0 || ^18.0.0 - react@18.3.0: - resolution: {integrity: sha512-RPutkJftSAldDibyrjuku7q11d3oy6wKOyPe5K1HA/HwwrXcEqBdHsLypkC2FFYjP7bPUa6gbzSBhw4sY2JcDg==} + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} readable-stream@2.3.8: @@ -4679,11 +5148,15 @@ packages: rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + rrweb-cssom@0.7.0: + resolution: {integrity: sha512-KlSv0pm9kgQSRxXEMgtivPJ4h826YHsuob8pSHcfSZsSXGtvpEAie8S0AnXuObEJ7nhikOb4ahwxDm0H2yW17g==} + rtl-detect@1.1.2: resolution: {integrity: sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==} @@ -4714,8 +5187,8 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - scheduler@0.23.1: - resolution: {integrity: sha512-5GKS5JGfiah1O38Vfa9srZE4s3wdHbwjlCrvIookrg2FO9aIwKLOJXuJQFlEfNcVSOXuaL2hzDeY20uVXcUtrw==} + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} schema-utils@2.7.0: resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} @@ -4756,6 +5229,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} @@ -4866,8 +5344,8 @@ packages: sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - sort-css-media-queries@2.1.0: - resolution: {integrity: sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==} + sort-css-media-queries@2.2.0: + resolution: {integrity: sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==} engines: {node: '>= 6.3.0'} source-list-map@2.0.1: @@ -4908,10 +5386,6 @@ packages: resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} engines: {node: '>=12'} - stable@0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -4984,11 +5458,11 @@ packages: react: '>= 16.8.0' react-dom: '>= 16.8.0' - stylehacks@5.1.1: - resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} - engines: {node: ^10 || ^12 || >=14.0} + stylehacks@6.1.1: + resolution: {integrity: sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: - postcss: ^8.2.15 + postcss: ^8.4.31 stylis@4.3.1: resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} @@ -5012,11 +5486,6 @@ packages: svg-parser@2.0.4: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} - svgo@2.8.0: - resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} - engines: {node: '>=10.13.0'} - hasBin: true - svgo@3.2.0: resolution: {integrity: sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==} engines: {node: '>=14.0.0'} @@ -5086,8 +5555,8 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - tough-cookie@4.1.3: - resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} tr46@0.0.3: @@ -5408,6 +5877,18 @@ packages: utf-8-validate: optional: true + ws@8.17.0: + resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + xdg-basedir@5.1.0: resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} engines: {node: '>=12'} @@ -5440,8 +5921,8 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yaml@2.4.1: - resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} + yaml@2.4.2: + resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} engines: {node: '>= 14'} hasBin: true @@ -5582,8 +6063,15 @@ snapshots: '@babel/highlight': 7.24.2 picocolors: 1.0.0 + '@babel/code-frame@7.24.6': + dependencies: + '@babel/highlight': 7.24.6 + picocolors: 1.0.1 + '@babel/compat-data@7.24.4': {} + '@babel/compat-data@7.24.6': {} + '@babel/core@7.24.4': dependencies: '@ampproject/remapping': 2.3.0 @@ -5604,6 +6092,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@7.24.6': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.6 + '@babel/generator': 7.24.6 + '@babel/helper-compilation-targets': 7.24.6 + '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) + '@babel/helpers': 7.24.6 + '@babel/parser': 7.24.6 + '@babel/template': 7.24.6 + '@babel/traverse': 7.24.6 + '@babel/types': 7.24.6 + convert-source-map: 2.0.0 + debug: 4.3.5 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/generator@7.24.4': dependencies: '@babel/types': 7.24.0 @@ -5611,14 +6119,29 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 + '@babel/generator@7.24.6': + dependencies: + '@babel/types': 7.24.6 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + '@babel/helper-annotate-as-pure@7.22.5': dependencies: '@babel/types': 7.24.0 + '@babel/helper-annotate-as-pure@7.24.6': + dependencies: + '@babel/types': 7.24.6 + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': dependencies: '@babel/types': 7.24.0 + '@babel/helper-builder-binary-assignment-operator-visitor@7.24.6': + dependencies: + '@babel/types': 7.24.6 + '@babel/helper-compilation-targets@7.23.6': dependencies: '@babel/compat-data': 7.24.4 @@ -5627,6 +6150,14 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.24.6': + dependencies: + '@babel/compat-data': 7.24.6 + '@babel/helper-validator-option': 7.24.6 + browserslist: 4.23.0 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.24.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -5640,6 +6171,19 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-annotate-as-pure': 7.24.6 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-function-name': 7.24.6 + '@babel/helper-member-expression-to-functions': 7.24.6 + '@babel/helper-optimise-call-expression': 7.24.6 + '@babel/helper-replace-supers': 7.24.6(@babel/core@7.24.6) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.6 + '@babel/helper-split-export-declaration': 7.24.6 + semver: 6.3.1 + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -5647,6 +6191,20 @@ snapshots: regexpu-core: 5.3.2 semver: 6.3.1 + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + + '@babel/helper-create-regexp-features-plugin@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-annotate-as-pure': 7.24.6 + regexpu-core: 5.3.2 + semver: 6.3.1 + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -5658,25 +6216,55 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + '@babel/helper-environment-visitor@7.22.20': {} + '@babel/helper-environment-visitor@7.24.6': {} + '@babel/helper-function-name@7.23.0': dependencies: '@babel/template': 7.24.0 '@babel/types': 7.24.0 + '@babel/helper-function-name@7.24.6': + dependencies: + '@babel/template': 7.24.6 + '@babel/types': 7.24.6 + '@babel/helper-hoist-variables@7.22.5': dependencies: '@babel/types': 7.24.0 + '@babel/helper-hoist-variables@7.24.6': + dependencies: + '@babel/types': 7.24.6 + '@babel/helper-member-expression-to-functions@7.23.0': dependencies: '@babel/types': 7.24.0 + '@babel/helper-member-expression-to-functions@7.24.6': + dependencies: + '@babel/types': 7.24.6 + '@babel/helper-module-imports@7.24.3': dependencies: '@babel/types': 7.24.0 + '@babel/helper-module-imports@7.24.6': + dependencies: + '@babel/types': 7.24.6 + '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -5686,12 +6274,27 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-module-transforms@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-module-imports': 7.24.6 + '@babel/helper-simple-access': 7.24.6 + '@babel/helper-split-export-declaration': 7.24.6 + '@babel/helper-validator-identifier': 7.24.6 + '@babel/helper-optimise-call-expression@7.22.5': dependencies: '@babel/types': 7.24.0 + '@babel/helper-optimise-call-expression@7.24.6': + dependencies: + '@babel/types': 7.24.6 + '@babel/helper-plugin-utils@7.24.0': {} + '@babel/helper-plugin-utils@7.24.6': {} + '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -5699,6 +6302,13 @@ snapshots: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 + '@babel/helper-remap-async-to-generator@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-annotate-as-pure': 7.24.6 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-wrap-function': 7.24.6 + '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -5706,30 +6316,61 @@ snapshots: '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-member-expression-to-functions': 7.24.6 + '@babel/helper-optimise-call-expression': 7.24.6 + '@babel/helper-simple-access@7.22.5': dependencies: '@babel/types': 7.24.0 + '@babel/helper-simple-access@7.24.6': + dependencies: + '@babel/types': 7.24.6 + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': dependencies: '@babel/types': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers@7.24.6': + dependencies: + '@babel/types': 7.24.6 + '@babel/helper-split-export-declaration@7.22.6': dependencies: '@babel/types': 7.24.0 + '@babel/helper-split-export-declaration@7.24.6': + dependencies: + '@babel/types': 7.24.6 + '@babel/helper-string-parser@7.24.1': {} + '@babel/helper-string-parser@7.24.6': {} + '@babel/helper-validator-identifier@7.22.20': {} + '@babel/helper-validator-identifier@7.24.6': {} + '@babel/helper-validator-option@7.23.5': {} + '@babel/helper-validator-option@7.24.6': {} + '@babel/helper-wrap-function@7.22.20': dependencies: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.24.0 '@babel/types': 7.24.0 + '@babel/helper-wrap-function@7.24.6': + dependencies: + '@babel/helper-function-name': 7.24.6 + '@babel/template': 7.24.6 + '@babel/types': 7.24.6 + '@babel/helpers@7.24.4': dependencies: '@babel/template': 7.24.0 @@ -5738,6 +6379,11 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helpers@7.24.6': + dependencies: + '@babel/template': 7.24.6 + '@babel/types': 7.24.6 + '@babel/highlight@7.24.2': dependencies: '@babel/helper-validator-identifier': 7.22.20 @@ -5745,21 +6391,43 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.0.0 + '@babel/highlight@7.24.6': + dependencies: + '@babel/helper-validator-identifier': 7.24.6 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + '@babel/parser@7.24.4': dependencies: '@babel/types': 7.24.0 + '@babel/parser@7.24.6': + dependencies: + '@babel/types': 7.24.6 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -5767,122 +6435,245 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.6 + '@babel/plugin-transform-optional-chaining': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-import-assertions@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-import-attributes@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-jsx@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-typescript@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-arrow-functions@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -5891,6 +6682,14 @@ snapshots: '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.4) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.4) + '@babel/plugin-transform-async-generator-functions@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-remap-async-to-generator': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.6) + '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -5898,22 +6697,45 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.4) + '@babel/plugin-transform-async-to-generator@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-module-imports': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-remap-async-to-generator': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-block-scoped-functions@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-block-scoping@7.24.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-block-scoping@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-class-properties@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-create-class-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -5921,6 +6743,13 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.4) + '@babel/plugin-transform-class-static-block@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-create-class-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.6) + '@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -5933,52 +6762,110 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 + '@babel/plugin-transform-classes@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-annotate-as-pure': 7.24.6 + '@babel/helper-compilation-targets': 7.24.6 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-function-name': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-replace-supers': 7.24.6(@babel/core@7.24.6) + '@babel/helper-split-export-declaration': 7.24.6 + globals: 11.12.0 + '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/template': 7.24.0 + '@babel/plugin-transform-computed-properties@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/template': 7.24.6 + '@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-destructuring@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-dotall-regex@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-create-regexp-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-duplicate-keys@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-transform-dynamic-import@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.6) + '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-exponentiation-operator@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-transform-export-namespace-from@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.6) + '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-for-of@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.6 + '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -5986,34 +6873,69 @@ snapshots: '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-function-name@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-compilation-targets': 7.24.6 + '@babel/helper-function-name': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-transform-json-strings@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.6) + '@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-literals@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.4) + '@babel/plugin-transform-logical-assignment-operators@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.6) + '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-member-expression-literals@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-modules-amd@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -6021,6 +6943,13 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-simple-access': 7.22.5 + '@babel/plugin-transform-modules-commonjs@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-simple-access': 7.24.6 + '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -6029,35 +6958,72 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-identifier': 7.22.20 + '@babel/plugin-transform-modules-systemjs@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-hoist-variables': 7.24.6 + '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-validator-identifier': 7.24.6 + '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-modules-umd@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-named-capturing-groups-regex@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-create-regexp-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-new-target@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-transform-nullish-coalescing-operator@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.6) + '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.4) + '@babel/plugin-transform-numeric-separator@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.6) + '@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -6066,18 +7032,38 @@ snapshots: '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.4) '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-object-rest-spread@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-compilation-targets': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.6) + '@babel/plugin-transform-parameters': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-object-super@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-replace-supers': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-transform-optional-catch-binding@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.6) + '@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -6085,17 +7071,35 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-transform-optional-chaining@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.6 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.6) + '@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-parameters@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-private-methods@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-create-class-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -6104,11 +7108,24 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.4) + '@babel/plugin-transform-private-property-in-object@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-annotate-as-pure': 7.24.6 + '@babel/helper-create-class-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.6) + '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-property-literals@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-react-constant-elements@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -6119,11 +7136,21 @@ snapshots: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-react-display-name@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.4) + '@babel/plugin-transform-react-jsx-development@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/plugin-transform-react-jsx': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -6133,31 +7160,57 @@ snapshots: '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4) '@babel/types': 7.24.0 + '@babel/plugin-transform-react-jsx@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-annotate-as-pure': 7.24.6 + '@babel/helper-module-imports': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-jsx': 7.24.6(@babel/core@7.24.6) + '@babel/types': 7.24.6 + '@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-react-pure-annotations@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-annotate-as-pure': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 regenerator-transform: 0.15.2 + '@babel/plugin-transform-regenerator@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + regenerator-transform: 0.15.2 + '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.4)': + '@babel/plugin-transform-reserved-words@7.24.6(@babel/core@7.24.6)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.4) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.4) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.4) + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + + '@babel/plugin-transform-runtime@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-module-imports': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.6) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.6) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.6) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -6167,27 +7220,53 @@ snapshots: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-shorthand-properties@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-spread@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.6 + '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-sticky-regex@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-template-literals@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-typeof-symbol@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-typescript@7.24.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -6196,29 +7275,60 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-typescript@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-annotate-as-pure': 7.24.6 + '@babel/helper-create-class-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-typescript': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-unicode-escapes@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-unicode-property-regex@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-create-regexp-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-unicode-regex@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-create-regexp-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-unicode-sets-regex@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-create-regexp-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/preset-env@7.24.4(@babel/core@7.24.4)': dependencies: '@babel/compat-data': 7.24.4 @@ -6306,6 +7416,93 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/preset-env@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/compat-data': 7.24.6 + '@babel/core': 7.24.6 + '@babel/helper-compilation-targets': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-validator-option': 7.24.6 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.6) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.6) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.6) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.6) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.6) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.6) + '@babel/plugin-syntax-import-assertions': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-syntax-import-attributes': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.6) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.6) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.6) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.6) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.6) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.6) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.6) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.6) + '@babel/plugin-transform-arrow-functions': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-async-generator-functions': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-async-to-generator': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-block-scoped-functions': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-block-scoping': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-class-properties': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-class-static-block': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-classes': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-computed-properties': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-destructuring': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-dotall-regex': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-duplicate-keys': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-dynamic-import': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-exponentiation-operator': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-export-namespace-from': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-for-of': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-function-name': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-json-strings': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-literals': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-logical-assignment-operators': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-member-expression-literals': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-modules-amd': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-modules-commonjs': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-modules-systemjs': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-modules-umd': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-new-target': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-numeric-separator': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-object-rest-spread': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-object-super': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-optional-catch-binding': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-optional-chaining': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-parameters': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-private-methods': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-private-property-in-object': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-property-literals': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-regenerator': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-reserved-words': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-shorthand-properties': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-spread': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-sticky-regex': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-template-literals': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-typeof-symbol': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-unicode-escapes': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-unicode-property-regex': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-unicode-regex': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-unicode-sets-regex': 7.24.6(@babel/core@7.24.6) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.6) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.6) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.6) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.6) + core-js-compat: 3.37.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -6313,6 +7510,13 @@ snapshots: '@babel/types': 7.24.0 esutils: 2.0.3 + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/types': 7.24.0 + esutils: 2.0.3 + '@babel/preset-react@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -6323,6 +7527,16 @@ snapshots: '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.4) '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.4) + '@babel/preset-react@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-validator-option': 7.24.6 + '@babel/plugin-transform-react-display-name': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-react-jsx': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-react-jsx-development': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-react-pure-annotations': 7.24.6(@babel/core@7.24.6) + '@babel/preset-typescript@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -6332,23 +7546,42 @@ snapshots: '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) '@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.24.4) + '@babel/preset-typescript@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-validator-option': 7.24.6 + '@babel/plugin-syntax-jsx': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-modules-commonjs': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-typescript': 7.24.6(@babel/core@7.24.6) + '@babel/regjsgen@0.8.0': {} - '@babel/runtime-corejs3@7.24.4': + '@babel/runtime-corejs3@7.24.6': dependencies: - core-js-pure: 3.37.0 + core-js-pure: 3.37.1 regenerator-runtime: 0.14.1 '@babel/runtime@7.24.4': dependencies: regenerator-runtime: 0.14.1 + '@babel/runtime@7.24.6': + dependencies: + regenerator-runtime: 0.14.1 + '@babel/template@7.24.0': dependencies: '@babel/code-frame': 7.24.2 '@babel/parser': 7.24.4 '@babel/types': 7.24.0 + '@babel/template@7.24.6': + dependencies: + '@babel/code-frame': 7.24.6 + '@babel/parser': 7.24.6 + '@babel/types': 7.24.6 + '@babel/traverse@7.24.1': dependencies: '@babel/code-frame': 7.24.2 @@ -6364,12 +7597,33 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.24.6': + dependencies: + '@babel/code-frame': 7.24.6 + '@babel/generator': 7.24.6 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-function-name': 7.24.6 + '@babel/helper-hoist-variables': 7.24.6 + '@babel/helper-split-export-declaration': 7.24.6 + '@babel/parser': 7.24.6 + '@babel/types': 7.24.6 + debug: 4.3.5 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.24.0': dependencies: '@babel/helper-string-parser': 7.24.1 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + '@babel/types@7.24.6': + dependencies: + '@babel/helper-string-parser': 7.24.6 + '@babel/helper-validator-identifier': 7.24.6 + to-fast-properties: 2.0.0 + '@colors/colors@1.5.0': optional: true @@ -6377,57 +7631,146 @@ snapshots: '@docsearch/css@3.6.0': {} - '@docsearch/react@3.6.0(@algolia/client-search@4.23.3)(@types/react@18.3.0)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(search-insights@2.13.0)': + '@docsearch/react@3.6.0(@algolia/client-search@4.23.3)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0)': dependencies: '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.13.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) '@docsearch/css': 3.6.0 algoliasearch: 4.23.3 optionalDependencies: - '@types/react': 18.3.0 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + '@types/react': 18.3.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) search-insights: 2.13.0 transitivePeerDependencies: - - '@algolia/client-search' + - '@algolia/client-search' + + '@docusaurus/core@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': + dependencies: + '@babel/core': 7.24.6 + '@babel/generator': 7.24.6 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.6) + '@babel/plugin-transform-runtime': 7.24.6(@babel/core@7.24.6) + '@babel/preset-env': 7.24.6(@babel/core@7.24.6) + '@babel/preset-react': 7.24.6(@babel/core@7.24.6) + '@babel/preset-typescript': 7.24.6(@babel/core@7.24.6) + '@babel/runtime': 7.24.6 + '@babel/runtime-corejs3': 7.24.6 + '@babel/traverse': 7.24.6 + '@docusaurus/cssnano-preset': 3.3.2 + '@docusaurus/logger': 3.3.2 + '@docusaurus/mdx-loader': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + autoprefixer: 10.4.19(postcss@8.4.38) + babel-loader: 9.1.3(@babel/core@7.24.6)(webpack@5.91.0) + babel-plugin-dynamic-import-node: 2.3.3 + boxen: 6.2.1 + chalk: 4.1.2 + chokidar: 3.6.0 + clean-css: 5.3.3 + cli-table3: 0.6.5 + combine-promises: 1.2.0 + commander: 5.1.0 + copy-webpack-plugin: 11.0.0(webpack@5.91.0) + core-js: 3.37.1 + css-loader: 6.11.0(webpack@5.91.0) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.91.0) + cssnano: 6.1.2(postcss@8.4.38) + del: 6.1.1 + detect-port: 1.6.1 + escape-html: 1.0.3 + eta: 2.2.0 + eval: 0.1.8 + file-loader: 6.2.0(webpack@5.91.0) + fs-extra: 11.2.0 + html-minifier-terser: 7.2.0 + html-tags: 3.3.1 + html-webpack-plugin: 5.6.0(webpack@5.91.0) + leven: 3.1.0 + lodash: 4.17.21 + mini-css-extract-plugin: 2.9.0(webpack@5.91.0) + p-map: 4.0.0 + postcss: 8.4.38 + postcss-loader: 7.3.4(postcss@8.4.38)(typescript@5.4.5)(webpack@5.91.0) + prompts: 2.4.2 + react: 18.3.1 + react-dev-utils: 12.0.1(typescript@5.4.5)(webpack@5.91.0) + react-dom: 18.3.1(react@18.3.1) + react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.91.0) + react-router: 5.3.4(react@18.3.1) + react-router-config: 5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1) + react-router-dom: 5.3.4(react@18.3.1) + rtl-detect: 1.1.2 + semver: 7.6.2 + serve-handler: 6.1.5 + shelljs: 0.8.5 + terser-webpack-plugin: 5.3.10(webpack@5.91.0) + tslib: 2.6.2 + update-notifier: 6.0.2 + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.91.0))(webpack@5.91.0) + webpack: 5.91.0 + webpack-bundle-analyzer: 4.10.2 + webpack-dev-server: 4.15.2(debug@4.3.4)(webpack@5.91.0) + webpack-merge: 5.10.0 + webpackbar: 5.0.2(webpack@5.91.0) + transitivePeerDependencies: + - '@docusaurus/types' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli - '@docusaurus/core@3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5)': - dependencies: - '@babel/core': 7.24.4 - '@babel/generator': 7.24.4 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.4) - '@babel/preset-env': 7.24.4(@babel/core@7.24.4) - '@babel/preset-react': 7.24.1(@babel/core@7.24.4) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.4) - '@babel/runtime': 7.24.4 - '@babel/runtime-corejs3': 7.24.4 - '@babel/traverse': 7.24.1 - '@docusaurus/cssnano-preset': 3.2.1 - '@docusaurus/logger': 3.2.1 - '@docusaurus/mdx-loader': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/react-loadable': 5.5.2(react@18.3.0) - '@docusaurus/utils': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-common': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-validation': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@svgr/webpack': 6.5.1 + '@docusaurus/core@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': + dependencies: + '@babel/core': 7.24.6 + '@babel/generator': 7.24.6 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.6) + '@babel/plugin-transform-runtime': 7.24.6(@babel/core@7.24.6) + '@babel/preset-env': 7.24.6(@babel/core@7.24.6) + '@babel/preset-react': 7.24.6(@babel/core@7.24.6) + '@babel/preset-typescript': 7.24.6(@babel/core@7.24.6) + '@babel/runtime': 7.24.6 + '@babel/runtime-corejs3': 7.24.6 + '@babel/traverse': 7.24.6 + '@docusaurus/cssnano-preset': 3.3.2 + '@docusaurus/logger': 3.3.2 + '@docusaurus/mdx-loader': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) autoprefixer: 10.4.19(postcss@8.4.38) - babel-loader: 9.1.3(@babel/core@7.24.4)(webpack@5.91.0) + babel-loader: 9.1.3(@babel/core@7.24.6)(webpack@5.91.0) babel-plugin-dynamic-import-node: 2.3.3 boxen: 6.2.1 chalk: 4.1.2 chokidar: 3.6.0 clean-css: 5.3.3 - cli-table3: 0.6.4 + cli-table3: 0.6.5 combine-promises: 1.2.0 commander: 5.1.0 copy-webpack-plugin: 11.0.0(webpack@5.91.0) - core-js: 3.37.0 + core-js: 3.37.1 css-loader: 6.11.0(webpack@5.91.0) - css-minimizer-webpack-plugin: 4.2.2(clean-css@5.3.3)(webpack@5.91.0) - cssnano: 5.1.15(postcss@8.4.38) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.91.0) + cssnano: 6.1.2(postcss@8.4.38) del: 6.1.1 - detect-port: 1.5.1 + detect-port: 1.6.1 escape-html: 1.0.3 eta: 2.2.0 eval: 0.1.8 @@ -6443,17 +7786,17 @@ snapshots: postcss: 8.4.38 postcss-loader: 7.3.4(postcss@8.4.38)(typescript@5.4.5)(webpack@5.91.0) prompts: 2.4.2 - react: 18.3.0 + react: 18.3.1 react-dev-utils: 12.0.1(typescript@5.4.5)(webpack@5.91.0) - react-dom: 18.3.0(react@18.3.0) - react-helmet-async: 1.3.0(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - react-loadable: '@docusaurus/react-loadable@5.5.2(react@18.3.0)' - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@5.5.2(react@18.3.0))(webpack@5.91.0) - react-router: 5.3.4(react@18.3.0) - react-router-config: 5.1.1(react-router@5.3.4(react@18.3.0))(react@18.3.0) - react-router-dom: 5.3.4(react@18.3.0) + react-dom: 18.3.1(react@18.3.1) + react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.91.0) + react-router: 5.3.4(react@18.3.1) + react-router-config: 5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1) + react-router-dom: 5.3.4(react@18.3.1) rtl-detect: 1.1.2 - semver: 7.6.0 + semver: 7.6.2 serve-handler: 6.1.5 shelljs: 0.8.5 terser-webpack-plugin: 5.3.10(webpack@5.91.0) @@ -6462,7 +7805,7 @@ snapshots: url-loader: 4.1.1(file-loader@6.2.0(webpack@5.91.0))(webpack@5.91.0) webpack: 5.91.0 webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 4.15.2(debug@4.3.4)(webpack@5.91.0) + webpack-dev-server: 4.15.2(webpack@5.91.0) webpack-merge: 5.10.0 webpackbar: 5.0.2(webpack@5.91.0) transitivePeerDependencies: @@ -6484,23 +7827,23 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/cssnano-preset@3.2.1': + '@docusaurus/cssnano-preset@3.3.2': dependencies: - cssnano-preset-advanced: 5.3.10(postcss@8.4.38) + cssnano-preset-advanced: 6.1.2(postcss@8.4.38) postcss: 8.4.38 - postcss-sort-media-queries: 4.4.1(postcss@8.4.38) + postcss-sort-media-queries: 5.2.0(postcss@8.4.38) tslib: 2.6.2 - '@docusaurus/logger@3.2.1': + '@docusaurus/logger@3.3.2': dependencies: chalk: 4.1.2 tslib: 2.6.2 - '@docusaurus/mdx-loader@3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)': + '@docusaurus/mdx-loader@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': dependencies: - '@docusaurus/logger': 3.2.1 - '@docusaurus/utils': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-validation': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) + '@docusaurus/logger': 3.3.2 + '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) '@mdx-js/mdx': 3.0.1 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 @@ -6510,8 +7853,8 @@ snapshots: image-size: 1.1.1 mdast-util-mdx: 3.0.0 mdast-util-to-string: 4.0.0 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) rehype-raw: 7.0.0 remark-directive: 3.0.0 remark-emoji: 4.0.1 @@ -6529,21 +7872,21 @@ snapshots: - '@swc/core' - esbuild - supports-color + - typescript - uglify-js - webpack-cli - '@docusaurus/module-type-aliases@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)': + '@docusaurus/module-type-aliases@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/react-loadable': 5.5.2(react@18.3.0) - '@docusaurus/types': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) + '@docusaurus/types': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 - '@types/react': 18.3.0 + '@types/react': 18.3.3 '@types/react-router-config': 5.0.11 '@types/react-router-dom': 5.3.3 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) - react-helmet-async: 2.0.4(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - react-loadable: '@docusaurus/react-loadable@5.5.2(react@18.3.0)' + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-helmet-async: 2.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' transitivePeerDependencies: - '@swc/core' - esbuild @@ -6551,21 +7894,21 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5)': + '@docusaurus/plugin-content-blog@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': dependencies: - '@docusaurus/core': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/logger': 3.2.1 - '@docusaurus/mdx-loader': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/types': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/utils': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-common': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-validation': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) + '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/logger': 3.3.2 + '@docusaurus/mdx-loader': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/types': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) cheerio: 1.0.0-rc.12 feed: 4.2.2 fs-extra: 11.2.0 lodash: 4.17.21 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) reading-time: 1.5.0 srcset: 4.0.0 tslib: 2.6.2 @@ -6590,23 +7933,61 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-docs@3.2.1(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5)': + '@docusaurus/plugin-content-docs@3.3.2(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': + dependencies: + '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/logger': 3.3.2 + '@docusaurus/mdx-loader': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/module-type-aliases': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@types/react-router-config': 5.0.11 + combine-promises: 1.2.0 + fs-extra: 11.2.0 + js-yaml: 4.1.0 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.6.2 + utility-types: 3.11.0 + webpack: 5.91.0 + transitivePeerDependencies: + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + + '@docusaurus/plugin-content-docs@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': dependencies: - '@docusaurus/core': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/logger': 3.2.1 - '@docusaurus/mdx-loader': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/module-type-aliases': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/types': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/utils': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-common': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-validation': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) + '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/logger': 3.3.2 + '@docusaurus/mdx-loader': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/module-type-aliases': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 11.2.0 js-yaml: 4.1.0 lodash: 4.17.21 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 utility-types: 3.11.0 webpack: 5.91.0 @@ -6628,16 +8009,16 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-pages@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5)': + '@docusaurus/plugin-content-pages@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': dependencies: - '@docusaurus/core': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/mdx-loader': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/types': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/utils': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-validation': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) + '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/mdx-loader': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/types': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) fs-extra: 11.2.0 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 webpack: 5.91.0 transitivePeerDependencies: @@ -6658,15 +8039,15 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-debug@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5)': + '@docusaurus/plugin-debug@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': dependencies: - '@docusaurus/core': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/types': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/utils': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) + '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/types': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) fs-extra: 11.2.0 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) - react-json-view-lite: 1.3.0(react@18.3.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-json-view-lite: 1.3.0(react@18.3.1) tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' @@ -6686,13 +8067,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-analytics@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5)': + '@docusaurus/plugin-google-analytics@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': dependencies: - '@docusaurus/core': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/types': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/utils-validation': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/types': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' @@ -6712,14 +8093,14 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-gtag@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5)': + '@docusaurus/plugin-google-gtag@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': dependencies: - '@docusaurus/core': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/types': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/utils-validation': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) + '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/types': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) '@types/gtag.js': 0.0.12 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' @@ -6739,13 +8120,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5)': + '@docusaurus/plugin-google-tag-manager@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': dependencies: - '@docusaurus/core': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/types': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/utils-validation': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/types': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' @@ -6765,17 +8146,17 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-sitemap@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5)': + '@docusaurus/plugin-sitemap@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': dependencies: - '@docusaurus/core': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/logger': 3.2.1 - '@docusaurus/types': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/utils': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-common': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-validation': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) + '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/logger': 3.3.2 + '@docusaurus/types': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) fs-extra: 11.2.0 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) sitemap: 7.1.1 tslib: 2.6.2 transitivePeerDependencies: @@ -6796,23 +8177,23 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/preset-classic@3.2.1(@algolia/client-search@4.23.3)(@types/react@18.3.0)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(search-insights@2.13.0)(typescript@5.4.5)': - dependencies: - '@docusaurus/core': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/plugin-content-blog': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/plugin-content-docs': 3.2.1(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/plugin-content-pages': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/plugin-debug': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/plugin-google-analytics': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/plugin-google-gtag': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/plugin-google-tag-manager': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/plugin-sitemap': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/theme-classic': 3.2.1(@types/react@18.3.0)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/theme-common': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/theme-search-algolia': 3.2.1(@algolia/client-search@4.23.3)(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(@types/react@18.3.0)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(search-insights@2.13.0)(typescript@5.4.5) - '@docusaurus/types': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + '@docusaurus/preset-classic@3.3.2(@algolia/client-search@4.23.3)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0)(typescript@5.4.5)': + dependencies: + '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-blog': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-docs': 3.3.2(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-pages': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-debug': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-google-analytics': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-google-gtag': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-google-tag-manager': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-sitemap': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-classic': 3.3.2(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-search-algolia': 3.3.2(@algolia/client-search@4.23.3)(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0)(typescript@5.4.5) + '@docusaurus/types': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: - '@algolia/client-search' - '@parcel/css' @@ -6834,38 +8215,37 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/react-loadable@5.5.2(react@18.3.0)': - dependencies: - '@types/react': 18.3.0 - prop-types: 15.8.1 - react: 18.3.0 - - '@docusaurus/theme-classic@3.2.1(@types/react@18.3.0)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5)': - dependencies: - '@docusaurus/core': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/mdx-loader': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/module-type-aliases': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/plugin-content-blog': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/plugin-content-docs': 3.2.1(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/plugin-content-pages': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/theme-common': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/theme-translations': 3.2.1 - '@docusaurus/types': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/utils': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-common': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-validation': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@mdx-js/react': 3.0.1(@types/react@18.3.0)(react@18.3.0) + '@docusaurus/react-loadable@6.0.0(react@18.3.1)': + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + + '@docusaurus/theme-classic@3.3.2(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': + dependencies: + '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/mdx-loader': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/module-type-aliases': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-blog': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-docs': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-pages': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-translations': 3.3.2 + '@docusaurus/types': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@mdx-js/react': 3.0.1(@types/react@18.3.3)(react@18.3.1) clsx: 2.1.1 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.43 lodash: 4.17.21 nprogress: 0.2.0 postcss: 8.4.38 - prism-react-renderer: 2.3.1(react@18.3.0) + prism-react-renderer: 2.3.1(react@18.3.1) prismjs: 1.29.0 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) - react-router-dom: 5.3.4(react@18.3.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router-dom: 5.3.4(react@18.3.1) rtlcss: 4.1.1 tslib: 2.6.2 utility-types: 3.11.0 @@ -6888,23 +8268,23 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-common@3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5)': + '@docusaurus/theme-common@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': dependencies: - '@docusaurus/mdx-loader': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/module-type-aliases': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - '@docusaurus/plugin-content-blog': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/plugin-content-docs': 3.2.1(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/plugin-content-pages': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/utils': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-common': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) + '@docusaurus/mdx-loader': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/module-type-aliases': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-blog': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-docs': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-pages': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@types/history': 4.7.11 - '@types/react': 18.3.0 + '@types/react': 18.3.3 '@types/react-router-config': 5.0.11 clsx: 2.1.1 parse-numeric-range: 1.3.0 - prism-react-renderer: 2.3.1(react@18.3.0) - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + prism-react-renderer: 2.3.1(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 utility-types: 3.11.0 transitivePeerDependencies: @@ -6926,24 +8306,24 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-search-algolia@3.2.1(@algolia/client-search@4.23.3)(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(@types/react@18.3.0)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(search-insights@2.13.0)(typescript@5.4.5)': + '@docusaurus/theme-search-algolia@3.3.2(@algolia/client-search@4.23.3)(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0)(typescript@5.4.5)': dependencies: - '@docsearch/react': 3.6.0(@algolia/client-search@4.23.3)(@types/react@18.3.0)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(search-insights@2.13.0) - '@docusaurus/core': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/logger': 3.2.1 - '@docusaurus/plugin-content-docs': 3.2.1(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/theme-common': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/theme-translations': 3.2.1 - '@docusaurus/utils': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-validation': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) + '@docsearch/react': 3.6.0(@algolia/client-search@4.23.3)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0) + '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/logger': 3.3.2 + '@docusaurus/plugin-content-docs': 3.3.2(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-translations': 3.3.2 + '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) algoliasearch: 4.23.3 algoliasearch-helper: 3.18.0(algoliasearch@4.23.3) clsx: 2.1.1 eta: 2.2.0 fs-extra: 11.2.0 lodash: 4.17.21 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 utility-types: 3.11.0 transitivePeerDependencies: @@ -6968,23 +8348,23 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-translations@3.2.1': + '@docusaurus/theme-translations@3.3.2': dependencies: fs-extra: 11.2.0 tslib: 2.6.2 '@docusaurus/tsconfig@3.2.1': {} - '@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)': + '@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@mdx-js/mdx': 3.0.1 '@types/history': 4.7.11 - '@types/react': 18.3.0 + '@types/react': 18.3.3 commander: 5.1.0 - joi: 17.13.0 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) - react-helmet-async: 1.3.0(react-dom@18.3.0(react@18.3.0))(react@18.3.0) + joi: 17.13.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) utility-types: 3.11.0 webpack: 5.91.0 webpack-merge: 5.10.0 @@ -6995,18 +8375,18 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-common@3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))': + '@docusaurus/utils-common@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: tslib: 2.6.2 optionalDependencies: - '@docusaurus/types': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) + '@docusaurus/types': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation@3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))': + '@docusaurus/utils-validation@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5)': dependencies: - '@docusaurus/logger': 3.2.1 - '@docusaurus/utils': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-common': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - joi: 17.13.0 + '@docusaurus/logger': 3.3.2 + '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + joi: 17.13.1 js-yaml: 4.1.0 tslib: 2.6.2 transitivePeerDependencies: @@ -7014,14 +8394,15 @@ snapshots: - '@swc/core' - esbuild - supports-color + - typescript - uglify-js - webpack-cli - '@docusaurus/utils@3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))': + '@docusaurus/utils@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5)': dependencies: - '@docusaurus/logger': 3.2.1 - '@docusaurus/utils-common': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@svgr/webpack': 6.5.1 + '@docusaurus/logger': 3.3.2 + '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@svgr/webpack': 8.1.0(typescript@5.4.5) escape-string-regexp: 4.0.0 file-loader: 6.2.0(webpack@5.91.0) fs-extra: 11.2.0 @@ -7031,7 +8412,7 @@ snapshots: jiti: 1.21.0 js-yaml: 4.1.0 lodash: 4.17.21 - micromatch: 4.0.5 + micromatch: 4.0.7 prompts: 2.4.2 resolve-pathname: 3.0.0 shelljs: 0.8.5 @@ -7039,11 +8420,12 @@ snapshots: url-loader: 4.1.1(file-loader@6.2.0(webpack@5.91.0))(webpack@5.91.0) webpack: 5.91.0 optionalDependencies: - '@docusaurus/types': 3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0) + '@docusaurus/types': 3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@swc/core' - esbuild - supports-color + - typescript - uglify-js - webpack-cli @@ -7052,14 +8434,14 @@ snapshots: cssesc: 3.0.0 immediate: 3.3.0 - '@easyops-cn/docusaurus-search-local@0.40.1(@docusaurus/theme-common@3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5))(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5)': + '@easyops-cn/docusaurus-search-local@0.40.1(@docusaurus/theme-common@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': dependencies: - '@docusaurus/plugin-content-docs': 3.2.1(debug@4.3.4)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/theme-common': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/theme-translations': 3.2.1 - '@docusaurus/utils': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-common': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - '@docusaurus/utils-validation': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) + '@docusaurus/plugin-content-docs': 3.3.2(debug@4.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-translations': 3.3.2 + '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) '@easyops-cn/autocomplete.js': 0.38.1 '@node-rs/jieba': 1.10.3 cheerio: 1.0.0-rc.12 @@ -7070,8 +8452,8 @@ snapshots: lunr: 2.3.9 lunr-languages: 1.14.0 mark.js: 8.11.1 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 transitivePeerDependencies: - '@docusaurus/types' @@ -7195,7 +8577,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.7 + '@types/node': 20.12.12 '@types/yargs': 17.0.32 chalk: 4.1.2 @@ -7251,11 +8633,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/react@3.0.1(@types/react@18.3.0)(react@18.3.0)': + '@mdx-js/react@3.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 18.3.0 - react: 18.3.0 + '@types/react': 18.3.3 + react: 18.3.1 '@napi-rs/wasm-runtime@0.2.3': dependencies: @@ -7392,10 +8774,6 @@ snapshots: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 - '@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -7408,58 +8786,26 @@ snapshots: dependencies: '@babel/core': 7.24.4 - '@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@svgr/babel-preset@6.5.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.24.4) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.24.4) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.24.4) - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.24.4) - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.24.4) - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.24.4) - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.24.4) - '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.24.4) - '@svgr/babel-preset@8.1.0(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -7472,16 +8818,6 @@ snapshots: '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.24.4) '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.24.4) - '@svgr/core@6.5.1': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-preset': 6.5.1(@babel/core@7.24.4) - '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) - camelcase: 6.3.0 - cosmiconfig: 7.1.0 - transitivePeerDependencies: - - supports-color - '@svgr/core@8.1.0(typescript@5.4.5)': dependencies: '@babel/core': 7.24.4 @@ -7493,26 +8829,11 @@ snapshots: - supports-color - typescript - '@svgr/hast-util-to-babel-ast@6.5.1': - dependencies: - '@babel/types': 7.24.0 - entities: 4.5.0 - '@svgr/hast-util-to-babel-ast@8.0.0': dependencies: '@babel/types': 7.24.0 entities: 4.5.0 - '@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1)': - dependencies: - '@babel/core': 7.24.4 - '@svgr/babel-preset': 6.5.1(@babel/core@7.24.4) - '@svgr/core': 6.5.1 - '@svgr/hast-util-to-babel-ast': 6.5.1 - svg-parser: 2.0.4 - transitivePeerDependencies: - - supports-color - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.4.5))': dependencies: '@babel/core': 7.24.4 @@ -7523,13 +8844,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@svgr/plugin-svgo@6.5.1(@svgr/core@6.5.1)': - dependencies: - '@svgr/core': 6.5.1 - cosmiconfig: 7.1.0 - deepmerge: 4.3.1 - svgo: 2.8.0 - '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.4.5))(typescript@5.4.5)': dependencies: '@svgr/core': 8.1.0(typescript@5.4.5) @@ -7539,19 +8853,6 @@ snapshots: transitivePeerDependencies: - typescript - '@svgr/webpack@6.5.1': - dependencies: - '@babel/core': 7.24.4 - '@babel/plugin-transform-react-constant-elements': 7.24.1(@babel/core@7.24.4) - '@babel/preset-env': 7.24.4(@babel/core@7.24.4) - '@babel/preset-react': 7.24.1(@babel/core@7.24.4) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.4) - '@svgr/core': 6.5.1 - '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) - '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) - transitivePeerDependencies: - - supports-color - '@svgr/webpack@8.1.0(typescript@5.4.5)': dependencies: '@babel/core': 7.24.4 @@ -7586,20 +8887,20 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.12.7 + '@types/node': 20.12.12 '@types/bonjour@3.5.13': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.12 '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.19.0 - '@types/node': 20.12.7 + '@types/node': 20.12.12 '@types/connect@3.4.38': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.12 '@types/debug@4.1.12': dependencies: @@ -7627,7 +8928,7 @@ snapshots: '@types/express-serve-static-core@4.19.0': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.12 '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -7655,7 +8956,7 @@ snapshots: '@types/http-proxy@1.17.14': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.12 '@types/istanbul-lib-coverage@2.0.6': {} @@ -7669,10 +8970,6 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/marked@6.0.0': - dependencies: - marked: 12.0.2 - '@types/mdast@4.0.3': dependencies: '@types/unist': 3.0.2 @@ -7685,11 +8982,15 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.12 '@types/node@17.0.45': {} - '@types/node@20.12.7': + '@types/node@20.12.12': + dependencies: + undici-types: 5.26.5 + + '@types/node@20.12.13': dependencies: undici-types: 5.26.5 @@ -7705,26 +9006,26 @@ snapshots: '@types/react-helmet@6.1.11': dependencies: - '@types/react': 18.3.0 + '@types/react': 18.3.3 '@types/react-router-config@5.0.11': dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.0 + '@types/react': 18.3.3 '@types/react-router': 5.1.20 '@types/react-router-dom@5.3.3': dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.0 + '@types/react': 18.3.3 '@types/react-router': 5.1.20 '@types/react-router@5.1.20': dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.0 + '@types/react': 18.3.3 - '@types/react@18.3.0': + '@types/react@18.3.3': dependencies: '@types/prop-types': 15.7.12 csstype: 3.1.3 @@ -7733,12 +9034,12 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.12 '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.12.7 + '@types/node': 20.12.12 '@types/serve-index@1.9.4': dependencies: @@ -7747,12 +9048,12 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.12.7 + '@types/node': 20.12.12 '@types/send': 0.17.4 '@types/sockjs@0.3.36': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.12 '@types/stylis@4.2.0': {} @@ -7764,7 +9065,7 @@ snapshots: '@types/ws@8.5.10': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.12 '@types/yargs-parser@21.0.3': {} @@ -7875,7 +9176,7 @@ snapshots: agent-base@7.1.1: dependencies: - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -7987,17 +9288,17 @@ snapshots: postcss: 8.4.38 postcss-value-parser: 4.2.0 - axios@1.6.8: + axios@1.7.2: dependencies: - follow-redirects: 1.15.6(debug@4.3.4) + follow-redirects: 1.15.6 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0): + babel-loader@9.1.3(@babel/core@7.24.6)(webpack@5.91.0): dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.24.6 find-cache-dir: 4.0.0 schema-utils: 4.2.0 webpack: 5.91.0 @@ -8015,6 +9316,15 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.6): + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.6 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.6) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.4): dependencies: '@babel/core': 7.24.4 @@ -8023,6 +9333,14 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.6): + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.6) + core-js-compat: 3.37.0 + transitivePeerDependencies: + - supports-color + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.4): dependencies: '@babel/core': 7.24.4 @@ -8030,6 +9348,13 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.6): + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.6) + transitivePeerDependencies: + - supports-color + bail@2.0.2: {} balanced-match@1.0.2: {} @@ -8099,6 +9424,10 @@ snapshots: dependencies: fill-range: 7.0.1 + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + browserslist@4.23.0: dependencies: caniuse-lite: 1.0.30001612 @@ -8226,7 +9555,7 @@ snapshots: cli-boxes@3.0.0: {} - cli-table3@0.6.4: + cli-table3@0.6.5: dependencies: string-width: 4.2.3 optionalDependencies: @@ -8365,9 +9694,13 @@ snapshots: dependencies: browserslist: 4.23.0 - core-js-pure@3.37.0: {} + core-js-compat@3.37.1: + dependencies: + browserslist: 4.23.0 + + core-js-pure@3.37.1: {} - core-js@3.37.0: {} + core-js@3.37.1: {} core-util-is@1.0.3: {} @@ -8379,14 +9712,6 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - cosmiconfig@7.1.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - cosmiconfig@8.3.6(typescript@5.4.5): dependencies: import-fresh: 3.3.0 @@ -8408,7 +9733,7 @@ snapshots: css-color-keywords@1.0.0: {} - css-declaration-sorter@6.4.1(postcss@8.4.38): + css-declaration-sorter@7.2.0(postcss@8.4.38): dependencies: postcss: 8.4.38 @@ -8425,14 +9750,14 @@ snapshots: optionalDependencies: webpack: 5.91.0 - css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.3)(webpack@5.91.0): + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.91.0): dependencies: - cssnano: 5.1.15(postcss@8.4.38) + '@jridgewell/trace-mapping': 0.3.25 + cssnano: 6.1.2(postcss@8.4.38) jest-worker: 29.7.0 postcss: 8.4.38 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - source-map: 0.6.1 webpack: 5.91.0 optionalDependencies: clean-css: 5.3.3 @@ -8459,11 +9784,6 @@ snapshots: css-color-keywords: 1.0.0 postcss-value-parser: 4.2.0 - css-tree@1.1.3: - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - css-tree@2.2.1: dependencies: mdn-data: 2.0.28 @@ -8478,63 +9798,60 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-advanced@5.3.10(postcss@8.4.38): + cssnano-preset-advanced@6.1.2(postcss@8.4.38): dependencies: autoprefixer: 10.4.19(postcss@8.4.38) - cssnano-preset-default: 5.2.14(postcss@8.4.38) + browserslist: 4.23.0 + cssnano-preset-default: 6.1.2(postcss@8.4.38) postcss: 8.4.38 - postcss-discard-unused: 5.1.0(postcss@8.4.38) - postcss-merge-idents: 5.1.1(postcss@8.4.38) - postcss-reduce-idents: 5.2.0(postcss@8.4.38) - postcss-zindex: 5.1.0(postcss@8.4.38) + postcss-discard-unused: 6.0.5(postcss@8.4.38) + postcss-merge-idents: 6.0.3(postcss@8.4.38) + postcss-reduce-idents: 6.0.3(postcss@8.4.38) + postcss-zindex: 6.0.2(postcss@8.4.38) - cssnano-preset-default@5.2.14(postcss@8.4.38): + cssnano-preset-default@6.1.2(postcss@8.4.38): dependencies: - css-declaration-sorter: 6.4.1(postcss@8.4.38) - cssnano-utils: 3.1.0(postcss@8.4.38) + browserslist: 4.23.0 + css-declaration-sorter: 7.2.0(postcss@8.4.38) + cssnano-utils: 4.0.2(postcss@8.4.38) postcss: 8.4.38 - postcss-calc: 8.2.4(postcss@8.4.38) - postcss-colormin: 5.3.1(postcss@8.4.38) - postcss-convert-values: 5.1.3(postcss@8.4.38) - postcss-discard-comments: 5.1.2(postcss@8.4.38) - postcss-discard-duplicates: 5.1.0(postcss@8.4.38) - postcss-discard-empty: 5.1.1(postcss@8.4.38) - postcss-discard-overridden: 5.1.0(postcss@8.4.38) - postcss-merge-longhand: 5.1.7(postcss@8.4.38) - postcss-merge-rules: 5.1.4(postcss@8.4.38) - postcss-minify-font-values: 5.1.0(postcss@8.4.38) - postcss-minify-gradients: 5.1.1(postcss@8.4.38) - postcss-minify-params: 5.1.4(postcss@8.4.38) - postcss-minify-selectors: 5.2.1(postcss@8.4.38) - postcss-normalize-charset: 5.1.0(postcss@8.4.38) - postcss-normalize-display-values: 5.1.0(postcss@8.4.38) - postcss-normalize-positions: 5.1.1(postcss@8.4.38) - postcss-normalize-repeat-style: 5.1.1(postcss@8.4.38) - postcss-normalize-string: 5.1.0(postcss@8.4.38) - postcss-normalize-timing-functions: 5.1.0(postcss@8.4.38) - postcss-normalize-unicode: 5.1.1(postcss@8.4.38) - postcss-normalize-url: 5.1.0(postcss@8.4.38) - postcss-normalize-whitespace: 5.1.1(postcss@8.4.38) - postcss-ordered-values: 5.1.3(postcss@8.4.38) - postcss-reduce-initial: 5.1.2(postcss@8.4.38) - postcss-reduce-transforms: 5.1.0(postcss@8.4.38) - postcss-svgo: 5.1.0(postcss@8.4.38) - postcss-unique-selectors: 5.1.1(postcss@8.4.38) - - cssnano-utils@3.1.0(postcss@8.4.38): + postcss-calc: 9.0.1(postcss@8.4.38) + postcss-colormin: 6.1.0(postcss@8.4.38) + postcss-convert-values: 6.1.0(postcss@8.4.38) + postcss-discard-comments: 6.0.2(postcss@8.4.38) + postcss-discard-duplicates: 6.0.3(postcss@8.4.38) + postcss-discard-empty: 6.0.3(postcss@8.4.38) + postcss-discard-overridden: 6.0.2(postcss@8.4.38) + postcss-merge-longhand: 6.0.5(postcss@8.4.38) + postcss-merge-rules: 6.1.1(postcss@8.4.38) + postcss-minify-font-values: 6.1.0(postcss@8.4.38) + postcss-minify-gradients: 6.0.3(postcss@8.4.38) + postcss-minify-params: 6.1.0(postcss@8.4.38) + postcss-minify-selectors: 6.0.4(postcss@8.4.38) + postcss-normalize-charset: 6.0.2(postcss@8.4.38) + postcss-normalize-display-values: 6.0.2(postcss@8.4.38) + postcss-normalize-positions: 6.0.2(postcss@8.4.38) + postcss-normalize-repeat-style: 6.0.2(postcss@8.4.38) + postcss-normalize-string: 6.0.2(postcss@8.4.38) + postcss-normalize-timing-functions: 6.0.2(postcss@8.4.38) + postcss-normalize-unicode: 6.1.0(postcss@8.4.38) + postcss-normalize-url: 6.0.2(postcss@8.4.38) + postcss-normalize-whitespace: 6.0.2(postcss@8.4.38) + postcss-ordered-values: 6.0.2(postcss@8.4.38) + postcss-reduce-initial: 6.1.0(postcss@8.4.38) + postcss-reduce-transforms: 6.0.2(postcss@8.4.38) + postcss-svgo: 6.0.3(postcss@8.4.38) + postcss-unique-selectors: 6.0.4(postcss@8.4.38) + + cssnano-utils@4.0.2(postcss@8.4.38): dependencies: postcss: 8.4.38 - cssnano@5.1.15(postcss@8.4.38): + cssnano@6.1.2(postcss@8.4.38): dependencies: - cssnano-preset-default: 5.2.14(postcss@8.4.38) - lilconfig: 2.1.0 + cssnano-preset-default: 6.1.2(postcss@8.4.38) + lilconfig: 3.1.1 postcss: 8.4.38 - yaml: 1.10.2 - - csso@4.2.0: - dependencies: - css-tree: 1.1.3 csso@5.0.5: dependencies: @@ -8555,7 +9872,7 @@ snapshots: date-fns@2.30.0: dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.24.6 debounce@1.2.1: {} @@ -8567,6 +9884,10 @@ snapshots: dependencies: ms: 2.1.2 + debug@4.3.5: + dependencies: + ms: 2.1.2 + decimal.js@10.4.3: {} decko@1.2.0: {} @@ -8633,10 +9954,10 @@ snapshots: transitivePeerDependencies: - supports-color - detect-port@1.5.1: + detect-port@1.6.1: dependencies: address: 1.2.2 - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -8652,11 +9973,11 @@ snapshots: dependencies: '@leichtgewicht/ip-codec': 2.0.5 - docusaurus-plugin-redoc@2.0.2(@docusaurus/utils@3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)))(core-js@3.37.0)(mobx@6.12.3)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(styled-components@6.1.8(react-dom@18.3.0(react@18.3.0))(react@18.3.0)): + docusaurus-plugin-redoc@2.0.2(@docusaurus/utils@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5))(core-js@3.37.1)(mobx@6.12.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): dependencies: - '@docusaurus/utils': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) + '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) '@redocly/openapi-core': 1.10.3 - redoc: 2.1.3(core-js@3.37.0)(mobx@6.12.3)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(styled-components@6.1.8(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) + redoc: 2.1.3(core-js@3.37.1)(mobx@6.12.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) transitivePeerDependencies: - core-js - encoding @@ -8666,15 +9987,15 @@ snapshots: - react-native - styled-components - docusaurus-theme-redoc@2.0.2(@docusaurus/theme-common@3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5))(core-js@3.37.0)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(webpack@5.91.0): + docusaurus-theme-redoc@2.0.2(@docusaurus/theme-common@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(core-js@3.37.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.91.0): dependencies: - '@docusaurus/theme-common': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) + '@docusaurus/theme-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) '@redocly/openapi-core': 1.10.3 clsx: 1.2.1 lodash: 4.17.21 mobx: 6.12.3 - redoc: 2.1.3(core-js@3.37.0)(mobx@6.12.3)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(styled-components@6.1.8(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - styled-components: 6.1.8(react-dom@18.3.0(react@18.3.0))(react@18.3.0) + redoc: 2.1.3(core-js@3.37.1)(mobx@6.12.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + styled-components: 6.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) webpack: 5.91.0 transitivePeerDependencies: - core-js @@ -8711,7 +10032,7 @@ snapshots: dompurify@2.5.1: {} - dompurify@3.1.1: {} + dompurify@3.1.5: {} domutils@2.8.0: dependencies: @@ -8879,7 +10200,7 @@ snapshots: eval@0.1.8: dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.12 require-like: 0.1.2 eventemitter3@4.0.7: {} @@ -8986,6 +10307,10 @@ snapshots: dependencies: to-regex-range: 5.0.1 + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + finalhandler@1.2.0: dependencies: debug: 2.6.9 @@ -9019,6 +10344,8 @@ snapshots: flat@5.0.2: {} + follow-redirects@1.15.6: {} + follow-redirects@1.15.6(debug@4.3.4): optionalDependencies: debug: 4.3.4 @@ -9414,10 +10741,22 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color + http-proxy-middleware@2.0.6(@types/express@4.17.21): + dependencies: + '@types/http-proxy': 1.17.14 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.5 + optionalDependencies: + '@types/express': 4.17.21 + transitivePeerDependencies: + - debug + http-proxy-middleware@2.0.6(@types/express@4.17.21)(debug@4.3.4): dependencies: '@types/http-proxy': 1.17.14 @@ -9430,6 +10769,14 @@ snapshots: transitivePeerDependencies: - debug + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.6 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + http-proxy@1.18.1(debug@4.3.4): dependencies: eventemitter3: 4.0.7 @@ -9448,7 +10795,7 @@ snapshots: https-proxy-agent@7.0.4: dependencies: agent-base: 7.1.1 - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -9606,11 +10953,11 @@ snapshots: isobject@3.0.1: {} - isomorphic-dompurify@2.7.0: + isomorphic-dompurify@2.11.0: dependencies: '@types/dompurify': 3.0.5 - dompurify: 3.1.1 - jsdom: 24.0.0 + dompurify: 3.1.5 + jsdom: 24.1.0 transitivePeerDependencies: - bufferutil - canvas @@ -9620,7 +10967,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.7 + '@types/node': 20.12.12 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -9628,20 +10975,20 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.12 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.12 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 jiti@1.21.0: {} - joi@17.13.0: + joi@17.13.1: dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -9662,7 +11009,7 @@ snapshots: dependencies: argparse: 2.0.1 - jsdom@24.0.0: + jsdom@24.1.0: dependencies: cssstyle: 4.0.1 data-urls: 5.0.0 @@ -9672,18 +11019,18 @@ snapshots: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.4 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.9 + nwsapi: 2.2.10 parse5: 7.1.2 - rrweb-cssom: 0.6.0 + rrweb-cssom: 0.7.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 4.1.3 + tough-cookie: 4.1.4 w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - ws: 8.16.0 + ws: 8.17.0 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -9737,7 +11084,7 @@ snapshots: leven@3.1.0: {} - lilconfig@2.1.0: {} + lilconfig@3.1.1: {} lines-and-columns@1.2.4: {} @@ -9995,8 +11342,6 @@ snapshots: dependencies: '@types/mdast': 4.0.3 - mdn-data@2.0.14: {} - mdn-data@2.0.28: {} mdn-data@2.0.30: {} @@ -10315,6 +11660,11 @@ snapshots: braces: 3.0.2 picomatch: 2.3.1 + micromatch@4.0.7: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + mime-db@1.33.0: {} mime-db@1.52.0: {} @@ -10353,20 +11703,20 @@ snapshots: minimist@1.2.8: {} - mobx-react-lite@3.4.3(mobx@6.12.3)(react-dom@18.3.0(react@18.3.0))(react@18.3.0): + mobx-react-lite@3.4.3(mobx@6.12.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: mobx: 6.12.3 - react: 18.3.0 + react: 18.3.1 optionalDependencies: - react-dom: 18.3.0(react@18.3.0) + react-dom: 18.3.1(react@18.3.1) - mobx-react@7.6.0(mobx@6.12.3)(react-dom@18.3.0(react@18.3.0))(react@18.3.0): + mobx-react@7.6.0(mobx@6.12.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: mobx: 6.12.3 - mobx-react-lite: 3.4.3(mobx@6.12.3)(react-dom@18.3.0(react@18.3.0))(react@18.3.0) - react: 18.3.0 + mobx-react-lite: 3.4.3(mobx@6.12.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 optionalDependencies: - react-dom: 18.3.0(react@18.3.0) + react-dom: 18.3.1(react@18.3.1) mobx@6.12.3: {} @@ -10421,8 +11771,6 @@ snapshots: normalize-range@0.1.2: {} - normalize-url@6.1.0: {} - normalize-url@8.0.1: {} npm-run-path@4.0.1: @@ -10435,7 +11783,7 @@ snapshots: dependencies: boolbase: 1.0.0 - nwsapi@2.2.9: {} + nwsapi@2.2.10: {} oas-kit-common@1.0.8: dependencies: @@ -10635,6 +11983,8 @@ snapshots: picocolors@1.0.0: {} + picocolors@1.0.1: {} + picomatch@2.3.1: {} pkg-dir@7.0.0: @@ -10651,13 +12001,13 @@ snapshots: dependencies: '@babel/runtime': 7.24.4 - postcss-calc@8.2.4(postcss@8.4.38): + postcss-calc@9.0.1(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-selector-parser: 6.0.16 postcss-value-parser: 4.2.0 - postcss-colormin@5.3.1(postcss@8.4.38): + postcss-colormin@6.1.0(postcss@8.4.38): dependencies: browserslist: 4.23.0 caniuse-api: 3.0.0 @@ -10665,29 +12015,29 @@ snapshots: postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-convert-values@5.1.3(postcss@8.4.38): + postcss-convert-values@6.1.0(postcss@8.4.38): dependencies: browserslist: 4.23.0 postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-discard-comments@5.1.2(postcss@8.4.38): + postcss-discard-comments@6.0.2(postcss@8.4.38): dependencies: postcss: 8.4.38 - postcss-discard-duplicates@5.1.0(postcss@8.4.38): + postcss-discard-duplicates@6.0.3(postcss@8.4.38): dependencies: postcss: 8.4.38 - postcss-discard-empty@5.1.1(postcss@8.4.38): + postcss-discard-empty@6.0.3(postcss@8.4.38): dependencies: postcss: 8.4.38 - postcss-discard-overridden@5.1.0(postcss@8.4.38): + postcss-discard-overridden@6.0.2(postcss@8.4.38): dependencies: postcss: 8.4.38 - postcss-discard-unused@5.1.0(postcss@8.4.38): + postcss-discard-unused@6.0.5(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-selector-parser: 6.0.16 @@ -10702,46 +12052,46 @@ snapshots: transitivePeerDependencies: - typescript - postcss-merge-idents@5.1.1(postcss@8.4.38): + postcss-merge-idents@6.0.3(postcss@8.4.38): dependencies: - cssnano-utils: 3.1.0(postcss@8.4.38) + cssnano-utils: 4.0.2(postcss@8.4.38) postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-merge-longhand@5.1.7(postcss@8.4.38): + postcss-merge-longhand@6.0.5(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.4.38) + stylehacks: 6.1.1(postcss@8.4.38) - postcss-merge-rules@5.1.4(postcss@8.4.38): + postcss-merge-rules@6.1.1(postcss@8.4.38): dependencies: browserslist: 4.23.0 caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.4.38) + cssnano-utils: 4.0.2(postcss@8.4.38) postcss: 8.4.38 postcss-selector-parser: 6.0.16 - postcss-minify-font-values@5.1.0(postcss@8.4.38): + postcss-minify-font-values@6.1.0(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-minify-gradients@5.1.1(postcss@8.4.38): + postcss-minify-gradients@6.0.3(postcss@8.4.38): dependencies: colord: 2.9.3 - cssnano-utils: 3.1.0(postcss@8.4.38) + cssnano-utils: 4.0.2(postcss@8.4.38) postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-minify-params@5.1.4(postcss@8.4.38): + postcss-minify-params@6.1.0(postcss@8.4.38): dependencies: browserslist: 4.23.0 - cssnano-utils: 3.1.0(postcss@8.4.38) + cssnano-utils: 4.0.2(postcss@8.4.38) postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-minify-selectors@5.2.1(postcss@8.4.38): + postcss-minify-selectors@6.0.4(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-selector-parser: 6.0.16 @@ -10767,70 +12117,69 @@ snapshots: icss-utils: 5.1.0(postcss@8.4.38) postcss: 8.4.38 - postcss-normalize-charset@5.1.0(postcss@8.4.38): + postcss-normalize-charset@6.0.2(postcss@8.4.38): dependencies: postcss: 8.4.38 - postcss-normalize-display-values@5.1.0(postcss@8.4.38): + postcss-normalize-display-values@6.0.2(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-normalize-positions@5.1.1(postcss@8.4.38): + postcss-normalize-positions@6.0.2(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@5.1.1(postcss@8.4.38): + postcss-normalize-repeat-style@6.0.2(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-normalize-string@5.1.0(postcss@8.4.38): + postcss-normalize-string@6.0.2(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@5.1.0(postcss@8.4.38): + postcss-normalize-timing-functions@6.0.2(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@5.1.1(postcss@8.4.38): + postcss-normalize-unicode@6.1.0(postcss@8.4.38): dependencies: browserslist: 4.23.0 postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-normalize-url@5.1.0(postcss@8.4.38): + postcss-normalize-url@6.0.2(postcss@8.4.38): dependencies: - normalize-url: 6.1.0 postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@5.1.1(postcss@8.4.38): + postcss-normalize-whitespace@6.0.2(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-ordered-values@5.1.3(postcss@8.4.38): + postcss-ordered-values@6.0.2(postcss@8.4.38): dependencies: - cssnano-utils: 3.1.0(postcss@8.4.38) + cssnano-utils: 4.0.2(postcss@8.4.38) postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-reduce-idents@5.2.0(postcss@8.4.38): + postcss-reduce-idents@6.0.3(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-reduce-initial@5.1.2(postcss@8.4.38): + postcss-reduce-initial@6.1.0(postcss@8.4.38): dependencies: browserslist: 4.23.0 caniuse-api: 3.0.0 postcss: 8.4.38 - postcss-reduce-transforms@5.1.0(postcss@8.4.38): + postcss-reduce-transforms@6.0.2(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-value-parser: 4.2.0 @@ -10840,25 +12189,25 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-sort-media-queries@4.4.1(postcss@8.4.38): + postcss-sort-media-queries@5.2.0(postcss@8.4.38): dependencies: postcss: 8.4.38 - sort-css-media-queries: 2.1.0 + sort-css-media-queries: 2.2.0 - postcss-svgo@5.1.0(postcss@8.4.38): + postcss-svgo@6.0.3(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-value-parser: 4.2.0 - svgo: 2.8.0 + svgo: 3.2.0 - postcss-unique-selectors@5.1.1(postcss@8.4.38): + postcss-unique-selectors@6.0.4(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-selector-parser: 6.0.16 postcss-value-parser@4.2.0: {} - postcss-zindex@5.1.0(postcss@8.4.38): + postcss-zindex@6.0.2(postcss@8.4.38): dependencies: postcss: 8.4.38 @@ -10871,7 +12220,7 @@ snapshots: postcss@8.4.38: dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.0.1 source-map-js: 1.2.0 pretty-error@4.0.0: @@ -10881,11 +12230,11 @@ snapshots: pretty-time@1.1.0: {} - prism-react-renderer@2.3.1(react@18.3.0): + prism-react-renderer@2.3.1(react@18.3.1): dependencies: '@types/prismjs': 1.26.3 clsx: 2.1.1 - react: 18.3.0 + react: 18.3.1 prismjs@1.29.0: {} @@ -10993,64 +12342,64 @@ snapshots: - supports-color - vue-template-compiler - react-dom@18.3.0(react@18.3.0): + react-dom@18.3.1(react@18.3.1): dependencies: loose-envify: 1.4.0 - react: 18.3.0 - scheduler: 0.23.1 + react: 18.3.1 + scheduler: 0.23.2 react-error-overlay@6.0.11: {} react-fast-compare@3.2.2: {} - react-helmet-async@1.3.0(react-dom@18.3.0(react@18.3.0))(react@18.3.0): + react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.24.4 invariant: 2.2.4 prop-types: 15.8.1 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) react-fast-compare: 3.2.2 shallowequal: 1.1.0 - react-helmet-async@2.0.4(react-dom@18.3.0(react@18.3.0))(react@18.3.0): + react-helmet-async@2.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: invariant: 2.2.4 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) react-fast-compare: 3.2.2 shallowequal: 1.1.0 react-is@16.13.1: {} - react-json-view-lite@1.3.0(react@18.3.0): + react-json-view-lite@1.3.0(react@18.3.1): dependencies: - react: 18.3.0 + react: 18.3.1 - react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@5.5.2(react@18.3.0))(webpack@5.91.0): + react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.91.0): dependencies: '@babel/runtime': 7.24.4 - react-loadable: '@docusaurus/react-loadable@5.5.2(react@18.3.0)' + react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' webpack: 5.91.0 - react-router-config@5.1.1(react-router@5.3.4(react@18.3.0))(react@18.3.0): + react-router-config@5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.24.4 - react: 18.3.0 - react-router: 5.3.4(react@18.3.0) + react: 18.3.1 + react-router: 5.3.4(react@18.3.1) - react-router-dom@5.3.4(react@18.3.0): + react-router-dom@5.3.4(react@18.3.1): dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.24.6 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 18.3.0 - react-router: 5.3.4(react@18.3.0) + react: 18.3.1 + react-router: 5.3.4(react@18.3.1) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - react-router@5.3.4(react@18.3.0): + react-router@5.3.4(react@18.3.1): dependencies: '@babel/runtime': 7.24.4 history: 4.10.1 @@ -11058,18 +12407,18 @@ snapshots: loose-envify: 1.4.0 path-to-regexp: 1.8.0 prop-types: 15.8.1 - react: 18.3.0 + react: 18.3.1 react-is: 16.13.1 tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - react-tabs@4.3.0(react@18.3.0): + react-tabs@4.3.0(react@18.3.1): dependencies: clsx: 1.2.1 prop-types: 15.8.1 - react: 18.3.0 + react: 18.3.1 - react@18.3.0: + react@18.3.1: dependencies: loose-envify: 1.4.0 @@ -11103,11 +12452,11 @@ snapshots: dependencies: minimatch: 3.1.2 - redoc@2.1.3(core-js@3.37.0)(mobx@6.12.3)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(styled-components@6.1.8(react-dom@18.3.0(react@18.3.0))(react@18.3.0)): + redoc@2.1.3(core-js@3.37.1)(mobx@6.12.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): dependencies: '@redocly/openapi-core': 1.10.3 classnames: 2.5.1 - core-js: 3.37.0 + core-js: 3.37.1 decko: 1.2.0 dompurify: 2.5.1 eventemitter3: 4.0.7 @@ -11116,31 +12465,31 @@ snapshots: mark.js: 8.11.1 marked: 4.3.0 mobx: 6.12.3 - mobx-react: 7.6.0(mobx@6.12.3)(react-dom@18.3.0(react@18.3.0))(react@18.3.0) + mobx-react: 7.6.0(mobx@6.12.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) openapi-sampler: 1.5.0 path-browserify: 1.0.1 perfect-scrollbar: 1.5.5 polished: 4.3.1 prismjs: 1.29.0 prop-types: 15.8.1 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) - react-tabs: 4.3.0(react@18.3.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-tabs: 4.3.0(react@18.3.1) slugify: 1.4.7 stickyfill: 1.1.1 - styled-components: 6.1.8(react-dom@18.3.0(react@18.3.0))(react@18.3.0) + styled-components: 6.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) swagger2openapi: 7.0.8 url-template: 2.0.8 transitivePeerDependencies: - encoding - react-native - redocusaurus@2.0.2(@docusaurus/theme-common@3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5))(@docusaurus/utils@3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)))(core-js@3.37.0)(mobx@6.12.3)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(styled-components@6.1.8(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(webpack@5.91.0): + redocusaurus@2.0.2(@docusaurus/theme-common@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(@docusaurus/utils@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5))(core-js@3.37.1)(mobx@6.12.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(webpack@5.91.0): dependencies: - '@docusaurus/theme-common': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5) - '@docusaurus/utils': 3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - docusaurus-plugin-redoc: 2.0.2(@docusaurus/utils@3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0)))(core-js@3.37.0)(mobx@6.12.3)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(styled-components@6.1.8(react-dom@18.3.0(react@18.3.0))(react@18.3.0)) - docusaurus-theme-redoc: 2.0.2(@docusaurus/theme-common@3.2.1(@docusaurus/types@3.2.1(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(typescript@5.4.5))(core-js@3.37.0)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(webpack@5.91.0) + '@docusaurus/theme-common': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + docusaurus-plugin-redoc: 2.0.2(@docusaurus/utils@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5))(core-js@3.37.1)(mobx@6.12.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + docusaurus-theme-redoc: 2.0.2(@docusaurus/theme-common@3.3.2(@docusaurus/types@3.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(core-js@3.37.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.91.0) transitivePeerDependencies: - core-js - encoding @@ -11305,6 +12654,8 @@ snapshots: rrweb-cssom@0.6.0: {} + rrweb-cssom@0.7.0: {} + rtl-detect@1.1.2: {} rtlcss@4.1.1: @@ -11334,7 +12685,7 @@ snapshots: dependencies: xmlchars: 2.2.0 - scheduler@0.23.1: + scheduler@0.23.2: dependencies: loose-envify: 1.4.0 @@ -11381,6 +12732,8 @@ snapshots: dependencies: lru-cache: 6.0.0 + semver@7.6.2: {} + send@0.18.0: dependencies: debug: 2.6.9 @@ -11539,7 +12892,7 @@ snapshots: uuid: 8.3.2 websocket-driver: 0.7.4 - sort-css-media-queries@2.1.0: {} + sort-css-media-queries@2.2.0: {} source-list-map@2.0.1: {} @@ -11583,8 +12936,6 @@ snapshots: srcset@4.0.0: {} - stable@0.1.8: {} - statuses@1.5.0: {} statuses@2.0.1: {} @@ -11648,7 +12999,7 @@ snapshots: dependencies: inline-style-parser: 0.2.3 - styled-components@6.1.8(react-dom@18.3.0(react@18.3.0))(react@18.3.0): + styled-components@6.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@emotion/is-prop-valid': 1.2.1 '@emotion/unitless': 0.8.0 @@ -11656,13 +13007,13 @@ snapshots: css-to-react-native: 3.2.0 csstype: 3.1.2 postcss: 8.4.31 - react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) shallowequal: 1.1.0 stylis: 4.3.1 tslib: 2.5.0 - stylehacks@5.1.1(postcss@8.4.38): + stylehacks@6.1.1(postcss@8.4.38): dependencies: browserslist: 4.23.0 postcss: 8.4.38 @@ -11686,16 +13037,6 @@ snapshots: svg-parser@2.0.4: {} - svgo@2.8.0: - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 4.3.0 - css-tree: 1.1.3 - csso: 4.2.0 - picocolors: 1.0.0 - stable: 0.1.8 - svgo@3.2.0: dependencies: '@trysound/sax': 0.2.0 @@ -11762,7 +13103,7 @@ snapshots: totalist@3.0.1: {} - tough-cookie@4.1.3: + tough-cookie@4.1.4: dependencies: psl: 1.9.0 punycode: 2.3.1 @@ -12026,6 +13367,46 @@ snapshots: - supports-color - utf-8-validate + webpack-dev-server@4.15.2(webpack@5.91.0): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.7 + '@types/sockjs': 0.3.36 + '@types/ws': 8.5.10 + ansi-html-community: 0.0.8 + bonjour-service: 1.2.1 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.19.2 + graceful-fs: 4.2.11 + html-entities: 2.5.2 + http-proxy-middleware: 2.0.6(@types/express@4.17.21) + ipaddr.js: 2.2.0 + launch-editor: 2.6.1 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.2.0 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 5.3.4(webpack@5.91.0) + ws: 8.16.0 + optionalDependencies: + webpack: 5.91.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + webpack-merge@5.10.0: dependencies: clone-deep: 4.0.1 @@ -12141,6 +13522,8 @@ snapshots: ws@8.16.0: {} + ws@8.17.0: {} + xdg-basedir@5.1.0: {} xml-js@1.6.11: @@ -12161,7 +13544,7 @@ snapshots: yaml@1.10.2: {} - yaml@2.4.1: {} + yaml@2.4.2: {} yargs-parser@21.1.1: {} diff --git a/docs/versioned_docs/version-2.5/10-intro.md b/docs/versioned_docs/version-2.5/10-intro.md new file mode 100644 index 0000000000..309c6f1af4 --- /dev/null +++ b/docs/versioned_docs/version-2.5/10-intro.md @@ -0,0 +1,89 @@ +# Welcome to Woodpecker + +Woodpecker is a simple yet powerful CI/CD engine with great extensibility. It focuses on executing pipelines inside [containers](https://opencontainers.org/). +If you are already using containers in your daily workflow, you'll for sure love Woodpecker. + +![woodpecker](woodpecker.png) + +## `.woodpecker.yaml` + +- Place your pipeline in a file named `.woodpecker.yaml` in your repository +- Pipeline steps can be named as you like +- Run any command in the commands section + +```yaml title=".woodpecker.yaml" +steps: + - name: build + image: debian + commands: + - echo "This is the build step" + - name: a-test-step + image: debian + commands: + - echo "Testing.." +``` + +### Steps are containers + +- Define any container image as context + - either use your own and install the needed tools in a custom image + - or search for available images that are already tailored for your needs in image registries like [Docker Hub](https://hub.docker.com/search?type=image) +- List the commands that should be executed in the container + +```diff + steps: + - name: build +- image: debian ++ image: mycompany/image-with-awscli + commands: + - aws help +``` + +### File changes are incremental + +- Woodpecker clones the source code in the beginning +- File changes are persisted throughout individual steps as the same volume is being mounted in all steps + +```yaml title=".woodpecker.yaml" +steps: + - name: build + image: debian + commands: + - touch myfile + - name: a-test-step + image: debian + commands: + - cat myfile +``` + +## Plugins are straightforward + +- If you copy the same shell script from project to project +- Pack it into a plugin instead +- And make the yaml declarative +- Plugins are Docker images with your script as an entrypoint + +```dockerfile title="Dockerfile" +FROM laszlocloud/kubectl +COPY deploy /usr/local/deploy +ENTRYPOINT ["/usr/local/deploy"] +``` + +```bash title="deploy" +kubectl apply -f $PLUGIN_TEMPLATE +``` + +```yaml title=".woodpecker.yaml" +steps: + - name: deploy-to-k8s + image: laszlocloud/my-k8s-plugin + settings: + template: config/k8s/service.yaml +``` + +See [plugin docs](./20-usage/51-plugins/51-overview.md). + +## Continue reading + +- [Create a Woodpecker pipeline for your repository](./20-usage/10-intro.md) +- [Setup your own Woodpecker instance](./30-administration/00-deployment/00-overview.md) diff --git a/docs/versioned_docs/version-2.5/20-usage/10-intro.md b/docs/versioned_docs/version-2.5/20-usage/10-intro.md new file mode 100644 index 0000000000..4774661730 --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/10-intro.md @@ -0,0 +1,72 @@ +# Getting started + +## Repository Activation + +To activate your project navigate to your account settings. You will see a list of repositories which can be activated with a simple toggle. When you activate your repository, Woodpecker automatically adds webhooks to your forge (e.g. GitHub, Gitea, ...). + +Webhooks are used to trigger pipeline executions. When you push code to your repository, open a pull request, or create a tag, your forge will automatically send a webhook to Woodpecker which will in turn trigger the pipeline execution. + +![repository list](repo-list.png) + +## Required Permissions + +The user who enables a repo in Woodpecker must have `Admin` rights on that repo, so that Woodpecker can add the webhook. + +:::note +Note that manually creating webhooks yourself is not possible. +This is because webhooks are signed using a per-repository secret key which is not exposed to end users. +::: + +## Configuration + +To configure your pipeline you must create a `.woodpecker.yaml` file in the root of your repository. The `.woodpecker.yaml` file is used to define your pipeline steps. + +:::note +We support most of YAML 1.2, but preserve some behavior from 1.1 for backward compatibility. +Read more at: [https://github.com/go-yaml/yaml](https://github.com/go-yaml/yaml/tree/v3) +::: + +Example pipeline configuration: + +```yaml +steps: + - name: build + image: golang + commands: + - go get + - go build + - go test + +services: + - name: postgres + image: postgres:9.4.5 + environment: + - POSTGRES_USER=myapp +``` + +Example pipeline configuration with multiple, serial steps: + +```yaml +steps: + - name: backend + image: golang + commands: + - go get + - go build + - go test + + - name: frontend + image: node:6 + commands: + - npm install + - npm test + + - name: notify + image: plugins/slack + channel: developers + username: woodpecker +``` + +## Execution + +To trigger your first pipeline execution you can push code to your repository, open a pull request, or push a tag. Any of these events triggers a webhook from your forge and execute your pipeline. diff --git a/docs/versioned_docs/version-2.5/20-usage/15-terminology/architecture.excalidraw b/docs/versioned_docs/version-2.5/20-usage/15-terminology/architecture.excalidraw new file mode 100644 index 0000000000..b3eba1aab3 --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/15-terminology/architecture.excalidraw @@ -0,0 +1,1549 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "rectangle", + "version": 226, + "versionNonce": 1002880859, + "isDeleted": false, + "id": "UczUX5VuNnCB1rVvUJVfm", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 487.098092529257, + "y": 320.8758615860986, + "strokeColor": "#1971c2", + "backgroundColor": "#e7f5ff", + "width": 472.8823858375721, + "height": 183.19688715994928, + "seed": 917720693, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "Kqbwk_qfkALJfhtCIr2eS", + "type": "arrow" + } + ], + "updated": 1697530113380, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 161, + "versionNonce": 286006267, + "isDeleted": false, + "id": "sKPZmBSWUdAYfBs4ByItH", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 539.5451038202509, + "y": 345.2419383247636, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "width": 82.46875, + "height": 32.199999999999996, + "seed": 1485551573, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113380, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 2, + "text": "Server", + "textAlign": "right", + "verticalAlign": "top", + "containerId": null, + "originalText": "Server", + "lineHeight": 1.15, + "baseline": 25 + }, + { + "type": "rectangle", + "version": 333, + "versionNonce": 448586907, + "isDeleted": false, + "id": "_A8uznhnpXuQBYzjP-iVx", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 649.8080506852966, + "y": 427.60908869342575, + "strokeColor": "#c2255c", + "backgroundColor": "transparent", + "width": 136, + "height": 60, + "seed": 1783625013, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "r90dckf8trHemYzEwCgCW" + }, + { + "id": "XxfJWnHonmvNOJzMFSlie", + "type": "arrow" + } + ], + "updated": 1697530113380, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 298, + "versionNonce": 1244067771, + "isDeleted": false, + "id": "r90dckf8trHemYzEwCgCW", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 703.8080506852966, + "y": 441.5090886934257, + "strokeColor": "#c2255c", + "backgroundColor": "transparent", + "width": 28, + "height": 32.199999999999996, + "seed": 660965013, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113383, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 2, + "text": "UI", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "_A8uznhnpXuQBYzjP-iVx", + "originalText": "UI", + "lineHeight": 1.15, + "baseline": 25 + }, + { + "type": "rectangle", + "version": 105, + "versionNonce": 265992667, + "isDeleted": false, + "id": "v2eEwSOSRQBZ79O6wyzGf", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 800.9240766836483, + "y": 421.4987043996123, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 135.3671503686619, + "height": 62.2689029398432, + "seed": 1115810805, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "svsVhxCbatcLj7lQLch0P" + }, + { + "id": "TvtonmlV0W8__pnTG-wVZ", + "type": "arrow" + }, + { + "id": "5tl702dfcvJDLz9aIFU0P", + "type": "arrow" + } + ], + "updated": 1697530113380, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 83, + "versionNonce": 1706870395, + "isDeleted": false, + "id": "svsVhxCbatcLj7lQLch0P", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 828.1594096804793, + "y": 436.53315586953386, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 80.896484375, + "height": 32.199999999999996, + "seed": 2074781013, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113380, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 2, + "text": "GRPC", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "v2eEwSOSRQBZ79O6wyzGf", + "originalText": "GRPC", + "lineHeight": 1.15, + "baseline": 25 + }, + { + "type": "rectangle", + "version": 270, + "versionNonce": 418660123, + "isDeleted": false, + "id": "hSrrwwnm9y7R-_CnJtaK1", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1065.567103519039, + "y": 556.4146894573112, + "strokeColor": "#2f9e44", + "backgroundColor": "#ebfbee", + "width": 601.932705468054, + "height": 175.07489600604117, + "seed": 1983197877, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "TvtonmlV0W8__pnTG-wVZ", + "type": "arrow" + } + ], + "updated": 1697530113380, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 154, + "versionNonce": 871605179, + "isDeleted": false, + "id": "8tsYgVssKnBd_Zw1QuqNz", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1298.4367898442752, + "y": 566.567242947784, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 96.5234375, + "height": 32.199999999999996, + "seed": 1321669653, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113381, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 2, + "text": "Agent 1", + "textAlign": "right", + "verticalAlign": "top", + "containerId": null, + "originalText": "Agent 1", + "lineHeight": 1.15, + "baseline": 25 + }, + { + "type": "text", + "version": 182, + "versionNonce": 1323136091, + "isDeleted": false, + "id": "eeugZg73_yD_6uLBBgmcX", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 404.5001910129067, + "y": 707.1233710221009, + "strokeColor": "#c2255c", + "backgroundColor": "transparent", + "width": 210.068359375, + "height": 32.199999999999996, + "seed": 1901447541, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113381, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 2, + "text": "User => Browser", + "textAlign": "right", + "verticalAlign": "top", + "containerId": null, + "originalText": "User => Browser", + "lineHeight": 1.15, + "baseline": 25 + }, + { + "type": "ellipse", + "version": 106, + "versionNonce": 1501835515, + "isDeleted": false, + "id": "mlDhl4OOc-H1tNgh77AAW", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 482.5857164810477, + "y": 602.4394551739279, + "strokeColor": "#c2255c", + "backgroundColor": "transparent", + "width": 46.024748503793035, + "height": 44.21988070606176, + "seed": 791073493, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1697530113381, + "link": null, + "locked": false + }, + { + "type": "line", + "version": 166, + "versionNonce": 627726747, + "isDeleted": false, + "id": "ADEXzdYAhvj-_wVRftTIg", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 459.12202200277807, + "y": 697.1964604319912, + "strokeColor": "#c2255c", + "backgroundColor": "transparent", + "width": 80.31792517362464, + "height": 31.585599568061298, + "seed": 349155381, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1697530113381, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 42.415150610916044, + -28.87829787146393 + ], + [ + 80.31792517362464, + 2.7073016965973693 + ] + ] + }, + { + "type": "rectangle", + "version": 231, + "versionNonce": 801271355, + "isDeleted": false, + "id": "xmz4J-rxLIjfUQ4q19PjD", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 516.8788931508789, + "y": 870.4664542146543, + "strokeColor": "#f08c00", + "backgroundColor": "#fff4e6", + "width": 385.34512717560705, + "height": 60.464035142111264, + "seed": 3531157, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "05EJzh4NLXxemaKAmdi5n", + "type": "arrow" + } + ], + "updated": 1697530113381, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 93, + "versionNonce": 728690395, + "isDeleted": false, + "id": "gSbpry_947XArfI7b6AAL", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 636.1468430141358, + "y": 878.5884970070326, + "strokeColor": "#f08c00", + "backgroundColor": "transparent", + "width": 132.2890625, + "height": 32.199999999999996, + "seed": 1989076725, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113381, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 2, + "text": "Autoscaler", + "textAlign": "right", + "verticalAlign": "top", + "containerId": null, + "originalText": "Autoscaler", + "lineHeight": 1.15, + "baseline": 25 + }, + { + "type": "text", + "version": 118, + "versionNonce": 1258445691, + "isDeleted": false, + "id": "WVy0mdTGbUx08RuxdQUH8", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 523.3741602213286, + "y": 907.372811672524, + "strokeColor": "#f08c00", + "backgroundColor": "transparent", + "width": 369.1484375, + "height": 18.4, + "seed": 979386453, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113381, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 2, + "text": "Starts agents based on amount of pending pipelines", + "textAlign": "right", + "verticalAlign": "top", + "containerId": null, + "originalText": "Starts agents based on amount of pending pipelines", + "lineHeight": 1.15, + "baseline": 14 + }, + { + "type": "text", + "version": 373, + "versionNonce": 1254044699, + "isDeleted": false, + "id": "0Y1RcqzVFBFqh-wy-APMI", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1232.1955835481922, + "y": 605.8737363119278, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 292.6171875, + "height": 18.4, + "seed": 561999285, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113381, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 2, + "text": "Executes pending workflows of a pipeline", + "textAlign": "right", + "verticalAlign": "top", + "containerId": null, + "originalText": "Executes pending workflows of a pipeline", + "lineHeight": 1.15, + "baseline": 14 + }, + { + "type": "text", + "version": 630, + "versionNonce": 983038139, + "isDeleted": false, + "id": "lGumbhMs3xx1vU2632hli", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 505.62283787078286, + "y": 383.42044095379515, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "width": 158.015625, + "height": 36.8, + "seed": 722595605, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113381, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 2, + "text": "Central unit of a \nWoodpecker instance ", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Central unit of a \nWoodpecker instance ", + "lineHeight": 1.15, + "baseline": 32 + }, + { + "type": "rectangle", + "version": 131, + "versionNonce": 137308507, + "isDeleted": false, + "id": "PbSQXehWVLYcQGXYFpd-B", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 971.7123256059622, + "y": 171.06951064323448, + "strokeColor": "#be4bdb", + "backgroundColor": "#f8f0fc", + "width": 274.3443117379593, + "height": 74.90311522655017, + "seed": 1435321461, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "Kqbwk_qfkALJfhtCIr2eS", + "type": "arrow" + } + ], + "updated": 1697530113381, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 96, + "versionNonce": 1222067707, + "isDeleted": false, + "id": "2P2tz29C_2sUzVNSpaG17", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1065.5206131439782, + "y": 183.12082907329545, + "strokeColor": "#be4bdb", + "backgroundColor": "transparent", + "width": 73.14453125, + "height": 32.199999999999996, + "seed": 884403669, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113381, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 2, + "text": "Forge", + "textAlign": "right", + "verticalAlign": "top", + "containerId": null, + "originalText": "Forge", + "lineHeight": 1.15, + "baseline": 25 + }, + { + "type": "text", + "version": 141, + "versionNonce": 1133694619, + "isDeleted": false, + "id": "0eYhFYPuRanZ7wkR2OlHO", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 986.864582863368, + "y": 225.1223531590797, + "strokeColor": "#be4bdb", + "backgroundColor": "transparent", + "width": 247.234375, + "height": 18.4, + "seed": 1201957685, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "HK1jmIcPmM6Us6Jrynobb", + "type": "arrow" + } + ], + "updated": 1697530113381, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 2, + "text": "Github, Gitea, Github, Bitbucket, ...", + "textAlign": "right", + "verticalAlign": "top", + "containerId": null, + "originalText": "Github, Gitea, Github, Bitbucket, ...", + "lineHeight": 1.15, + "baseline": 14 + }, + { + "type": "rectangle", + "version": 55, + "versionNonce": 991183675, + "isDeleted": false, + "id": "dihpRzuIc-UoRSsOI33SZ", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 820.419424341303, + "y": 340.29123237109366, + "strokeColor": "#be4bdb", + "backgroundColor": "transparent", + "width": 117, + "height": 60, + "seed": 247151765, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "bcUL-u4zkLA9CLG2YdaeN" + } + ], + "updated": 1697530113381, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 38, + "versionNonce": 2008949723, + "isDeleted": false, + "id": "bcUL-u4zkLA9CLG2YdaeN", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 831.853994653803, + "y": 358.79123237109366, + "strokeColor": "#be4bdb", + "backgroundColor": "transparent", + "width": 94.130859375, + "height": 23, + "seed": 1638982133, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113381, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Webhooks", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "dihpRzuIc-UoRSsOI33SZ", + "originalText": "Webhooks", + "lineHeight": 1.15, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 93, + "versionNonce": 295891067, + "isDeleted": false, + "id": "Bphhue86mMXHN4klGamM3", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 697.3018309300141, + "y": 339.607928999312, + "strokeColor": "#be4bdb", + "backgroundColor": "transparent", + "width": 117, + "height": 60, + "seed": 92986197, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "0YxY2hEPyDWFqR8_-f6bn" + } + ], + "updated": 1697530113381, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 87, + "versionNonce": 2055547163, + "isDeleted": false, + "id": "0YxY2hEPyDWFqR8_-f6bn", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 727.4522215550141, + "y": 358.107928999312, + "strokeColor": "#be4bdb", + "backgroundColor": "transparent", + "width": 56.69921875, + "height": 23, + "seed": 43952309, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113381, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "OAuth", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Bphhue86mMXHN4klGamM3", + "originalText": "OAuth", + "lineHeight": 1.15, + "baseline": 18 + }, + { + "type": "arrow", + "version": 284, + "versionNonce": 1205292475, + "isDeleted": false, + "id": "HK1jmIcPmM6Us6Jrynobb", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1205.6453201409104, + "y": 250.4849674923464, + "strokeColor": "#be4bdb", + "backgroundColor": "transparent", + "width": 272.1094712799886, + "height": 94.31865813977868, + "seed": 982632981, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "uDIWJ5K5mEBL9QaiNk3cS" + } + ], + "updated": 1697530113381, + "link": null, + "locked": false, + "startBinding": { + "elementId": "0eYhFYPuRanZ7wkR2OlHO", + "focus": -0.8418551162334328, + "gap": 6.962614333266799 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "triangle", + "points": [ + [ + 0, + 0 + ], + [ + -69.68740859223726, + 65.87860410965993 + ], + [ + -272.1094712799886, + 94.31865813977868 + ] + ] + }, + { + "type": "text", + "version": 53, + "versionNonce": 1803962459, + "isDeleted": false, + "id": "uDIWJ5K5mEBL9QaiNk3cS", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1050.575099048673, + "y": 297.96357160200637, + "strokeColor": "#be4bdb", + "backgroundColor": "#b2f2bb", + "width": 170.765625, + "height": 36.8, + "seed": 1046069109, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113385, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 2, + "text": "sends events like push, \ntag, ...", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "HK1jmIcPmM6Us6Jrynobb", + "originalText": "sends events like push, tag, ...", + "lineHeight": 1.15, + "baseline": 32 + }, + { + "type": "arrow", + "version": 487, + "versionNonce": 335895291, + "isDeleted": false, + "id": "Kqbwk_qfkALJfhtCIr2eS", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 792.0835609101814, + "y": 316.38601649373913, + "strokeColor": "#be4bdb", + "backgroundColor": "transparent", + "width": 176.92139414789008, + "height": 122.73778943055902, + "seed": 1681656021, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "yvJTQ64RU50N6-hxEQlkl" + } + ], + "updated": 1697530113381, + "link": null, + "locked": false, + "startBinding": { + "elementId": "UczUX5VuNnCB1rVvUJVfm", + "focus": -0.03867359238356983, + "gap": 4.489845092359474 + }, + "endBinding": { + "elementId": "PbSQXehWVLYcQGXYFpd-B", + "focus": 0.7798878042817562, + "gap": 2.707370547890605 + }, + "lastCommittedPoint": null, + "startArrowhead": "triangle", + "endArrowhead": "triangle", + "points": [ + [ + 0, + 0 + ], + [ + 60.422360349016344, + -71.97786730696657 + ], + [ + 176.92139414789008, + -122.73778943055902 + ] + ] + }, + { + "type": "text", + "version": 62, + "versionNonce": 301106427, + "isDeleted": false, + "id": "yvJTQ64RU50N6-hxEQlkl", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 773.7910775091977, + "y": 226.00814918677256, + "strokeColor": "#be4bdb", + "backgroundColor": "#b2f2bb", + "width": 157.4296875, + "height": 36.8, + "seed": 500049461, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113385, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 2, + "text": "allows users to login \nusing existing account", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Kqbwk_qfkALJfhtCIr2eS", + "originalText": "allows users to login using existing account", + "lineHeight": 1.15, + "baseline": 32 + }, + { + "type": "arrow", + "version": 393, + "versionNonce": 598459861, + "isDeleted": false, + "id": "TvtonmlV0W8__pnTG-wVZ", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 936.9267543177084, + "y": 458.95033086418084, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 215.17788326846676, + "height": 93.99151368376693, + "seed": 234198933, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "rFf6NIofw6UBOyAFwg0Kn" + } + ], + "updated": 1697530127259, + "link": null, + "locked": false, + "startBinding": { + "elementId": "v2eEwSOSRQBZ79O6wyzGf", + "focus": -0.30339107267010673, + "gap": 1 + }, + "endBinding": { + "elementId": "hSrrwwnm9y7R-_CnJtaK1", + "focus": -0.14057158065513534, + "gap": 3.4728449093634026 + }, + "lastCommittedPoint": null, + "startArrowhead": "triangle", + "endArrowhead": "triangle", + "points": [ + [ + 0, + 0 + ], + [ + 130.0760301643047, + 42.90930518030268 + ], + [ + 215.17788326846676, + 93.99151368376693 + ] + ] + }, + { + "type": "text", + "version": 8, + "versionNonce": 1693330843, + "isDeleted": false, + "id": "rFf6NIofw6UBOyAFwg0Kn", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 997.4942845557462, + "y": 473.9409015069133, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 161.4140625, + "height": 36.8, + "seed": 1592253685, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113386, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 2, + "text": "receives workflows & \nreturns logs + statuses", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "TvtonmlV0W8__pnTG-wVZ", + "originalText": "receives workflows & returns logs + statuses", + "lineHeight": 1.15, + "baseline": 32 + }, + { + "type": "arrow", + "version": 270, + "versionNonce": 1855882619, + "isDeleted": false, + "id": "5tl702dfcvJDLz9aIFU0P", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 886.0581619083632, + "y": 485.67004123832135, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 174.09447592006472, + "height": 326.4905563076211, + "seed": 1479177813, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "apyMCAv2GIN_yzHXwX4tY" + } + ], + "updated": 1697530113381, + "link": null, + "locked": false, + "startBinding": { + "elementId": "v2eEwSOSRQBZ79O6wyzGf", + "focus": -0.1341191028023529, + "gap": 1.9024338988657519 + }, + "endBinding": { + "elementId": "pxF49EKDNO6IZq_34i7bY", + "focus": -0.7088661407505865, + "gap": 4.060573862784622 + }, + "lastCommittedPoint": null, + "startArrowhead": "triangle", + "endArrowhead": "triangle", + "points": [ + [ + 0, + 0 + ], + [ + 44.14165353942735, + 196.18483635907205 + ], + [ + 174.09447592006472, + 326.4905563076211 + ] + ] + }, + { + "type": "text", + "version": 66, + "versionNonce": 2007745083, + "isDeleted": false, + "id": "apyMCAv2GIN_yzHXwX4tY", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 849.4927841977906, + "y": 663.4548775973934, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 161.4140625, + "height": 36.8, + "seed": 882041781, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113386, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 2, + "text": "receives workflows & \nreturns logs + statuses", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "5tl702dfcvJDLz9aIFU0P", + "originalText": "receives workflows & returns logs + statuses", + "lineHeight": 1.15, + "baseline": 32 + }, + { + "type": "arrow", + "version": 347, + "versionNonce": 1353818811, + "isDeleted": false, + "id": "XxfJWnHonmvNOJzMFSlie", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 534.9278465333664, + "y": 595.2199151317081, + "strokeColor": "#c2255c", + "backgroundColor": "transparent", + "width": 113.88020415193023, + "height": 119.81968366814112, + "seed": 944153877, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1697530113381, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "_A8uznhnpXuQBYzjP-iVx", + "focus": 0.5397285671082249, + "gap": 1 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "triangle", + "points": [ + [ + 0, + 0 + ], + [ + 113.88020415193023, + -119.81968366814112 + ] + ] + }, + { + "type": "rectangle", + "version": 61, + "versionNonce": 1099141979, + "isDeleted": false, + "id": "j56ZKRwmXk72nHrZzLz_1", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1081.8110514012087, + "y": 652.5253283508498, + "strokeColor": "#2f9e44", + "backgroundColor": "#ebfbee", + "width": 566.7373014532342, + "height": 68.58600908319681, + "seed": 112933493, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1697530113381, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 82, + "versionNonce": 1879994363, + "isDeleted": false, + "id": "cAVYXfBRnfuGAv7QTQVow", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1300.6584159706863, + "y": 658.8425033454967, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 77.83203125, + "height": 23, + "seed": 951460821, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113381, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Backend", + "textAlign": "right", + "verticalAlign": "top", + "containerId": null, + "originalText": "Backend", + "lineHeight": 1.15, + "baseline": 18 + }, + { + "type": "text", + "version": 376,- add some images explaining the architecture & terminology with +pipeline -> workflow -> step +- combine advanced config usage +- rename pipeline syntax to workflow syntax (and most references to +pipeline steps etc as well) +- update agent registration part +- add bug note to secrets encryption setting +- remove usage from readme to point to up-to-date docs page +- typos +- closes #1408 + +--------- + "angle": 0, + "x": 1094.1972977313717, + "y": 681.8988272758752, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 530.9453125, + "height": 55.199999999999996, + "seed": 843899189, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113381, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 2, + "text": "The backend is the environment (exp. Docker / Kubernetes / local) used to \nexecute workflows in.\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "The backend is the environment (exp. Docker / Kubernetes / local) used to \nexecute workflows in.\n", + "lineHeight": 1.15, + "baseline": 50 + }, + { + "type": "rectangle", + "version": 384, + "versionNonce": 1778969915, + "isDeleted": false, + "id": "pxF49EKDNO6IZq_34i7bY", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1064.2132116912126, + "y": 754.5018564383092, + "strokeColor": "#2f9e44", + "backgroundColor": "#ebfbee", + "width": 601.932705468054, + "height": 175.07489600604117, + "seed": 954528405, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "05EJzh4NLXxemaKAmdi5n", + "type": "arrow" + }, + { + "id": "5tl702dfcvJDLz9aIFU0P", + "type": "arrow" + } + ], + "updated": 1697530113381, + "link": null, + "locked": false + }, + { + "type": "arrow", + "version": 154, + "versionNonce": 1988988379, + "isDeleted": false, + "id": "05EJzh4NLXxemaKAmdi5n", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 904.0288881242177, + "y": 882.4966027880746, + "strokeColor": "#f08c00", + "backgroundColor": "transparent", + "width": 158.83070714434325, + "height": 32.735025983189644, + "seed": 1228134389, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "yNxAOEPZu_Jl7mnI01OXs" + } + ], + "updated": 1697530113381, + "link": null, + "locked": false, + "startBinding": { + "elementId": "xmz4J-rxLIjfUQ4q19PjD", + "gap": 1.8048677977312764, + "focus": 0.31250963573550006 + }, + "endBinding": { + "elementId": "pxF49EKDNO6IZq_34i7bY", + "gap": 1.353616422651612, + "focus": 0.36496042109885213 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "triangle", + "points": [ + [ + 0, + 0 + ], + [ + 158.83070714434325, + -32.735025983189644 + ] + ] + }, + { + "type": "text", + "version": 25, + "versionNonce": 1393410779, + "isDeleted": false, + "id": "yNxAOEPZu_Jl7mnI01OXs", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 963.8856479463893, + "y": 856.9290897964797, + "strokeColor": "#f08c00", + "backgroundColor": "#b2f2bb", + "width": 39.1171875, + "height": 18.4, + "seed": 759107925, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113387, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 2, + "text": "starts", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "05EJzh4NLXxemaKAmdi5n", + "originalText": "starts", + "lineHeight": 1.15, + "baseline": 14 + }, + { + "type": "text", + "version": 187, + "versionNonce": 671224603, + "isDeleted": false, + "id": "sSj4Pda-fo-BBYM_dzml6", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1296.0854928322988, + "y": 776.6118140041631, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 104.2890625, + "height": 32.199999999999996, + "seed": 1381768885, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530113381, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 2, + "text": "Agent ...", + "textAlign": "right", + "verticalAlign": "top", + "containerId": null, + "originalText": "Agent ...", + "lineHeight": 1.15, + "baseline": 25 + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} diff --git a/docs/versioned_docs/version-2.5/20-usage/15-terminology/architecture.svg b/docs/versioned_docs/version-2.5/20-usage/15-terminology/architecture.svg new file mode 100644 index 0000000000..b34e96fdd8 --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/15-terminology/architecture.svg @@ -0,0 +1,17 @@ + + + + + + + + ServerUIGRPCAgent 1User => BrowserAutoscalerStarts agents based on amount of pending pipelinesExecutes pending workflows of a pipelineCentral unit of a Woodpecker instance ForgeGithub, Gitea, Github, Bitbucket, ...WebhooksOAuthsends events like push, tag, ...allows users to login using existing accountreceives workflows & returns logs + statusesreceives workflows & returns logs + statusesBackendThe backend is the environment (exp. Docker / Kubernetes / local) used to execute workflows in.startsAgent ... diff --git a/docs/versioned_docs/version-2.5/20-usage/15-terminology/index.md b/docs/versioned_docs/version-2.5/20-usage/15-terminology/index.md new file mode 100644 index 0000000000..5e9d8e5dee --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/15-terminology/index.md @@ -0,0 +1,64 @@ +# Terminology + +## Woodpecker architecture + +![Woodpecker architecture](architecture.svg) + +## Pipeline, workflow & step + +![Relation between pipelines, workflows and steps](pipeline-workflow-step.svg) + +## Glossary + +- **Woodpecker CI**: The project name around Woodpecker. +- **Woodpecker**: An open-source tool that executes [pipelines][Pipeline] on your code. +- **Server**: The component of Woodpecker that handles webhooks from forges, orchestrates agents, and sends status back. It also serves the API and web UI for administration and configuration. +- **Agent**: A component of Woodpecker that executes [pipelines][Pipeline] (specifically one or more [workflows][Workflow]) with a specific backend (e.g. [Docker][], Kubernetes, [local][Local]). It connects to the server via GRPC. +- **CLI**: The Woodpecker command-line interface (CLI) is a terminal tool used to administer the server, to execute pipelines locally for debugging / testing purposes, and to perform tasks like linting pipelines. +- **Pipeline**: A sequence of [workflows][Workflow] that are executed on the code. [Pipelines][Pipeline] are triggered by events. +- **Workflow**: A sequence of steps and services that are executed as part of a [pipeline][Pipeline]. Workflows are represented by YAML files. Each [workflow][Workflow] has its own isolated [workspace][Workspace], and often additional resources like a shared network (docker). +- **Steps**: Individual commands, actions or tasks within a [workflow][Workflow]. +- **Code**: Refers to the files tracked by the version control system used by the [forge][Forge]. +- **Repos**: Short for repositories, these are storage locations where code is stored. +- **Forge**: The hosting platform or service where the repositories are hosted. +- **Workspace**: A folder shared between all steps of a [workflow][Workflow] containing the repository and all the generated data from previous steps. +- **Event**: Triggers the execution of a [pipeline][Pipeline], such as a [forge][Forge] event like `push`, or `manual` triggered manually from the UI. +- **Commit**: A defined state of the code, usually associated with a version control system like Git. +- **Matrix**: A configuration option that allows the execution of [workflows][Workflow] for each value in the [matrix][Matrix]. +- **Service**: A service is a step that is executed from the start of a [workflow][Workflow] until its end. It can be accessed by name via the network from other steps within the same [workflow][Workflow]. +- **Plugins**: [Plugins][Plugin] are extensions that provide pre-defined actions or commands for a step in a [workflow][Workflow]. They can be configured via settings. +- **Container**: A lightweight and isolated environment where commands are executed. +- **YAML File**: A file format used to define and configure [workflows][Workflow]. +- **Dependency**: [Workflows][Workflow] can depend on each other, and if possible, they are executed in parallel. +- **Status**: Status refers to the outcome of a step or [workflow][Workflow] after it has been executed, determined by the internal command exit code. At the end of a [workflow][Workflow], its status is sent to the [forge][Forge]. +- **Service extension**: Some parts of Woodpecker internal services like secrets storage or config fetcher can be replaced through service extensions. + +## Pipeline events + +- `push`: A push event is triggered when a commit is pushed to a branch. +- `pull_request`: A pull request event is triggered when a pull request is opened or a new commit is pushed to it. +- `pull_request_closed`: A pull request closed event is triggered when a pull request is closed or merged. +- `tag`: A tag event is triggered when a tag is pushed. +- `release`: A release event is triggered when a release, pre-release or draft is created. (You can apply further filters using [evaluate](../20-workflow-syntax.md#evaluate) with [environment variables](../50-environment.md#built-in-environment-variables).) +- `manual`: A manual event is triggered when a user manually triggers a pipeline. +- `cron`: A cron event is triggered when a cron job is executed. + +## Conventions + +Sometimes there are multiple terms that can be used to describe something. This section lists the preferred terms to use in Woodpecker: + +- Environment variables `*_LINK` should be called `*_URL`. In the code use `URL()` instead of `Link()` +- Use the term **pipelines** instead of the previous **builds** +- Use the term **steps** instead of the previous **jobs** +- Use the prefix `WOODPECKER_EXPERT_` for advanced environment variables that are normally not required to be set by users + + + +[Pipeline]: ../20-workflow-syntax.md +[Workflow]: ../25-workflows.md +[Forge]: ../../30-administration/11-forges/11-overview.md +[Plugin]: ../51-plugins/51-overview.md +[Workspace]: ../20-workflow-syntax.md#workspace +[Matrix]: ../30-matrix-workflows.md +[Docker]: ../../30-administration/22-backends/10-docker.md +[Local]: ../../30-administration/22-backends/20-local.md diff --git a/docs/versioned_docs/version-2.5/20-usage/15-terminology/pipeline-workflow-step.excalidraw b/docs/versioned_docs/version-2.5/20-usage/15-terminology/pipeline-workflow-step.excalidraw new file mode 100644 index 0000000000..28704cff54 --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/15-terminology/pipeline-workflow-step.excalidraw @@ -0,0 +1,1077 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "rectangle", + "version": 97, + "versionNonce": 257762037, + "isDeleted": false, + "id": "Y3hYdpX9r1qWfyHWs7AXT", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 393.622323134362, + "y": 336.02197155458475, + "strokeColor": "#1971c2", + "backgroundColor": "#e7f5ff", + "width": 366.3936710429598, + "height": 499.95605689083004, + "seed": 875444373, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1697530083427, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 67, + "versionNonce": 369556565, + "isDeleted": false, + "id": "g1Eb010Kx_KFryVqNYWBQ", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 520.0116988873679, + "y": 363.32095846456355, + "strokeColor": "#1971c2", + "backgroundColor": "#b2f2bb", + "width": 99.626953125, + "height": 32.199999999999996, + "seed": 1466195445, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "9laL3864YWOna6NQlVDqq", + "type": "arrow" + } + ], + "updated": 1697530083427, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 2, + "text": "Pipeline", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Pipeline", + "lineHeight": 1.15, + "baseline": 25 + }, + { + "type": "rectangle", + "version": 314, + "versionNonce": 1983028731, + "isDeleted": false, + "id": "9o-DNP0YdlIGVz1kEm_hW", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 407.1590381712276, + "y": 410.9252244837219, + "strokeColor": "#be4bdb", + "backgroundColor": "#f8f0fc", + "width": 340.12211164367193, + "height": 199, + "seed": 1869535061, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "FU4jk6Tz6duLaaZE0Z55A", + "type": "arrow" + }, + { + "id": "9laL3864YWOna6NQlVDqq", + "type": "arrow" + } + ], + "updated": 1697530083624, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 156, + "versionNonce": 1495247317, + "isDeleted": false, + "id": "q4TKpiq2KAwPaz19GdhtK", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 490.3194993196821, + "y": 473.52959018719525, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 247, + "height": 33, + "seed": 111355061, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "ya0JzDo-4oscHIq87TZ_D" + }, + { + "id": "1ZbDRqbETCkEx62nCmnpJ", + "type": "arrow" + }, + { + "id": "FU4jk6Tz6duLaaZE0Z55A", + "type": "arrow" + } + ], + "updated": 1697530083427, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 156, + "versionNonce": 1469425461, + "isDeleted": false, + "id": "ya0JzDo-4oscHIq87TZ_D", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 566.0118821321821, + "y": 478.52959018719525, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 95.615234375, + "height": 23, + "seed": 1084671509, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530083427, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Clone step", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "q4TKpiq2KAwPaz19GdhtK", + "originalText": "Clone step", + "lineHeight": 1.15, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 236, + "versionNonce": 1535319541, + "isDeleted": false, + "id": "AOJLQFldoHd2vxVtB2jrS", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 491.2218643672577, + "y": 519.7800332298218, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 247, + "height": 33, + "seed": 812596085, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "FRby8A9aUiKvHpM5mCdDN" + } + ], + "updated": 1697530083427, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 231, + "versionNonce": 28677973, + "isDeleted": false, + "id": "FRby8A9aUiKvHpM5mCdDN", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 583.0324112422577, + "y": 524.7800332298218, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 63.37890625, + "height": 23, + "seed": 1849820373, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530083427, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "1. Step", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "AOJLQFldoHd2vxVtB2jrS", + "originalText": "1. Step", + "lineHeight": 1.15, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 291, + "versionNonce": 571598005, + "isDeleted": false, + "id": "2WwuMWX7YawqK0i1rDPJo", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 489.6426911083554, + "y": 567.609787233933, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 247, + "height": 33, + "seed": 1840554549, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "UOwxmKIS0W62CFt_ffEy4" + }, + { + "id": "379hO6Dc5rygB38JgDbVo", + "type": "arrow" + } + ], + "updated": 1697530083427, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 289, + "versionNonce": 4032021, + "isDeleted": false, + "id": "UOwxmKIS0W62CFt_ffEy4", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 581.4532379833554, + "y": 572.609787233933, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 63.37890625, + "height": 23, + "seed": 330077077, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530083427, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "2. Step", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "2WwuMWX7YawqK0i1rDPJo", + "originalText": "2. Step", + "lineHeight": 1.15, + "baseline": 18 + }, + { + "type": "arrow", + "version": 296, + "versionNonce": 1539516059, + "isDeleted": false, + "id": "9laL3864YWOna6NQlVDqq", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 630.0635849044402, + "y": 383.14314287821776, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "width": 294.3024370154917, + "height": 36.656016722015465, + "seed": 207575285, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1697530083624, + "link": null, + "locked": false, + "startBinding": { + "elementId": "9o-DNP0YdlIGVz1kEm_hW", + "focus": -1.000156025347643, + "gap": 27.782081605504118 + }, + "endBinding": { + "elementId": "vS2PNUbmeBe3EPxl-dID8", + "focus": 0.7761987167055517, + "gap": 8.978940924346716 + }, + "lastCommittedPoint": null, + "startArrowhead": "triangle", + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 294.3024370154917, + -36.656016722015465 + ] + ] + }, + { + "type": "text", + "version": 249, + "versionNonce": 2076402229, + "isDeleted": false, + "id": "vS2PNUbmeBe3EPxl-dID8", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 933.3449628442786, + "y": 336.02200598023114, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "width": 301.298828125, + "height": 46, + "seed": 1632793173, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "9laL3864YWOna6NQlVDqq", + "type": "arrow" + } + ], + "updated": 1697530083427, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "A pipeline is triggered by an event\nlike a push, tag, manual", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "A pipeline is triggered by an event\nlike a push, tag, manual", + "lineHeight": 1.15, + "baseline": 41 + }, + { + "type": "arrow", + "version": 751, + "versionNonce": 1371044827, + "isDeleted": false, + "id": "FU4jk6Tz6duLaaZE0Z55A", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 751.1619011845514, + "y": 440.8355079324799, + "strokeColor": "#be4bdb", + "backgroundColor": "transparent", + "width": 160.46519124360202, + "height": 2.2452348338335923, + "seed": 1331388341, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1697530083624, + "link": null, + "locked": false, + "startBinding": { + "elementId": "9o-DNP0YdlIGVz1kEm_hW", + "focus": -0.6591700594229558, + "gap": 3.8807513696519322 + }, + "endBinding": { + "elementId": "wfFvnFZuh0npL9hh0ez7o", + "focus": 0.7652411053273549, + "gap": 20.75618622779257 + }, + "lastCommittedPoint": null, + "startArrowhead": "triangle", + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 160.46519124360202, + -2.2452348338335923 + ] + ] + }, + { + "type": "rectangle", + "version": 440, + "versionNonce": 819540565, + "isDeleted": false, + "id": "TbejdIYo_qNDw15yLP2IB", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 406.0812257713851, + "y": 626.8305540252475, + "strokeColor": "#be4bdb", + "backgroundColor": "#f8f0fc", + "width": 340.12211164367193, + "height": 199, + "seed": 1553965333, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1697530083427, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 466, + "versionNonce": 663477, + "isDeleted": false, + "id": "wfFvnFZuh0npL9hh0ez7o", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 932.383278655946, + "y": 424.0107569968011, + "strokeColor": "#be4bdb", + "backgroundColor": "transparent", + "width": 481.2890625, + "height": 115, + "seed": 781497973, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "FU4jk6Tz6duLaaZE0Z55A", + "type": "arrow" + } + ], + "updated": 1697530083427, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Every pipeline consists of multiple workflows.\nEach defined by a separate YAML file and is named \nafter the filename.\nEach workflow has its own workspace (folder) which is\nused by all steps of that workflow.", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Every pipeline consists of multiple workflows.\nEach defined by a separate YAML file and is named \nafter the filename.\nEach workflow has its own workspace (folder) which is\nused by all steps of that workflow.", + "lineHeight": 1.15, + "baseline": 110 + }, + { + "type": "arrow", + "version": 464, + "versionNonce": 734626075, + "isDeleted": false, + "id": "1ZbDRqbETCkEx62nCmnpJ", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 741.0645380446722, + "y": 492.31283255558515, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 178.4459423531871, + "height": 83.08707392565111, + "seed": 536879061, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1697530083624, + "link": null, + "locked": false, + "startBinding": { + "elementId": "q4TKpiq2KAwPaz19GdhtK", + "focus": -0.7697471991854113, + "gap": 3.7450387249900814 + }, + "endBinding": { + "elementId": "Vu0JJ6ZWuEhEyCfxeHPtc", + "focus": -0.7822252364700005, + "gap": 8.360835317635974 + }, + "lastCommittedPoint": null, + "startArrowhead": "triangle", + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 178.4459423531871, + 83.08707392565111 + ] + ] + }, + { + "type": "text", + "version": 327, + "versionNonce": 371646421, + "isDeleted": false, + "id": "Vu0JJ6ZWuEhEyCfxeHPtc", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 927.8713157154953, + "y": 563.2132686484658, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 491.357421875, + "height": 46, + "seed": 385310005, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "1ZbDRqbETCkEx62nCmnpJ", + "type": "arrow" + } + ], + "updated": 1697530083427, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "The default first step of each workflow is the clone step.\nIts fetches the specific code version for a pipeline.", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "The default first step of each workflow is the clone step.\nIts fetches the specific code version for a pipeline.", + "lineHeight": 1.15, + "baseline": 41 + }, + { + "type": "text", + "version": 91, + "versionNonce": 1180085909, + "isDeleted": false, + "id": "0tGx2VdJLNf7W6HD76dtO", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 427.6895298601876, + "y": 432.3583566254258, + "strokeColor": "#9c36b5", + "backgroundColor": "#a5d8ff", + "width": 143.876953125, + "height": 23, + "seed": 450883221, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530083427, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Workflow \"build\"", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Workflow \"build\"", + "lineHeight": 1.15, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 338, + "versionNonce": 957223925, + "isDeleted": false, + "id": "LQ2h2aO9uzDWyLG6OLn70", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 487.7251825950889, + "y": 685.3516128043414, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 247, + "height": 33, + "seed": 711939061, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "8EqaPnZX2CgLaF08UNZZg" + } + ], + "updated": 1697530083427, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 340, + "versionNonce": 510774613, + "isDeleted": false, + "id": "8EqaPnZX2CgLaF08UNZZg", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 563.4175654075889, + "y": 690.3516128043414, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 95.615234375, + "height": 23, + "seed": 1370164565, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530083427, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Clone step", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "LQ2h2aO9uzDWyLG6OLn70", + "originalText": "Clone step", + "lineHeight": 1.15, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 421, + "versionNonce": 97999541, + "isDeleted": false, + "id": "St9t4nwHuXXVlmjDqfn_Z", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 488.62754764266447, + "y": 731.6020558469675, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 247, + "height": 33, + "seed": 2145950389, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "DX10t075MMDu7BLtuUaij" + } + ], + "updated": 1697530083427, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 417, + "versionNonce": 2011446293, + "isDeleted": false, + "id": "DX10t075MMDu7BLtuUaij", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 580.4380945176645, + "y": 736.6020558469675, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 63.37890625, + "height": 23, + "seed": 500005909, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530083427, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "1. Step", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "St9t4nwHuXXVlmjDqfn_Z", + "originalText": "1. Step", + "lineHeight": 1.15, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 475, + "versionNonce": 1284370805, + "isDeleted": false, + "id": "XVGBz_X5yN6xjWTosVH2n", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 487.04837438376217, + "y": 779.4318098510787, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 247, + "height": 33, + "seed": 1666134389, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "-xogFSFcP-Vv5cuOSFm8T" + } + ], + "updated": 1697530083427, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 476, + "versionNonce": 1092221653, + "isDeleted": false, + "id": "-xogFSFcP-Vv5cuOSFm8T", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 578.8589212587622, + "y": 784.4318098510787, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 63.37890625, + "height": 23, + "seed": 1840462549, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530083427, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "2. Step", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "XVGBz_X5yN6xjWTosVH2n", + "originalText": "2. Step", + "lineHeight": 1.15, + "baseline": 18 + }, + { + "type": "text", + "version": 125, + "versionNonce": 1310578741, + "isDeleted": false, + "id": "N1a9yL7Pts16hUKY9-vhw", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 424.78852030984035, + "y": 646.2446482189896, + "strokeColor": "#be4bdb", + "backgroundColor": "#a5d8ff", + "width": 133.857421875, + "height": 23, + "seed": 361699381, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1697530083427, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Workflow \"test\"", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Workflow \"test\"", + "lineHeight": 1.15, + "baseline": 18 + }, + { + "type": "arrow", + "version": 184, + "versionNonce": 2127603131, + "isDeleted": false, + "id": "O-YmtRLb8uFNqCAz22EoG", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 737.454940151797, + "y": 535.9141784615474, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 190.41665096887027, + "height": 112.96427727851824, + "seed": 80234901, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1697530083624, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "0TjxOfERekC91N3yciQIq", + "focus": -0.8392895251910331, + "gap": 2.0300115262207328 + }, + "lastCommittedPoint": null, + "startArrowhead": "triangle", + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 190.41665096887027, + 112.96427727851824 + ] + ] + }, + { + "type": "arrow", + "version": 327, + "versionNonce": 780710651, + "isDeleted": false, + "id": "379hO6Dc5rygB38JgDbVo", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 738.8084877231549, + "y": 591.3526691276127, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 186.8066399682357, + "height": 57.68023784868956, + "seed": 211046133, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1697530083624, + "link": null, + "locked": false, + "startBinding": { + "elementId": "2WwuMWX7YawqK0i1rDPJo", + "focus": -0.5776522830934517, + "gap": 2.1657966147995467 + }, + "endBinding": { + "elementId": "0TjxOfERekC91N3yciQIq", + "focus": -0.7269489945238884, + "gap": 4.286474955497397 + }, + "lastCommittedPoint": null, + "startArrowhead": "triangle", + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 186.8066399682357, + 57.68023784868956 + ] + ] + }, + { + "type": "text", + "version": 285, + "versionNonce": 1165977685, + "isDeleted": false, + "id": "0TjxOfERekC91N3yciQIq", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 929.901602646888, + "y": 632.4760859429873, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 518.076171875, + "height": 46, + "seed": 997763157, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "O-YmtRLb8uFNqCAz22EoG", + "type": "arrow" + }, + { + "id": "379hO6Dc5rygB38JgDbVo", + "type": "arrow" + } + ], + "updated": 1697530083427, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Additional steps are used to execute commands or plugins\nlike `make install` or release-to-github", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Additional steps are used to execute commands or plugins\nlike `make install` or release-to-github", + "lineHeight": 1.15, + "baseline": 41 + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} diff --git a/docs/versioned_docs/version-2.5/20-usage/15-terminology/pipeline-workflow-step.svg b/docs/versioned_docs/version-2.5/20-usage/15-terminology/pipeline-workflow-step.svg new file mode 100644 index 0000000000..4ea3aab0ac --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/15-terminology/pipeline-workflow-step.svg @@ -0,0 +1,17 @@ + + + + + + + + PipelineClone step1. Step2. StepA pipeline is triggered by an eventlike a push, tag, manualEvery pipeline consists of multiple workflows.Each defined by a separate YAML file and is named after the filename.Each workflow has its own workspace (folder) which isused by all steps of that workflow.The default first step of each workflow is the clone step.Its fetches the specific code version for a pipeline.Workflow "build"Clone step1. Step2. StepWorkflow "test"Additional steps are used to execute commands or pluginslike `make install` or release-to-github diff --git a/docs/versioned_docs/version-2.5/20-usage/20-workflow-syntax.md b/docs/versioned_docs/version-2.5/20-usage/20-workflow-syntax.md new file mode 100644 index 0000000000..7b966fc48c --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/20-workflow-syntax.md @@ -0,0 +1,774 @@ +# Workflow syntax + +The Workflow section defines a list of steps to build, test and deploy your code. The steps are executed serially in the order in which they are defined. If a step returns a non-zero exit code, the workflow and therefore the entire pipeline terminates immediately and returns an error status. + +:::note +An exception to this rule are steps with a [`status: [failure]`](#status) condition, which ensures that they are executed in the case of a failed run. +::: + +Example steps: + +```yaml +steps: + - name: backend + image: golang + commands: + - go build + - go test + - name: frontend + image: node + commands: + - npm install + - npm run test + - npm run build +``` + +In the above example we define two steps, `frontend` and `backend`. The names of these steps are completely arbitrary. + +The name is optional, if not added the steps will be numerated. + +Another way to name a step is by using dictionaries: + +```yaml +steps: + backend: + image: golang + commands: + - go build + - go test + frontend: + image: node + commands: + - npm install + - npm run test + - npm run build +``` + +## Skip Commits + +Woodpecker gives the ability to skip individual commits by adding `[SKIP CI]` or `[CI SKIP]` to the commit message. Note this is case-insensitive. + +```bash +git commit -m "updated README [CI SKIP]" +``` + +## Steps + +Every step of your workflow executes commands inside a specified container.
+The defined steps are executed in sequence by default, if they should run in parallel you can use [`depends_on`](./20-workflow-syntax.md#depends_on).
+The associated commit is checked out with git to a workspace which is mounted to every step of the workflow as the working directory. + +```diff + steps: + - name: backend + image: golang + commands: ++ - go build ++ - go test +``` + +### File changes are incremental + +- Woodpecker clones the source code in the beginning of the workflow +- Changes to files are persisted through steps as the same volume is mounted to all steps + +```yaml title=".woodpecker.yaml" +steps: + - name: build + image: debian + commands: + - echo "test content" > myfile + - name: a-test-step + image: debian + commands: + - cat myfile +``` + +### `image` + +Woodpecker pulls the defined image and uses it as environment to execute the workflow step commands, for plugins and for service containers. + +When using the `local` backend, the `image` entry is used to specify the shell, such as Bash or Fish, that is used to run the commands. + +```diff + steps: + - name: build ++ image: golang:1.6 + commands: + - go build + - go test + + - name: publish ++ image: plugins/docker + repo: foo/bar + + services: + - name: database ++ image: mysql +``` + +Woodpecker supports any valid Docker image from any Docker registry: + +```yaml +image: golang +image: golang:1.7 +image: library/golang:1.7 +image: index.docker.io/library/golang +image: index.docker.io/library/golang:1.7 +``` + +Woodpecker does not automatically upgrade container images. Example configuration to always pull the latest image when updates are available: + +```diff + steps: + - name: build + image: golang:latest ++ pull: true +``` + +Learn more how you can use images from [different registries](./41-registries.md). + +### `commands` + +Commands of every step are executed serially as if you would enter them into your local shell. + +```diff + steps: + - name: backend + image: golang + commands: ++ - go build ++ - go test +``` + +There is no magic here. The above commands are converted to a simple shell script. The commands in the above example are roughly converted to the below script: + +```bash +#!/bin/sh +set -e + +go build +go test +``` + +The above shell script is then executed as the container entrypoint. The below docker command is an (incomplete) example of how the script is executed: + +```bash +docker run --entrypoint=build.sh golang +``` + +:::note +Only build steps can define commands. You cannot use commands with plugins or services. +::: + +### `entrypoint` + +Allows you to specify the entrypoint for containers. Note that this must be a list of the command and its arguments (e.g. `["/bin/sh", "-c"]`). + +If you define [`commands`](#commands), the default entrypoint will be `["/bin/sh", "-c", "echo $CI_SCRIPT | base64 -d | /bin/sh -e"]`. +You can also use a custom shell with `CI_SCRIPT` (Base64-encoded) if you set `commands`. + +### `environment` + +Woodpecker provides the ability to pass environment variables to individual steps. + +For more details, check the [environment docs](./50-environment.md). + +### `secrets` + +Woodpecker provides the ability to store named parameters external to the YAML configuration file, in a central secret store. These secrets can be passed to individual steps of the workflow at runtime. + +For more details, check the [secrets docs](./40-secrets.md). + +### `failure` + +Some of the steps may be allowed to fail without causing the whole workflow and therefore pipeline to report a failure (e.g., a step executing a linting check). To enable this, add `failure: ignore` to your step. If Woodpecker encounters an error while executing the step, it will report it as failed but still executes the next steps of the workflow, if any, without affecting the status of the workflow. + +```diff + steps: + - name: backend + image: golang + commands: + - go build + - go test ++ failure: ignore +``` + +### `when` - Conditional Execution + +Woodpecker supports defining a list of conditions for a step by using a `when` block. If at least one of the conditions in the `when` block evaluate to true the step is executed, otherwise it is skipped. A condition is evaluated to true if _all_ subconditions are true. +A condition can be a check like: + +```diff + steps: + - name: slack + image: plugins/slack + settings: + channel: dev ++ when: ++ - event: pull_request ++ repo: test/test ++ - event: push ++ branch: main +``` + +The `slack` step is executed if one of these conditions is met: + +1. The pipeline is executed from a pull request in the repo `test/test` +2. The pipeline is executed from a push to `maiǹ` + +#### `repo` + +Example conditional execution by repository: + +```diff + steps: + - name: slack + image: plugins/slack + settings: + channel: dev ++ when: ++ - repo: test/test +``` + +#### `branch` + +:::note +Branch conditions are not applied to tags. +::: + +Example conditional execution by branch: + +```diff + steps: + - name: slack + image: plugins/slack + settings: + channel: dev ++ when: ++ - branch: main +``` + +> The step now triggers on main branch, but also if the target branch of a pull request is `main`. Add an event condition to limit it further to pushes on main only. + +Execute a step if the branch is `main` or `develop`: + +```yaml +when: + - branch: [main, develop] +``` + +Execute a step if the branch starts with `prefix/*`: + +```yaml +when: + - branch: prefix/* +``` + +The branch matching is done using [doublestar](https://github.com/bmatcuk/doublestar/#usage), note that a pattern starting with `*` should be put between quotes and a literal `/` needs to be escaped. A few examples: + +- `*\\/*` to match patterns with exactly 1 `/` +- `*\\/**` to match patters with at least 1 `/` +- `*` to match patterns without `/` +- `**` to match everything + +Execute a step using custom include and exclude logic: + +```yaml +when: + - branch: + include: [main, release/*] + exclude: [release/1.0.0, release/1.1.*] +``` + +#### `event` + +Available events: `push`, `pull_request`, `pull_request_closed`, `tag`, `release`, `deployment`, `cron`, `manual` + +Execute a step if the build event is a `tag`: + +```yaml +when: + - event: tag +``` + +Execute a step if the pipeline event is a `push` to a specified branch: + +```diff +when: + - event: push ++ branch: main +``` + +Execute a step for multiple events: + +```yaml +when: + - event: [push, tag, deployment] +``` + +#### `cron` + +This filter **only** applies to cron events and filters based on the name of a cron job. + +Make sure to have a `event: cron` condition in the `when`-filters as well. + +```yaml +when: + - event: cron + cron: sync_* # name of your cron job +``` + +[Read more about cron](./45-cron.md) + +#### `ref` + +The `ref` filter compares the git reference against which the workflow is executed. +This allows you to filter, for example, tags that must start with **v**: + +```yaml +when: + - event: tag + ref: refs/tags/v* +``` + +#### `status` + +There are use cases for executing steps on failure, such as sending notifications for failed workflow / pipeline. Use the status constraint to execute steps even when the workflow fails: + +```diff + steps: + - name: slack + image: plugins/slack + settings: + channel: dev ++ when: ++ - status: [ success, failure ] +``` + +#### `platform` + +:::note +This condition should be used in conjunction with a [matrix](./30-matrix-workflows.md#example-matrix-pipeline-using-multiple-platforms) workflow as a regular workflow will only be executed by a single agent which only has one arch. +::: + +Execute a step for a specific platform: + +```yaml +when: + - platform: linux/amd64 +``` + +Execute a step for a specific platform using wildcards: + +```yaml +when: + - platform: [linux/*, windows/amd64] +``` + +#### `matrix` + +Execute a step for a single matrix permutation: + +```yaml +when: + - matrix: + GO_VERSION: 1.5 + REDIS_VERSION: 2.8 +``` + +#### `instance` + +Execute a step only on a certain Woodpecker instance matching the specified hostname: + +```yaml +when: + - instance: stage.woodpecker.company.com +``` + +#### `path` + +:::info +Path conditions are applied only to **push** and **pull_request** events. +It is currently **only available** for GitHub, GitLab and Gitea (version 1.18.0 and newer) +::: + +Execute a step only on a pipeline with certain files being changed: + +```yaml +when: + - path: 'src/*' +``` + +You can use [glob patterns](https://github.com/bmatcuk/doublestar#patterns) to match the changed files and specify if the step should run if a file matching that pattern has been changed `include` or if some files have **not** been changed `exclude`. + +For pipelines without file changes (empty commits or on events without file changes like `tag`), you can use `on_empty` to set whether this condition should be **true** _(default)_ or **false** in these cases. + +```yaml +when: + - path: + include: ['.woodpecker/*.yaml', '*.ini'] + exclude: ['*.md', 'docs/**'] + ignore_message: '[ALL]' + on_empty: true +``` + +:::info +Passing a defined ignore-message like `[ALL]` inside the commit message will ignore all path conditions and the `on_empty` setting. +::: + +#### `evaluate` + +Execute a step only if the provided evaluate expression is equal to true. Both built-in [`CI_`](./50-environment.md#built-in-environment-variables) and custom variables can be used inside the expression. + +The expression syntax can be found in [the docs](https://github.com/expr-lang/expr/blob/master/docs/language-definition.md) of the underlying library. + +Run on pushes to the default branch for the repository `owner/repo`: + +```yaml +when: + - evaluate: 'CI_PIPELINE_EVENT == "push" && CI_REPO == "owner/repo" && CI_COMMIT_BRANCH == CI_REPO_DEFAULT_BRANCH' +``` + +Run on commits created by user `woodpecker-ci`: + +```yaml +when: + - evaluate: 'CI_COMMIT_AUTHOR == "woodpecker-ci"' +``` + +Skip all commits containing `please ignore me` in the commit message: + +```yaml +when: + - evaluate: 'not (CI_COMMIT_MESSAGE contains "please ignore me")' +``` + +Run on pull requests with the label `deploy`: + +```yaml +when: + - evaluate: 'CI_COMMIT_PULL_REQUEST_LABELS contains "deploy"' +``` + +Skip step only if `SKIP=true`, run otherwise or if undefined: + +```yaml +when: + - evaluate: 'SKIP != "true"' +``` + +### `depends_on` + +Normally steps of a workflow are executed serially in the order in which they are defined. As soon as you set `depends_on` for a step a [directed acyclic graph](https://en.wikipedia.org/wiki/Directed_acyclic_graph) will be used and all steps of the workflow will be executed in parallel besides the steps that have a dependency set to another step using `depends_on`: + +```diff + steps: + - name: build # build will be executed immediately + image: golang + commands: + - go build + + - name: deploy + image: plugins/docker + settings: + repo: foo/bar ++ depends_on: [build, test] # deploy will be executed after build and test finished + + - name: test # test will be executed immediately as no dependencies are set + image: golang + commands: + - go test +``` + +:::note +You can define a step to start immediately without dependencies by adding an empty `depends_on: []`. By setting `depends_on` on a single step all other steps will be immediately executed as well if no further dependencies are specified. + +```yaml +steps: + - name: check code format + image: mstruebing/editorconfig-checker + depends_on: [] # enable parallel steps + ... +``` + +::: + +### `volumes` + +Woodpecker gives the ability to define Docker volumes in the YAML. You can use this parameter to mount files or folders on the host machine into your containers. + +For more details check the [volumes docs](./70-volumes.md). + +### `detach` + +Woodpecker gives the ability to detach steps to run them in background until the workflow finishes. + +For more details check the [service docs](./60-services.md#detachment). + +### `directory` + +Using `directory`, you can set a subdirectory of your repository or an absolute path inside the Docker container in which your commands will run. + +## `services` + +Woodpecker can provide service containers. They can for example be used to run databases or cache containers during the execution of workflow. + +For more details check the [services docs](./60-services.md). + +## `workspace` + +The workspace defines the shared volume and working directory shared by all workflow steps. The default workspace matches the pattern `/woodpecker/src/github.com/octocat/hello-world`, based on your repository URL. + +The workspace can be customized using the workspace block in the YAML file: + +```diff ++workspace: ++ base: /go ++ path: src/github.com/octocat/hello-world + + steps: + - name: build + image: golang:latest + commands: + - go get + - go test +``` + +The base attribute defines a shared base volume available to all steps. This ensures your source code, dependencies and compiled binaries are persisted and shared between steps. + +```diff + workspace: ++ base: /go + path: src/github.com/octocat/hello-world + + steps: + - name: deps + image: golang:latest + commands: + - go get + - go test + - name: build + image: node:latest + commands: + - go build +``` + +This would be equivalent to the following docker commands: + +```bash +docker volume create my-named-volume + +docker run --volume=my-named-volume:/go golang:latest +docker run --volume=my-named-volume:/go node:latest +``` + +The path attribute defines the working directory of your build. This is where your code is cloned and will be the default working directory of every step in your build process. The path must be relative and is combined with your base path. + +```diff + workspace: + base: /go ++ path: src/github.com/octocat/hello-world +``` + +```bash +git clone https://github.com/octocat/hello-world \ + /go/src/github.com/octocat/hello-world +``` + + + +## `matrix` + + + +Woodpecker has integrated support for matrix builds. Woodpecker executes a separate build task for each combination in the matrix, allowing you to build and test a single commit against multiple configurations. + +For more details check the [matrix build docs](./30-matrix-workflows.md). + +## `labels` + +You can set labels for your workflow to select an agent to execute the workflow on. An agent will pick up and run a workflow when **every** label assigned to it matches the agents labels. + +To set additional agent labels, check the [agent configuration options](../30-administration/15-agent-config.md#woodpecker_filter_labels). Agents will have at least four default labels: `platform=agent-os/agent-arch`, `hostname=my-agent`, `backend=docker` (type of the agent backend) and `repo=*`. Agents can use a `*` as a wildcard for a label. For example `repo=*` will match every repo. + +Workflow labels with an empty value will be ignored. +By default, each workflow has at least the `repo=your-user/your-repo-name` label. If you have set the [platform attribute](#platform) for your workflow it will have a label like `platform=your-os/your-arch` as well. + +You can add additional labels as a key value map: + +```diff ++labels: ++ location: europe # only agents with `location=europe` or `location=*` will be used ++ weather: sun ++ hostname: "" # this label will be ignored as it is empty + + steps: + - name: build + image: golang + commands: + - go build + - go test +``` + +### Filter by platform + +To configure your workflow to only be executed on an agent with a specific platform, you can use the `platform` key. +Have a look at the official [go docs](https://go.dev/doc/install/source) for the available platforms. The syntax of the platform is `GOOS/GOARCH` like `linux/arm64` or `linux/amd64`. + +Example: + +Assuming we have two agents, one `linux/arm` and one `linux/amd64`. Previously this workflow would have executed on **either agent**, as Woodpecker is not fussy about where it runs the workflows. By setting the following option it will only be executed on an agent with the platform `linux/arm64`. + +```diff ++labels: ++ platform: linux/arm64 + + steps: + [...] +``` + +## `variables` + +Woodpecker supports using [YAML anchors & aliases](https://yaml.org/spec/1.2.2/#3222-anchors-and-aliases) as variables in the workflow configuration. + +For more details and examples check the [Advanced usage docs](./90-advanced-usage.md) + +## `clone` + +Woodpecker automatically configures a default clone step if not explicitly defined. When using the `local` backend, the [plugin-git](https://github.com/woodpecker-ci/plugin-git) binary must be on your `$PATH` for the default clone step to work. If not, you can still write a manual clone step. + +You can manually configure the clone step in your workflow for customization: + +```diff ++clone: ++ git: ++ image: woodpeckerci/plugin-git + + steps: + - name: build + image: golang + commands: + - go build + - go test +``` + +Example configuration to override depth: + +```diff + clone: + - name: git + image: woodpeckerci/plugin-git ++ settings: ++ partial: false ++ depth: 50 +``` + +Example configuration to use a custom clone plugin: + +```diff + clone: + - name: git ++ image: octocat/custom-git-plugin +``` + +Example configuration to clone Mercurial repository: + +```diff + clone: + - name: hg ++ image: plugins/hg ++ settings: ++ path: bitbucket.org/foo/bar +``` + +### Git Submodules + +To use the credentials that cloned the repository to clone it's submodules, update `.gitmodules` to use `https` instead of `git`: + +```diff + [submodule "my-module"] + path = my-module +-url = git@github.com:octocat/my-module.git ++url = https://github.com/octocat/my-module.git +``` + +To use the ssh git url in `.gitmodules` for users cloning with ssh, and also use the https url in Woodpecker, add `submodule_override`: + +```diff + clone: + - name: git + image: woodpeckerci/plugin-git + settings: + recursive: true ++ submodule_override: ++ my-module: https://github.com/octocat/my-module.git + +steps: + ... +``` + +## `skip_clone` + +By default Woodpecker is automatically adding a clone step. This clone step can be configured by the [clone](#clone) property. If you do not need a `clone` step at all you can skip it using: + +```yaml +skip_clone: true +``` + +## `when` - Global workflow conditions + +Woodpecker gives the ability to skip whole workflows ([not just steps](#when---conditional-execution)) based on certain conditions by a `when` block. If all conditions in the `when` block evaluate to true the workflow is executed, otherwise it is skipped, but treated as successful and other workflows depending on it will still continue. + +For more information about the specific filters, take a look at the [step-specific `when` filters](#when---conditional-execution). + +Example conditional execution by branch: + +```diff ++when: ++ branch: main ++ + steps: + - name: slack + image: plugins/slack + settings: + channel: dev +``` + +The workflow now triggers on `main`, but also if the target branch of a pull request is `main`. + + + +## `depends_on` + + + +Woodpecker supports to define multiple workflows for a repository. Those workflows will run independent from each other. To depend them on each other you can use the [`depends_on`](./25-workflows.md#flow-control) keyword. + +## `runs_on` + +Workflows that should run even on failure should set the `runs_on` tag. See [here](./25-workflows.md#flow-control) for an example. + +## Privileged mode + +Woodpecker gives the ability to configure privileged mode in the YAML. You can use this parameter to launch containers with escalated capabilities. + +:::info +Privileged mode is only available to trusted repositories and for security reasons should only be used in private environments. See [project settings](./75-project-settings.md#trusted) to enable trusted mode. +::: + +```diff + steps: + - name: build + image: docker + environment: + - DOCKER_HOST=tcp://docker:2375 + commands: + - docker --tls=false ps + + - name: services + docker: + image: docker:dind + commands: dockerd-entrypoint.sh --storage-driver=vfs --tls=false ++ privileged: true +``` diff --git a/docs/versioned_docs/version-2.5/20-usage/25-workflows.md b/docs/versioned_docs/version-2.5/20-usage/25-workflows.md new file mode 100644 index 0000000000..5adc39f853 --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/25-workflows.md @@ -0,0 +1,118 @@ +# Workflows + +A pipeline has at least one workflow. A workflow is a set of steps that are executed in sequence using the same workspace which is a shared folder containing the repository and all the generated data from previous steps. + +In case there is a single configuration in `.woodpecker.yaml` Woodpecker will create a pipeline with a single workflow. + +By placing the configurations in a folder which is by default named `.woodpecker/` Woodpecker will create a pipeline with multiple workflows each named by the file they are defined in. Only `.yml` and `.yaml` files will be used and files in any subfolders like `.woodpecker/sub-folder/test.yaml` will be ignored. + +You can also set some custom path like `.my-ci/pipelines/` instead of `.woodpecker/` in the [project settings](./75-project-settings.md). + +## Benefits of using workflows + +- faster lint/test feedback, the workflow doesn't have to run fully to have a lint status pushed to the remote +- better organization of a pipeline along various concerns using one workflow for: testing, linting, building and deploying +- utilizing more agents to speed up the execution of the whole pipeline + +## Example workflow definition + +:::warning +Please note that files are only shared between steps of the same workflow (see [File changes are incremental](./20-workflow-syntax.md#file-changes-are-incremental)). That means you cannot access artifacts e.g. from the `build` workflow in the `deploy` workflow. +If you still need to pass artifacts between the workflows you need use some storage [plugin](./51-plugins/51-overview.md) (e.g. one which stores files in an Amazon S3 bucket). +::: + +```bash +.woodpecker/ +├── .build.yaml +├── .deploy.yaml +├── .lint.yaml +└── .test.yaml +``` + +```yaml title=".woodpecker/.build.yaml" +steps: + - name: build + image: debian:stable-slim + commands: + - echo building + - sleep 5 +``` + +```yaml title=".woodpecker/.deploy.yaml" +steps: + - name: deploy + image: debian:stable-slim + commands: + - echo deploying + +depends_on: + - lint + - build + - test +``` + +```yaml title=".woodpecker/.test.yaml" +steps: + - name: test + image: debian:stable-slim + commands: + - echo testing + - sleep 5 + +depends_on: + - build +``` + +```yaml title=".woodpecker/.lint.yaml" +steps: + - name: lint + image: debian:stable-slim + commands: + - echo linting + - sleep 5 +``` + +## Status lines + +Each workflow will report its own status back to your forge. + +## Flow control + +The workflows run in parallel on separate agents and share nothing. + +Dependencies between workflows can be set with the `depends_on` element. A workflow doesn't execute until all of its dependencies finished successfully. + +The name for a `depends_on` entry is the filename without the path, leading dots and without the file extension `.yml` or `.yaml`. If the project config for example uses `.woodpecker/` as path for CI files with a file named `.woodpecker/.lint.yaml` the corresponding `depends_on` entry would be `lint`. + +```diff + steps: + - name: deploy + image: debian:stable-slim + commands: + - echo deploying + ++depends_on: ++ - lint ++ - build ++ - test +``` + +Workflows that need to run even on failures should set the `runs_on` tag. + +```diff + steps: + - name: notify + image: debian:stable-slim + commands: + - echo notifying + + depends_on: + - deploy + ++runs_on: [ success, failure ] +``` + +:::info +Some workflows don't need the source code, like creating a notification on failure. +Read more about `skip_clone` at [pipeline syntax](./20-workflow-syntax.md#skip_clone) +::: diff --git a/docs/versioned_docs/version-2.5/20-usage/30-matrix-workflows.md b/docs/versioned_docs/version-2.5/20-usage/30-matrix-workflows.md new file mode 100644 index 0000000000..9548205239 --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/30-matrix-workflows.md @@ -0,0 +1,143 @@ +# Matrix workflows + +Woodpecker has integrated support for matrix workflows. Woodpecker executes a separate workflow for each combination in the matrix, allowing you to build and test against multiple configurations. + +Example matrix definition: + +```yaml +matrix: + GO_VERSION: + - 1.4 + - 1.3 + REDIS_VERSION: + - 2.6 + - 2.8 + - 3.0 +``` + +Example matrix definition containing only specific combinations: + +```yaml +matrix: + include: + - GO_VERSION: 1.4 + REDIS_VERSION: 2.8 + - GO_VERSION: 1.5 + REDIS_VERSION: 2.8 + - GO_VERSION: 1.6 + REDIS_VERSION: 3.0 +``` + +## Interpolation + +Matrix variables are interpolated in the YAML using the `${VARIABLE}` syntax, before the YAML is parsed. This is an example YAML file before interpolating matrix parameters: + +```yaml +matrix: + GO_VERSION: + - 1.4 + - 1.3 + DATABASE: + - mysql:8 + - mysql:5 + - mariadb:10.1 + +steps: + - name: build + image: golang:${GO_VERSION} + commands: + - go get + - go build + - go test + +services: + - name: database + image: ${DATABASE} +``` + +Example YAML file after injecting the matrix parameters: + +```diff + steps: + - name: build +- image: golang:${GO_VERSION} ++ image: golang:1.4 + commands: + - go get + - go build + - go test ++ environment: ++ - GO_VERSION=1.4 ++ - DATABASE=mysql:8 + + services: + - name: database +- image: ${DATABASE} ++ image: mysql:8 +``` + +## Examples + +### Example matrix pipeline based on Docker image tag + +```yaml +matrix: + TAG: + - 1.7 + - 1.8 + - latest + +steps: + - name: build + image: golang:${TAG} + commands: + - go build + - go test +``` + +### Example matrix pipeline based on container image + +```yaml +matrix: + IMAGE: + - golang:1.7 + - golang:1.8 + - golang:latest + +steps: + - name: build + image: ${IMAGE} + commands: + - go build + - go test +``` + +### Example matrix pipeline using multiple platforms + +```yaml +matrix: + platform: + - linux/amd64 + - linux/arm64 + +labels: + platform: ${platform} + +steps: + - name: test + image: alpine + commands: + - echo "I am running on ${platform}" + + - name: test-arm-only + image: alpine + commands: + - echo "I am running on ${platform}" + - echo "Arm is cool!" + when: + platform: linux/arm* +``` + +:::note +If you want to control the architecture of a pipeline on a Kubernetes runner, see [the nodeSelector documentation of the Kubernetes backend](../30-administration/22-backends/40-kubernetes.md#node-selector). +::: diff --git a/docs/versioned_docs/version-2.5/20-usage/40-secrets.md b/docs/versioned_docs/version-2.5/20-usage/40-secrets.md new file mode 100644 index 0000000000..1b55d9ce15 --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/40-secrets.md @@ -0,0 +1,133 @@ +# Secrets + +Woodpecker provides the ability to store named parameters external to the YAML configuration file, in a central secret store. These secrets can be passed to individual steps of the pipeline at runtime. + +Woodpecker provides three different levels to add secrets to your pipeline. The following list shows the priority of the different levels. If a secret is defined in multiple levels, will be used following this priorities: Repository secrets > Organization secrets > Global secrets. + +1. **Repository secrets**: They are available to all pipelines of an repository. +2. **Organization secrets**: They are available to all pipelines of an organization. +3. **Global secrets**: Can be configured by an instance admin. + They are available to all pipelines of the **whole** Woodpecker instance and should therefore **only** be used for secrets that are allowed to be read by **all** users. + +## Usage + +### Use secrets in commands + +Secrets are exposed to your pipeline steps and plugins as uppercase environment variables and can therefore be referenced in the commands section of your pipeline, +once their usage is declared in the `secrets` section: + +```diff + steps: + - name: docker + image: docker + commands: ++ - echo $docker_username ++ - echo $DOCKER_PASSWORD ++ secrets: [ docker_username, DOCKER_PASSWORD ] +``` + +The case of the environment variables is not changed, but secret matching is done case-insensitively. In the example above, `DOCKER_PASSWORD` would also match if the secret is called `docker_password`. + +### Use secrets in settings and environment + +You can set an setting or environment value from secrets using the `from_secret` syntax. + +In this example, the secret named `secret_token` would be passed to the setting named `token`,which will be available in the plugin as environment variable named `PLUGIN_TOKEN` (See [plugins](./51-plugins/20-creating-plugins.md#settings) for details), and to the environment variable `TOKEN_ENV`. + +```diff + steps: + - name: docker + image: my-plugin ++ environment: ++ TOKEN_ENV: ++ from_secret: secret_token ++ settings: ++ token: ++ from_secret: secret_token +``` + +### Note about parameter pre-processing + +Please note parameter expressions are subject to pre-processing. When using secrets in parameter expressions they should be escaped. + +```diff + steps: + - name: docker + image: docker + commands: +- - echo ${docker_username} +- - echo ${DOCKER_PASSWORD} ++ - echo $${docker_username} ++ - echo $${DOCKER_PASSWORD} + secrets: [ docker_username, DOCKER_PASSWORD ] +``` + +### Use in Pull Requests events + +Secrets are not exposed to pull requests by default. You can override this behavior by creating the secret and enabling the `pull_request` event type, either in UI or by CLI, see below. + +:::note +Please be careful when exposing secrets to pull requests. If your repository is open source and accepts pull requests your secrets are not safe. A bad actor can submit a malicious pull request that exposes your secrets. +::: + +## Image filter + +To prevent abusing your secrets from malicious usage, you can limit a secret to a list of images. If enabled they are not available to any other plugin (steps without user-defined commands). If you or an attacker defines explicit commands, the secrets will not be available to the container to prevent leaking them. + +## Adding Secrets + +Secrets are added to the Woodpecker in the UI or with the CLI. + +### CLI Examples + +Create the secret using default settings. The secret will be available to all images in your pipeline, and will be available to all push, tag, and deployment events (not pull request events). + +```bash +woodpecker-cli secret add \ + -repository octocat/hello-world \ + -name aws_access_key_id \ + -value +``` + +Create the secret and limit to a single image: + +```diff + woodpecker-cli secret add \ + -repository octocat/hello-world \ ++ -image plugins/s3 \ + -name aws_access_key_id \ + -value +``` + +Create the secrets and limit to a set of images: + +```diff + woodpecker-cli secret add \ + -repository octocat/hello-world \ ++ -image plugins/s3 \ ++ -image peloton/woodpecker-ecs \ + -name aws_access_key_id \ + -value +``` + +Create the secret and enable for multiple hook events: + +```diff + woodpecker-cli secret add \ + -repository octocat/hello-world \ + -image plugins/s3 \ ++ -event pull_request \ ++ -event push \ ++ -event tag \ + -name aws_access_key_id \ + -value +``` + +Loading secrets from file using curl `@` syntax. This is the recommended approach for loading secrets from file to preserve newlines: + +```diff + woodpecker-cli secret add \ + -repository octocat/hello-world \ + -name ssh_key \ ++ -value @/root/ssh/id_rsa +``` diff --git a/docs/versioned_docs/version-2.5/20-usage/41-registries.md b/docs/versioned_docs/version-2.5/20-usage/41-registries.md new file mode 100644 index 0000000000..8508da8767 --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/41-registries.md @@ -0,0 +1,73 @@ +# Registries + +Woodpecker provides the ability to add container registries in the settings of your repository. Adding a registry allows you to authenticate and pull private images from a container registry when using these images as a step inside your pipeline. Using registry credentials can also help you avoid rate limiting when pulling images from public registries. + +## Images from private registries + +You must provide registry credentials in the UI in order to pull private container images defined in your YAML configuration file. + +These credentials are never exposed to your steps, which means they cannot be used to push, and are safe to use with pull requests, for example. Pushing to a registry still requires setting credentials for the appropriate plugin. + +Example configuration using a private image: + +```diff + steps: + - name: build ++ image: gcr.io/custom/golang + commands: + - go build + - go test +``` + +Woodpecker matches the registry hostname to each image in your YAML. If the hostnames match, the registry credentials are used to authenticate to your registry and pull the image. Note that registry credentials are used by the Woodpecker agent and are never exposed to your build containers. + +Example registry hostnames: + +- Image `gcr.io/foo/bar` has hostname `gcr.io` +- Image `foo/bar` has hostname `docker.io` +- Image `qux.com:8000/foo/bar` has hostname `qux.com:8000` + +Example registry hostname matching logic: + +- Hostname `gcr.io` matches image `gcr.io/foo/bar` +- Hostname `docker.io` matches `golang` +- Hostname `docker.io` matches `library/golang` +- Hostname `docker.io` matches `bradyrydzewski/golang` +- Hostname `docker.io` matches `bradyrydzewski/golang:latest` + +:::note +The flow above doesn't work in Kubernetes. There is [workaround](../30-administration/22-backends/40-kubernetes.md#images-from-private-registries). +::: + +## Global registry support + +To make a private registry globally available, check the [server configuration docs](../30-administration/10-server-config.md#global-registry-setting). + +## GCR registry support + +For specific details on configuring access to Google Container Registry, please view the docs [here](https://cloud.google.com/container-registry/docs/advanced-authentication#using_a_json_key_file). + +## Local Images + +:::warning +For this, privileged rights are needed only available to admins. In addition, this only works when using a single agent. +::: + +It's possible to build a local image by mounting the docker socket as a volume. + +With a `Dockerfile` at the root of the project: + +```yaml +steps: + - name: build-image + image: docker + commands: + - docker build --rm -t local/project-image . + volumes: + - /var/run/docker.sock:/var/run/docker.sock + + - name: build-project + image: local/project-image + commands: + - ./build.sh +``` diff --git a/docs/versioned_docs/version-2.5/20-usage/45-cron.md b/docs/versioned_docs/version-2.5/20-usage/45-cron.md new file mode 100644 index 0000000000..bbf23bdf04 --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/45-cron.md @@ -0,0 +1,34 @@ +# Cron + +To configure cron jobs you need at least push access to the repository. + +## Add a new cron job + +1. To create a new cron job adjust your pipeline config(s) and add the event filter to all steps you would like to run by the cron job: + + ```diff + steps: + - name: sync_locales + image: weblate_sync + settings: + url: example.com + token: + from_secret: weblate_token + + when: + + event: cron + + cron: "name of the cron job" # if you only want to execute this step by a specific cron job + ``` + +2. Create a new cron job in the repository settings: + + ![cron settings](./cron-settings.png) + + The supported schedule syntax can be found at . If you need general understanding of the cron syntax is a good place to start and experiment. + + Examples: `@every 5m`, `@daily`, `0 30 * * * *` ... + + :::info + Woodpeckers cron syntax starts with seconds instead of minutes as used by most linux cron schedulers. + + Example: "At minute 30 every hour" would be `0 30 * * * *` instead of `30 * * * *` + ::: diff --git a/docs/versioned_docs/version-2.5/20-usage/50-environment.md b/docs/versioned_docs/version-2.5/20-usage/50-environment.md new file mode 100644 index 0000000000..299bb8f53d --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/50-environment.md @@ -0,0 +1,226 @@ +# Environment variables + +Woodpecker provides the ability to pass environment variables to individual pipeline steps. Note that these can't overwrite any existing, built-in variables. Example pipeline step with custom environment variables: + +```diff + steps: + - name: build + image: golang ++ environment: ++ CGO: 0 ++ GOOS: linux ++ GOARCH: amd64 + commands: + - go build + - go test +``` + +Please note that the environment section is not able to expand environment variables. If you need to expand variables they should be exported in the commands section. + +```diff + steps: + - name: build + image: golang +- environment: +- - PATH=$PATH:/go + commands: ++ - export PATH=$PATH:/go + - go build + - go test +``` + +:::warning +`${variable}` expressions are subject to pre-processing. If you do not want the pre-processor to evaluate your expression it must be escaped: +::: + +```diff + steps: + - name: build + image: golang + commands: +- - export PATH=${PATH}:/go ++ - export PATH=$${PATH}:/go + - go build + - go test +``` + +## Built-in environment variables + +This is the reference list of all environment variables available to your pipeline containers. These are injected into your pipeline step and plugins containers, at runtime. + +| NAME | Description | +| -------------------------------- | ------------------------------------------------------------------------------------------------------------------ | +| `CI` | CI environment name (value: `woodpecker`) | +| | **Repository** | +| `CI_REPO` | repository full name `/` | +| `CI_REPO_OWNER` | repository owner | +| `CI_REPO_NAME` | repository name | +| `CI_REPO_REMOTE_ID` | repository remote ID, is the UID it has in the forge | +| `CI_REPO_SCM` | repository SCM (git) | +| `CI_REPO_URL` | repository web URL | +| `CI_REPO_CLONE_URL` | repository clone URL | +| `CI_REPO_CLONE_SSH_URL` | repository SSH clone URL | +| `CI_REPO_DEFAULT_BRANCH` | repository default branch (main) | +| `CI_REPO_PRIVATE` | repository is private | +| `CI_REPO_TRUSTED` | repository is trusted | +| | **Current Commit** | +| `CI_COMMIT_SHA` | commit SHA | +| `CI_COMMIT_REF` | commit ref | +| `CI_COMMIT_REFSPEC` | commit ref spec | +| `CI_COMMIT_BRANCH` | commit branch (equals target branch for pull requests) | +| `CI_COMMIT_SOURCE_BRANCH` | commit source branch (empty if event is not `pull_request` or `pull_request_closed`) | +| `CI_COMMIT_TARGET_BRANCH` | commit target branch (empty if event is not `pull_request` or `pull_request_closed`) | +| `CI_COMMIT_TAG` | commit tag name (empty if event is not `tag`) | +| `CI_COMMIT_PULL_REQUEST` | commit pull request number (empty if event is not `pull_request` or `pull_request_closed`) | +| `CI_COMMIT_PULL_REQUEST_LABELS` | labels assigned to pull request (empty if event is not `pull_request` or `pull_request_closed`) | +| `CI_COMMIT_MESSAGE` | commit message | +| `CI_COMMIT_AUTHOR` | commit author username | +| `CI_COMMIT_AUTHOR_EMAIL` | commit author email address | +| `CI_COMMIT_AUTHOR_AVATAR` | commit author avatar | +| `CI_COMMIT_PRERELEASE` | release is a pre-release (empty if event is not `release`) | +| | **Current pipeline** | +| `CI_PIPELINE_NUMBER` | pipeline number | +| `CI_PIPELINE_PARENT` | number of parent pipeline | +| `CI_PIPELINE_EVENT` | pipeline event (see [pipeline events](../20-usage/15-terminology/index.md#pipeline-events)) | +| `CI_PIPELINE_URL` | link to the web UI for the pipeline | +| `CI_PIPELINE_FORGE_URL` | link to the forge's web UI for the commit(s) or tag that triggered the pipeline | +| `CI_PIPELINE_DEPLOY_TARGET` | pipeline deploy target for `deployment` events (i.e. production) | +| `CI_PIPELINE_DEPLOY_TASK` | pipeline deploy task for `deployment` events (i.e. migration) | +| `CI_PIPELINE_STATUS` | pipeline status (success, failure) | +| `CI_PIPELINE_CREATED` | pipeline created UNIX timestamp | +| `CI_PIPELINE_STARTED` | pipeline started UNIX timestamp | +| `CI_PIPELINE_FINISHED` | pipeline finished UNIX timestamp | +| `CI_PIPELINE_FILES` | changed files (empty if event is not `push` or `pull_request`), it is undefined if more than 500 files are touched | +| | **Current workflow** | +| `CI_WORKFLOW_NAME` | workflow name | +| | **Current step** | +| `CI_STEP_NAME` | step name | +| `CI_STEP_NUMBER` | step number | +| `CI_STEP_STATUS` | step status (success, failure) | +| `CI_STEP_STARTED` | step started UNIX timestamp | +| `CI_STEP_FINISHED` | step finished UNIX timestamp | +| `CI_STEP_URL` | URL to step in UI | +| | **Previous commit** | +| `CI_PREV_COMMIT_SHA` | previous commit SHA | +| `CI_PREV_COMMIT_REF` | previous commit ref | +| `CI_PREV_COMMIT_REFSPEC` | previous commit ref spec | +| `CI_PREV_COMMIT_BRANCH` | previous commit branch | +| `CI_PREV_COMMIT_SOURCE_BRANCH` | previous commit source branch | +| `CI_PREV_COMMIT_TARGET_BRANCH` | previous commit target branch | +| `CI_PREV_COMMIT_URL` | previous commit link in forge | +| `CI_PREV_COMMIT_MESSAGE` | previous commit message | +| `CI_PREV_COMMIT_AUTHOR` | previous commit author username | +| `CI_PREV_COMMIT_AUTHOR_EMAIL` | previous commit author email address | +| `CI_PREV_COMMIT_AUTHOR_AVATAR` | previous commit author avatar | +| | **Previous pipeline** | +| `CI_PREV_PIPELINE_NUMBER` | previous pipeline number | +| `CI_PREV_PIPELINE_PARENT` | previous pipeline number of parent pipeline | +| `CI_PREV_PIPELINE_EVENT` | previous pipeline event (see [pipeline events](../20-usage/15-terminology/index.md#pipeline-events)) | +| `CI_PREV_PIPELINE_URL` | previous pipeline link in CI | +| `CI_PREV_PIPELINE_FORGE_URL` | previous pipeline link to event in forge | +| `CI_PREV_PIPELINE_DEPLOY_TARGET` | previous pipeline deploy target for `deployment` events (ie production) | +| `CI_PREV_PIPELINE_DEPLOY_TASK` | previous pipeline deploy task for `deployment` events (ie migration) | +| `CI_PREV_PIPELINE_STATUS` | previous pipeline status (success, failure) | +| `CI_PREV_PIPELINE_CREATED` | previous pipeline created UNIX timestamp | +| `CI_PREV_PIPELINE_STARTED` | previous pipeline started UNIX timestamp | +| `CI_PREV_PIPELINE_FINISHED` | previous pipeline finished UNIX timestamp | +| |   | +| `CI_WORKSPACE` | Path of the workspace where source code gets cloned to | +| | **System** | +| `CI_SYSTEM_NAME` | name of the CI system: `woodpecker` | +| `CI_SYSTEM_URL` | link to CI system | +| `CI_SYSTEM_HOST` | hostname of CI server | +| `CI_SYSTEM_VERSION` | version of the server | +| | **Forge** | +| `CI_FORGE_TYPE` | name of forge (gitea, github, ...) | +| `CI_FORGE_URL` | root URL of configured forge | +| | **Internal** - Please don't use! | +| `CI_SCRIPT` | Internal script path. Used to call pipeline step commands. | +| `CI_NETRC_USERNAME` | Credentials for private repos to be able to clone data. (Only available for specific images) | +| `CI_NETRC_PASSWORD` | Credentials for private repos to be able to clone data. (Only available for specific images) | +| `CI_NETRC_MACHINE` | Credentials for private repos to be able to clone data. (Only available for specific images) | + +## Global environment variables + +If you want specific environment variables to be available in all of your pipelines use the `WOODPECKER_ENVIRONMENT` setting on the Woodpecker server. Note that these can't overwrite any existing, built-in variables. + +```ini +WOODPECKER_ENVIRONMENT=first_var:value1,second_var:value2 +``` + +These can be used, for example, to manage the image tag used by multiple projects. + +```ini +WOODPECKER_ENVIRONMENT=GOLANG_VERSION:1.18 +``` + +```diff + steps: + - name: build +- image: golang:1.18 ++ image: golang:${GOLANG_VERSION} + commands: + - [...] +``` + +## String Substitution + +Woodpecker provides the ability to substitute environment variables at runtime. This gives us the ability to use dynamic settings, commands and filters in our pipeline configuration. + +Example commit substitution: + +```diff + steps: + - name: docker + image: plugins/docker + settings: ++ tags: ${CI_COMMIT_SHA} +``` + +Example tag substitution: + +```diff + steps: + - name: docker + image: plugins/docker + settings: ++ tags: ${CI_COMMIT_TAG} +``` + +## String Operations + +Woodpecker also emulates bash string operations. This gives us the ability to manipulate the strings prior to substitution. Example use cases might include substring and stripping prefix or suffix values. + +| OPERATION | DESCRIPTION | +| ------------------ | ------------------------------------------------ | +| `${param}` | parameter substitution | +| `${param,}` | parameter substitution with lowercase first char | +| `${param,,}` | parameter substitution with lowercase | +| `${param^}` | parameter substitution with uppercase first char | +| `${param^^}` | parameter substitution with uppercase | +| `${param:pos}` | parameter substitution with substring | +| `${param:pos:len}` | parameter substitution with substring and length | +| `${param=default}` | parameter substitution with default | +| `${param##prefix}` | parameter substitution with prefix removal | +| `${param%%suffix}` | parameter substitution with suffix removal | +| `${param/old/new}` | parameter substitution with find and replace | + +Example variable substitution with substring: + +```diff + steps: + - name: docker + image: plugins/docker + settings: ++ tags: ${CI_COMMIT_SHA:0:8} +``` + +Example variable substitution strips `v` prefix from `v.1.0.0`: + +```diff + steps: + - name: docker + image: plugins/docker + settings: ++ tags: ${CI_COMMIT_TAG##v} +``` diff --git a/docs/versioned_docs/version-2.5/20-usage/51-plugins/20-creating-plugins.md b/docs/versioned_docs/version-2.5/20-usage/51-plugins/20-creating-plugins.md new file mode 100644 index 0000000000..8a0ea59207 --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/51-plugins/20-creating-plugins.md @@ -0,0 +1,139 @@ +# Creating plugins + +Creating a new plugin is simple: Build a Docker container which uses your plugin logic as the ENTRYPOINT. + +## Settings + +To allow users to configure the behavior of your plugin, you should use `settings:`. + +These are passed to your plugin as uppercase env vars with a `PLUGIN_` prefix. +Using a setting like `url` results in an env var named `PLUGIN_URL`. + +Characters like `-` are converted to an underscore (`_`). `some_String` gets `PLUGIN_SOME_STRING`. +CamelCase is not respected, `anInt` get `PLUGIN_ANINT`. + +### Basic settings + +Using any basic YAML type (scalar) will be converted into a string: + +| Setting | Environment value | +| -------------------- | ---------------------------- | +| `some-bool: false` | `PLUGIN_SOME_BOOL="false"` | +| `some_String: hello` | `PLUGIN_SOME_STRING="hello"` | +| `anInt: 3` | `PLUGIN_ANINT="3"` | + +### Complex settings + +It's also possible to use complex settings like this: + +```yaml +steps: + - name: plugin + image: foo/plugin + settings: + complex: + abc: 2 + list: + - 2 + - 3 +``` + +Values like this are converted to JSON and then passed to your plugin. In the example above, the environment variable `PLUGIN_COMPLEX` would contain `{"abc": "2", "list": [ "2", "3" ]}`. + +### Secrets + +Secrets should be passed as settings too. Therefore, users should use [`from_secret`](../40-secrets.md#use-secrets-in-settings-and-environment). + +## Plugin library + +For Go, we provide a plugin library you can use to get easy access to internal env vars and your settings. See . + +## Metadata + +In your documentation, you can use a Markdown header to define metadata for your plugin. This data is used by [our plugin index](/plugins). + +Supported metadata: + +- `name`: The plugin's full name +- `icon`: URL to your plugin's icon +- `description`: A short description of what it's doing +- `author`: Your name +- `tags`: List of keywords (e.g. `[git, clone]` for the clone plugin) +- `containerImage`: name of the container image +- `containerImageUrl`: link to the container image +- `url`: homepage or repository of your plugin + +If you want your plugin to be listed in the index, you should add as many fields as possible, but only `name` is required. + +## Example plugin + +This provides a brief tutorial for creating a Woodpecker webhook plugin, using simple shell scripting, to make HTTP requests during the build pipeline. + +### What end users will see + +The below example demonstrates how we might configure a webhook plugin in the YAML file: + +```yaml +steps: + - name: webhook + image: foo/webhook + settings: + url: https://example.com + method: post + body: | + hello world +``` + +### Write the logic + +Create a simple shell script that invokes curl using the YAML configuration parameters, which are passed to the script as environment variables in uppercase and prefixed with `PLUGIN_`. + +```bash +#!/bin/sh + +curl \ + -X ${PLUGIN_METHOD} \ + -d ${PLUGIN_BODY} \ + ${PLUGIN_URL} +``` + +### Package it + +Create a Dockerfile that adds your shell script to the image, and configures the image to execute your shell script as the main entrypoint. + +```dockerfile +# please pin the version, e.g. alpine:3.19 +FROM alpine +ADD script.sh /bin/ +RUN chmod +x /bin/script.sh +RUN apk -Uuv add curl ca-certificates +ENTRYPOINT /bin/script.sh +``` + +Build and publish your plugin to the Docker registry. Once published, your plugin can be shared with the broader Woodpecker community. + +```shell +docker build -t foo/webhook . +docker push foo/webhook +``` + +Execute your plugin locally from the command line to verify it is working: + +```shell +docker run --rm \ + -e PLUGIN_METHOD=post \ + -e PLUGIN_URL=https://example.com \ + -e PLUGIN_BODY="hello world" \ + foo/webhook +``` + +## Best practices + +- Build your plugin for different architectures to allow many users to use them. + At least, you should support `amd64` and `arm64`. +- Provide binaries for users using the `local` backend. + These should also be built for different OS/architectures. +- Use [built-in env vars](../50-environment.md#built-in-environment-variables) where possible. +- Do not use any configuration except settings (and internal env vars). This means: Don't require using [`environment`](../50-environment.md) and don't require specific secret names. +- Add a `docs.md` file, listing all your settings and plugin metadata ([example](https://github.com/woodpecker-ci/plugin-git/blob/main/docs.md)). +- Add your plugin to the [plugin index](/plugins) using your `docs.md` ([the example above in the index](https://woodpecker-ci.org/plugins/Git%20Clone)). diff --git a/docs/versioned_docs/version-2.5/20-usage/51-plugins/51-overview.md b/docs/versioned_docs/version-2.5/20-usage/51-plugins/51-overview.md new file mode 100644 index 0000000000..ab8db3df37 --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/51-plugins/51-overview.md @@ -0,0 +1,45 @@ +# Plugins + +Plugins are pipeline steps that perform pre-defined tasks and are configured as steps in your pipeline. Plugins can be used to deploy code, publish artifacts, send notification, and more. + +They are automatically pulled from the default container registry the agent's have configured. + +Example pipeline using the Docker and Slack plugins: + +```yaml +steps: + - name: build + image: golang + commands: + - go build + - go test + + - name: publish + image: plugins/docker + settings: + repo: foo/bar + tags: latest + + - name: notify + image: plugins/slack + settings: + channel: dev +``` + +## Plugin Isolation + +Plugins are just pipeline steps. They share the build workspace, mounted as a volume, and therefore have access to your source tree. + +## Finding Plugins + +For official plugins, you can use the Woodpecker plugin index: + +- [Official Woodpecker Plugins](https://woodpecker-ci.org/plugins) + +:::tip +There are also other plugin lists with additional plugins. Keep in mind that [Drone](https://www.drone.io/) plugins are generally supported, but could need some adjustments and tweaking. + +- [Drone Plugins](http://plugins.drone.io) +- [Geeklab Woodpecker Plugins](https://woodpecker-plugins.geekdocs.de/) + +::: diff --git a/docs/versioned_docs/version-2.5/20-usage/51-plugins/_category_.yaml b/docs/versioned_docs/version-2.5/20-usage/51-plugins/_category_.yaml new file mode 100644 index 0000000000..ecdc198db6 --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/51-plugins/_category_.yaml @@ -0,0 +1,7 @@ +label: 'Plugins' +# position: 2 +collapsible: true +collapsed: true +link: + type: 'doc' + id: 'overview' diff --git a/docs/versioned_docs/version-2.5/20-usage/60-services.md b/docs/versioned_docs/version-2.5/20-usage/60-services.md new file mode 100644 index 0000000000..4992e5dc27 --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/60-services.md @@ -0,0 +1,114 @@ +# Services + +Woodpecker provides a services section in the YAML file used for defining service containers. +The below configuration composes database and cache containers. + +Services are accessed using custom hostnames. +In the example below, the MySQL service is assigned the hostname `database` and is available at `database:3306`. + +```yaml +steps: + - name: build + image: golang + commands: + - go build + - go test + +services: + - name: database + image: mysql + + - name: cache + image: redis +``` + +You can define a port and a protocol explicitly: + +```yaml +services: + - name: database + image: mysql + ports: + - 3306 + + - name: wireguard + image: wg + ports: + - 51820/udp +``` + +## Configuration + +Service containers generally expose environment variables to customize service startup such as default usernames, passwords and ports. Please see the official image documentation to learn more. + +```diff + services: + - name: database + image: mysql ++ environment: ++ - MYSQL_DATABASE=test ++ - MYSQL_ALLOW_EMPTY_PASSWORD=yes + + - name: cache + image: redis +``` + +## Detachment + +Service and long running containers can also be included in the pipeline section of the configuration using the detach parameter without blocking other steps. This should be used when explicit control over startup order is required. + +```diff + steps: + - name: build + image: golang + commands: + - go build + - go test + + - name: database + image: redis ++ detach: true + + - name: test + image: golang + commands: + - go test +``` + +Containers from detached steps will terminate when the pipeline ends. + +## Initialization + +Service containers require time to initialize and begin to accept connections. If you are unable to connect to a service you may need to wait a few seconds or implement a backoff. + +```diff + steps: + - name: test + image: golang + commands: ++ - sleep 15 + - go get + - go test + + services: + - name: database + image: mysql +``` + +## Complete Pipeline Example + +```yaml +services: + - name: database + image: mysql + environment: + - MYSQL_DATABASE=test + - MYSQL_ROOT_PASSWORD=example +steps: + - name: get-version + image: ubuntu + commands: + - ( apt update && apt dist-upgrade -y && apt install -y mysql-client 2>&1 )> /dev/null + - sleep 30s # need to wait for mysql-server init + - echo 'SHOW VARIABLES LIKE "version"' | mysql -uroot -hdatabase test -pexample +``` diff --git a/docs/versioned_docs/version-2.5/20-usage/70-volumes.md b/docs/versioned_docs/version-2.5/20-usage/70-volumes.md new file mode 100644 index 0000000000..6897053fbe --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/70-volumes.md @@ -0,0 +1,27 @@ +# Volumes + +Woodpecker gives the ability to define Docker volumes in the YAML. You can use this parameter to mount files or folders on the host machine into your containers. + +:::note +Volumes are only available to trusted repositories and for security reasons should only be used in private environments. See [project settings](./75-project-settings.md#trusted) to enable trusted mode. +::: + +```diff + steps: + - name: build + image: docker + commands: + - docker build --rm -t octocat/hello-world . + - docker run --rm octocat/hello-world --test + - docker push octocat/hello-world + - docker rmi octocat/hello-world + volumes: ++ - /var/run/docker.sock:/var/run/docker.sock +``` + +Please note that Woodpecker mounts volumes on the host machine. This means you must use absolute paths when you configure volumes. Attempting to use relative paths will result in an error. + +```diff +-volumes: [ ./certs:/etc/ssl/certs ] ++volumes: [ /etc/ssl/certs:/etc/ssl/certs ] +``` diff --git a/docs/versioned_docs/version-2.5/20-usage/72-linter.md b/docs/versioned_docs/version-2.5/20-usage/72-linter.md new file mode 100644 index 0000000000..4fae3d643d --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/72-linter.md @@ -0,0 +1,62 @@ +# Linter + +Woodpecker automatically lints your workflow files for errors, deprecations and bad habits. Errors and warnings are shown in the UI for any pipelines. + +![errors and warnings in UI](./linter-warnings-errors.png) + +## Running the linter from CLI + +You can run the linter also manually from the CLI: + +```shell +woodpecker-cli lint +``` + +## Bad habit warnings + +Woodpecker warns you if your configuration contains some bad habits. + +### Event filter for all steps + +All your items in `when` blocks should have an `event` filter, so no step runs on all events. This is recommended because if new events are added, your steps probably shouldn't run on those as well. + +Examples of an **incorrect** config for this rule: + +```yaml +when: + - branch: main + - event: tag +``` + +This will trigger the warning because the first item (`branch: main`) does not filter with an event. + +```yaml +steps: + - name: test + when: + branch: main + + - name: deploy + when: + event: tag +``` + +Examples of a **correct** config for this rule: + +```yaml +when: + - branch: main + event: push + - event: tag +``` + +```yaml +steps: + - name: test + when: + event: [tag, push] + + - name: deploy + when: + - event: tag +``` diff --git a/docs/versioned_docs/version-2.5/20-usage/75-project-settings.md b/docs/versioned_docs/version-2.5/20-usage/75-project-settings.md new file mode 100644 index 0000000000..24bdbe605a --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/75-project-settings.md @@ -0,0 +1,61 @@ +# Project settings + +As the owner of a project in Woodpecker you can change project related settings via the web interface. + +![project settings](./project-settings.png) + +## Pipeline path + +The path to the pipeline config file or folder. By default it is left empty which will use the following configuration resolution `.woodpecker/*.{yaml,yml}` -> `.woodpecker.yaml` -> `.woodpecker.yml`. If you set a custom path Woodpecker tries to load your configuration or fails if no configuration could be found at the specified location. To use a [multiple workflows](./25-workflows.md) with a custom path you have to change it to a folder path ending with a `/` like `.woodpecker/`. + +## Repository hooks + +Your Version-Control-System will notify Woodpecker about events via webhooks. If you want your pipeline to only run on specific webhooks, you can check them with this setting. + +## Allow pull requests + +Enables handling webhook's pull request event. If disabled, then pipeline won't run for pull requests. + +## Allow deployments + +Enables a pipeline to be started with the `deploy` event from a successful pipeline. + +:::danger +Only activate this option if you trust all users who have push access to your repository. +Otherwise, these users will be able to steal secrets that are only available for `deploy` events. +::: + +## Protected + +Every pipeline initiated by an webhook event needs to be approved by a project members with push permissions before being executed. +The protected option can be used as an additional review process before running potentially harmful pipelines. Especially if pipelines can be executed by third-parties through pull-requests. + +## Trusted + +If you set your project to trusted, a pipeline step and by this the underlying containers gets access to escalated capabilities like mounting volumes. + +:::note + +Only server admins can set this option. If you are not a server admin this option won't be shown in your project settings. + +::: + +## Only inject netrc credentials into trusted containers + +Cloning pipeline step may need git credentials. They are injected via netrc. By default, they're only injected if this option is enabled, the repo is trusted ([see above](#trusted)) or the image is a trusted clone image. If you uncheck the option, git credentials will be injected into any container in clone step. + +## Project visibility + +You can change the visibility of your project by this setting. If a user has access to a project they can see all builds and their logs and artifacts. Settings, Secrets and Registries can only be accessed by owners. + +- `Public` Every user can see your project without being logged in. +- `Internal` Only authenticated users of the Woodpecker instance can see this project. +- `Private` Only you and other owners of the repository can see this project. + +## Timeout + +After this timeout a pipeline has to finish or will be treated as timed out. + +## Cancel previous pipelines + +By enabling this option for a pipeline event previous pipelines of the same event and context will be canceled before starting the newly triggered one. diff --git a/docs/versioned_docs/version-2.5/20-usage/80-badges.md b/docs/versioned_docs/version-2.5/20-usage/80-badges.md new file mode 100644 index 0000000000..1bee62a582 --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/80-badges.md @@ -0,0 +1,18 @@ +# Status Badges + +Woodpecker has integrated support for repository status badges. These badges can be added to your website or project readme file to display the status of your code. + +## Badge endpoint + +```uri +:///api/badges//status.svg +``` + +The status badge displays the status for the latest build to your default branch (e.g. main). You can customize the branch by adding the `branch` query parameter. + +```diff +-:///api/badges//status.svg ++:///api/badges//status.svg?branch= +``` + +Please note status badges do not include pull request results, since the status of a pull request does not provide an accurate representation of your repository state. diff --git a/docs/versioned_docs/version-2.5/20-usage/90-advanced-usage.md b/docs/versioned_docs/version-2.5/20-usage/90-advanced-usage.md new file mode 100644 index 0000000000..065386fdf0 --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/90-advanced-usage.md @@ -0,0 +1,129 @@ +# Advanced usage + +## Advanced YAML syntax + +YAML has some advanced syntax features that can be used like variables to reduce duplication in your pipeline config: + +### Anchors & aliases + +You can use [YAML anchors & aliases](https://yaml.org/spec/1.2.2/#3222-anchors-and-aliases) as variables in your pipeline config. + +To convert this: + +```yaml +steps: + - name: test + image: golang:1.18 + commands: go test ./... + - name: build + image: golang:1.18 + commands: build +``` + +Just add a new section called **variables** like this: + +```diff ++variables: ++ - &golang_image 'golang:1.18' + + steps: + - name: test +- image: golang:1.18 ++ image: *golang_image + commands: go test ./... + - name: build +- image: golang:1.18 ++ image: *golang_image + commands: build +``` + +### Map merges and overwrites + +```yaml +variables: + - &base-plugin-settings + target: dist + recursive: false + try: true + - &special-setting + special: true + - &some-plugin codeberg.org/6543/docker-images/print_env + +steps: + - name: develop + image: *some-plugin + settings: + <<: [*base-plugin-settings, *special-setting] # merge two maps into an empty map + when: + branch: develop + + - name: main + image: *some-plugin + settings: + <<: *base-plugin-settings # merge one map and ... + try: false # ... overwrite original value + ongoing: false # ... adding a new value + when: + branch: main +``` + +### Sequence merges + +```yaml +variables: + pre_cmds: &pre_cmds + - echo start + - whoami + post_cmds: &post_cmds + - echo stop + hello_cmd: &hello_cmd + - echo hello + +steps: + - name: step1 + image: debian + commands: + - <<: *pre_cmds # prepend a sequence + - echo exec step now do dedicated things + - <<: *post_cmds # append a sequence + - name: step2 + image: debian + commands: + - <<: [*pre_cmds, *hello_cmd] # prepend two sequences + - echo echo from second step + - <<: *post_cmds +``` + +### References + +- [Official YAML specification](https://yaml.org/spec/1.2.2/#3222-anchors-and-aliases) +- [YAML Cheatsheet](https://learnxinyminutes.com/docs/yaml) + +## Persisting environment data between steps + +One can create a file containing environment variables, and then source it in each step that needs them. + +```yaml +steps: + - name: init + image: bash + commands: + - echo "FOO=hello" >> envvars + - echo "BAR=world" >> envvars + + - name: debug + image: bash + commands: + - source envvars + - echo $FOO +``` + +## Declaring global variables + +As described in [Global environment variables](./50-environment.md#global-environment-variables), you can define global variables: + +```ini +WOODPECKER_ENVIRONMENT=first_var:value1,second_var:value2 +``` + +Note that this tightly couples the server and app configurations (where the app is a completely separate application). But this is a good option for truly global variables which should apply to all steps in all pipelines for all apps. diff --git a/docs/versioned_docs/version-2.5/20-usage/_category_.yaml b/docs/versioned_docs/version-2.5/20-usage/_category_.yaml new file mode 100644 index 0000000000..ba9f729ed0 --- /dev/null +++ b/docs/versioned_docs/version-2.5/20-usage/_category_.yaml @@ -0,0 +1,4 @@ +label: 'Usage' +# position: 2 +collapsible: true +collapsed: false diff --git a/docs/versioned_docs/version-2.5/20-usage/cron-settings.png b/docs/versioned_docs/version-2.5/20-usage/cron-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..d11c507afc3223545ac54e936268ab5aa4d1752f GIT binary patch literal 40821 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̪+$@fBsV(5dkvb=_0m->|e}fP1&y-fxmZAh+Uv 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:W$X zaRN)kam&@b#hW;T(WIm6t;tH~S}|xt%Hk#TX;|Kid-*+h2x@14Oc}k-8y%|LC@%M& z^megIwEhL`GZkK+pZEC*86zae9qwFXI9d9z>zM-VV`l-|e-Bug^xxbeD-W!aV>}QA zsRP5)WaaGiLIDy(uu~-d?Ir+_TebGP`px{s=5&4Bocq@aoKyQO9+mNR&I9JOGLb7Y z1z)0Le6F>Nn{5T`SiU{t`wFh)g4=ZH%fM93un`*e?bMDDj(~Sx)?3_{HEW7~&Qirz znA|ejSIjF<*eH8mLuJlXAC<_6TpHMCcz9XwhYjnY?G%y}f2L`bV%2*iX7`)~aA&RD zU>7m0zVekL@pGbvuQZgp%`xdnI4J~`}{Nwb~!ssj<{Y#dtcmOiyl^?ro_ni4(f=U&!}RuZ>COb zzL*}~h+R#xBmJ4^I`XVBQWy}M%Z`)y&vt!PGME-4= zKg2Y$CX|G0S3<_D^M&j2(UJ^`_ICLpkGR_l8zwK$NeXCAPW8_3rCLPWB7`PR@+XMU z(O@jKL|JqqvWJ$1?Q6UuU3#S1=u)!w4}2+hkG95Fe7KNEt+SqSdM(8_Jxvmyc+rWP z^hbh}%N;YH~fvA zA7hSf&5;94Iea$}?(jv83A61)(!aiE53v_EoH0bNo9e12{4Uzo4hwdJNy?Uv7W0b+ zbZ{7zn@_uYQBWAML&{GDqT3(Z+z$&dtZd}vw#iZ4It>6p^~MDWX&I2loCY0vZXcQXejBPe%gCFCcFIwKDL#UZD=RD0g# z*41tNYDwUxD0Fn+H%^Y9(Nnd49aeH1fKtu;F(}m!tBw5dEHpxit$O=#M%RV{&o!h4 z{TpPDLS|K{{!Jr#UomWKb?ZSMT(*=zPoBrpJDHci7AV>{brg*UgQ;JdT6HATz_Qrz zDrjnwB)xJ1=t73mxOsif!`9CI{LX&Fw0)hPAnyyXZ}AKb?^!A4xG(Y>_4t;6$;IQtY5$6@&Wa=`o+39E&FamwNNm;{xyg zhyQKg|9`0D{~lDLnzd!px7>1$xlQL*zw3nEyz*C0yAcJ~Sed5|#zKHu+;;VSv*e+H z*2v5(=z$>U)c)TY6p1O-=abZ&Bs##aM8NUL9W1r3B|V1^LV0sL0#wKba!dNt*fZbScd8Wh)`U-bHUyaV+9j7n>n3VU< zyXH5?z0BaU{<&QTjh&jhejCv@uI+P&iE^J2W5ei1BtjuQiH5UchQznB!%`$MUqh@T zzPN1mMFxo{NRTzu0_^t3N^{zJVITDJk%9Iw8~*>8<14Ax*mdSoF07q=HVhecn0CwH=hg z;nAj(*r8AE<0j~ss{29e+qf)Z;mXr~f49LJ>oOFQr!*)iH-sASY}`)b^$01#DU4qn zeb!=>Pjt>%7kbh`B*T(qQK!XM7XzAqbd;^naqD)Ks(p~Ux`?jQtdM=PvU%urVKG3B z`zX$lVEH5^`}_EhSD;K(n;N>q`u(>*^WeI*&X?-7GTm$9{e%3liXiI-PBDcD_U*0B z2H+wm<52%tJSfXASGtS?t9h)GhskW>l|Gk*5peWc4yV=lHoY35P>0p5bVxud;8k3i zj*I&&_&Rd{)t2stuiSX^g!W~`bBDdXuCT4-h1$%8_W^RH2%H!qfr;$}2t#fT16-UW zc>)qMlbmwlTrxe#)9of-kL%h=#GQB}pC-7F5LQ^Yo^}=Fdia=edt;A~&!y)peCVj$ zqFBh2v#7arQr5|Qd8Bw%6s1cI0BkQ8&;o%NXbm;TUlCR!L>Y34B?KRzG&6sjT|S=1 z7X;OJP*O7a5k7|)^X(gZ4iHG5{wFGpjVsc+l8N7|xw?MR#8k=rCH&IRk&Sc=D|;yI zRHVhVdsX~9-EGF^oAs@zFtyCZFC=wA0@eMc^A&hWK#hgiLj_U2h;CfvH%G+wJiC>Vj=(F7{UWBcW-^W zsHrySWpETB$tEMM@=0sb)n43c*E*!mmRo*zjZm0Mn6D$PLCsD(Nzss2dimN_^Wfm0 z_Nm&78BP4)CKu8rm0If?a_Ppy;Lp-a91F|Mm5rW~eU*#@f1pU6dTYLZz1j>d1+$ci z{@c92O%_3}uStfiU7nF}P;^A4$;1!~t91I~D;F+(G%{(-l{tQw^kUJGsG-5??%Ao?lvZ7JlcBTC3l9CAQ6L; zz`bQk4E~v^&Ft*slh8Lly=&y2g30l{olp+ZV@R*u)g2<0QFB4ccv${LRB!Jn_w9D< z=sJem`lM2wRrK!p~j|6s2=^b@P(6ygGKmZ!J@ijbRA5lP_S0?T$QonOLu?;yV0@ zb1G$$1N};$8aJ+^U)>m7Vo#`X`p=)8llZta#`vi#Uq8H`@6<2Mc_6THWt>E_s(p)N zwF?jx7}~*&?;If|FZ)7~odTiis&dR=wf{=8HB_>;S5$oQV@Cij#qi};I4sFl{JTk4 zb#B{>nAHaC2vs%;eUTu?^Py726rFo^=)u_MumpbhlTd5$jQXV2YkyOia}umduix^E z4lDn6F^e+mY9Mx)%u_`+3K4>AMvDXuvG}y`m?XmHkO3n6TrxPV#)#h0pEDUyAN?WRWQB{he{WWV+)BwOpe!OXgE`?IRU?=rP}QvW#~ zsw2ociDO@zEbqQ0Kn8%I?bq1Ye0hre+V6~0;_`B^n?-R^y$G^f}D0GHOMev zq3L>PfRA^Cr)CyIq$>gIb$bQ_<2x5LYbPjwsSa4%5tK|rCpW)4DnAU9{78g-cz9T6 zszt$I?SYWyDzUim({k$~ht-mwzzln5r#gDBoIAcZpWyh6&2`~Y(WSijw}zKqQ;z`TkwoWfoyH(7PSnIY+WyAhM$_u6h$f*?;K<4Rh6u0DcIdp0oFcSeSLaw;)-p| z6#}Yj-bCMZy~qTB4^Av}(h@Rh^Ew&ua02_?=~<>CBfTolw}!^O zWWhV0NtqkX7M$8c;XtbMbF38(2CD(KyE;=j?~z8*04ZYDb(^i_ZVJ43tKA-N2k9LaB_|(s@ZKLnMZBhslS(tF*C>V-(WYw? zo##eCwar%vDq{n;d#&oiwr4eJwV>OF_}d#?CW+Iraohp*kZTpGt*Z8$*9k?B5rPSU z(I8J_2eQ*h4G{Fq8!H48vBZDWgnTdi6U|Kd1-MDdbL%zN#RYEm_JtQv(0ocS%k|PA z%DS(kmra;~o-&8V+OwUnUwDWwOU9Ikr~2DR*iR#-h{qRnTaHzOqVlf zkXB3R6!#`uRoQ!U(0^D_YF|IiDeZ&r4Mc@K<1YKa2c-FPHQz7S?R5CIHfNp1V7^NB zjW=yhU7eUqL@3Vhuacpm2PB6Ceo>E)H#eo_>XH_<=Q1K1FsyeA=!SNu>}qauY9vhG z&Y()G$<8t2`nt>Qd#I!h>ui(n@Tivno8IOTe$qRlRi@fHw@|03h6oM)aStz{>I!nd z^{)0S{*z|tnP4(teO>;%AgN*z^q#S-Q~=l_yLm{@gF%C5p*-Bvqzlc~$0bWwpE}(y)cK5$5xC?03@Y!umU`G77xQg@VUn!-V}q*dlv_pj zE2fIc0tgP?a^eqXeY{_g#zrMMN4)}xd@OSddOk%Ro43?ny3pCd^X3AMl%G96+wwx( z&9&Dba>}~17fr0ZCEV?dyTjY3J-Ha2iO`xCBg3Jj*xJ}*;!rg;fjH+dXrGpx=~R4T zpfF-kC%8F5<;{j)eo`pF*pE8-2~TjGSKpD59IO8nu`Z*sa`+LkFp-*~yKt2DI^Rr| zcbEk>^oyQ?d*?D6WovoS;lQJ(4`fp4cbBVN^){yP>5o2MV15yG=C;YtfIwg|`zH7R zVOoKyZG);-B`m!a@sAm7=F-P9zf{nbYHQ1J+jm~cZ)XN$2o=D9sg>12eslkL82{;r zp0!GG#E6Pk>Ue%=Ca2`!klxX#!k@0y;?R4IzhCpRU^Z7&H!yju?clNH&ZPm5I2C(W zM>MysjKKC@?n>B3%iSFlta*{%El^@u0JTk<#d@o;=X{^!?iMboh*|RL%+!Ffz^U$5U>5qpb9hyPa$?$} z?iVUro&_218&SQA*$bvj9%`3fK$EHI49PqyiulJ}a__AKloD$oBQy@BvH2FNZf`KV zJ%^`Ju23E?@@rk1lqySl=%{hodhaYHqr`M}DsM z?s{H5xgc3r&HgI~zwimcac|GO^MKD#=?B~tQ;WP_P+@`!9}l0*LaAdc3OeQ`GznZO_DudyptewjQx_rp^+ z=%QJj7Z9lDT|{cNmyYsbwNLrpty68T9(UZaJKC4+p86=GQ+jOQ3`2-@qm`9*lj!*~g~~PwT!x6=r+bvBP{cV9 zcc&U(hwmJ{iWB7J9?|fUo(Jaq-Q5o^BE7;C{4mL)Vg9@*Tw!n0klaoP-6X48WVJwH z#CaKkfoQ+&lX(dO0L|)WlEc>r%7qd3&mI2yB6EF>!-$-gZh!o8>P*t*VygLX85^e& zNX-3VP2-&bScPZQ?hS9rKR%y!0xUR)m}FO}pfi8d03~E1)V_KG`Omd#D4uf*oCs3< zu?KZ@ADVzCxco%AzI9TK2`}0I^$FwY0lAL9Q=^hU(v#oz9pEMPv%=*3o$;Nh4D%P` zS|Zu=@9nt%T>^t==L_0b%@Hg8i5rMP@H?5*GF%J<&9|gEf|clb-bKDB`4>Jy89feA zEJ;MVGlzl&jf+*KGX}vD1NZ;5BjOb>YF1OG+II(j8Yj9GlQYU|UB_QGiQ!b3j{U{P ze-B~*CNiv=!+xAMXf|z;c>`t9C4TkHBdnu;T+aSuecf&aclqFbX^n3Af|V+LTy_ts z4PqZIpH`^RKk50G!13UWQV@ENR6h70N2dEfS$<*1$Il<=#LuanbW_$3H~}4Dk^o#` z8;#J7dfa9Z(f)Di9|issYjn@Mi~99>Zd5I8!;jKB(G}IBmeH`h?LiPHfD*D|XVhNE zLwa{j6*P=qsZ0B;{_%%Vzn<4I{9-Rt9R7PZfHI$;+;VowdwP_+g*8{D&W}j{QQR;^48iOIy2oe2Cjc2P>QsjY2N+% z*)pJ&#r*;+B7@gw>%fGSFs{PrHeuM#%o*f+TEBv&2j*Cksk7^=65>_7Ua;}ZXQj;j zms0-6F^U=yBM0j+`Xl)jt;RLs(qaL`6&!@NnvRP%%lfd|yP&7mI_wA2pEsvH zo9@+UG}83SKzBT%%yOJZQ4_eDjRPaniUii1KO(6WA@T#b#B~chXooOA&R-vsLEF{iiApo?sVZ zQ5)XN^=ujNV zN!yekeR3YD(2Tsg}$#*J4f&5Nt6_Kqe_^K&0bD{r+KrHUl#i66Dg2(hhzE ze2PQ3pX^r;EwwmIS?+`*y2m#VzvmNrDN9h+9FFnuU~?JztThdbKKf6~vn zzw|`_m->-&j9ik~b@ldEkDj)*C+p<(C1<4BpC({G#mwyk9Gr8vxXWL0#!vWULM4wl z&XS)HaIy?@Nttd9eaBW*Z}Qxni;|GB7NB~+{5gzgsKwn25R)c-kvuR7@~)wUM(Orae1kkyeRGTg&eWK?b57cRvm{rnQjXc*CD_) zB8+~)+ejQk^CvNG!#FwFFwdMEz63@ma_$|l%YEwDv2;FaCf67Y{cp*m?onx>wm~9( za9;^GPoY!kG`3Fk-|M1A5+_Hl{q-i<#dZynx&e=0LO1KRX+rqfD72T5a6eP^8t;w- z)=m@O77RmGYL`&Z=_m^h+F^y)S}#5{CN>68IT7!pMAmu1HJ(9x5BJ&6DH2{nP8IyJ zRtIr$EenOtpuua?YHC&-HD$J?un91W(w&#&9_qy59@)Et$gZ83wAVk~WE zcsccKk@Br(QQ)$V+4UZ|SUxMzCf%m>rYnfD>i%@l;8WvRWGe&;bSUpkM&HJpk|+mL z10FpA@{0|5?{uauYNz%m!|yH-cvw=ZOGokb;i!p983oPkD`e)kq2t3k0d!4=!J0=# zLEim&(ChE^12`$6O_^^Z&^6F5@b4Ey8)JGt-otw+d@cp}1#}cV;k2^9Eh20GRxy&HPdNgWJt@o~>@OGRGogKRBdQ!_+WvRYS^NiR3oF05U{MLPPe z>(Tq?WQc*x8uw4d<*;f&_eI*yqzeMQv^6niiDcCJsgIV@O^|p`x=i%pb>olXqcn5U zP-S+RD})~$-rON8TdFc~sDBrg*Z?w*&wyZ7wrp)(I|}*TEiiX|Vxc{dwX*S~6VCkn zSYCb#9|X$=H}rU9Knj`+`e{Ly{vbF<$M-xrBjD#%dT5Ucn{t7=sQ=3JxRLo)8#W7inCpux7mX~8x zO*?g-DgG<`JOsw&W_d<3?2W24Pj0?BxE)mjw&zq%r_9-6~BJlhcUWuWPag#8lF7v_31ux6Ui)P`@>u89;Z>#96A#P`7i z(ithhXBDx)vm>ksZn24nXixLb>EmX|2OX)Y@Ch8KHo)4jE6y!!0JyOB5`B6S?}tX- zS!DlXyV`37ok`8ow7{eO&T)5j6d|*8Hw;B~c{NFwIX%|`09U)}ZnOcaV?xKU+XEu| z=8L(52Vn(f>xkO-pKWI0N86ar5L>*x7GQ+?Zdc5I@z7p2XXGZq+)PG~Prv?_Meq6q zp5ohlIb`vOu;1@`)jLQ1HLN;YQVV6^D7ivYGx z&rb0;KI+J<9ZGTv(6flQWsGxa5en|z$)^fwNozwK2)RfSD!ydebU8D{i7Y`iI|3s%XXl+_5)CS9CI>7v_-xQc`HhY8WVXFx40z5_6#OzmLB9F49eq_y4fwJ+ zgfI6u+ndQl9cUcxGk!>BM>L|%Kl)kq0YyU3g7{!65!eJU%A-J5w+R=Rzv0b`_D6k* z=+OygZsh9-!{rMa$V#Za8w_ajNB!M@iJO%o^Pa=iDl{GUs)PEmH2ZV0gi$6uK8I+< z?I6=gU0%5KA}5Qijin`5xJ%3T$ThE%GYWeVo+-XJ(&o9HBB?d<&j6gx7SloDXQo-h zwSR~p-+Z@Yk;alb{vq-&N%^xvB|lCP*kGKB?Q68Gkq5$F67O~gDA>$-rooy_PN1AT zpHK{1fVqO6CZV4n8n=jl9VW@SGyfLTz z!3IcJGQgGMOtMGkG;ia&90u3abGoGhjGQ3N?h2`=zY#lD!f7Fu0uqN8_1t+Dw)5w+ zw4kF3_NRDtDSoLn>Bd<+^J%BWk7APMlMjUzJsI5ROBQTJIF^`Q=8j2yJpxkrUd=Qv6J{3okL_R*_hp~}}CLm64k^gxNc zMT?IzFjXaSZe49?#i>DZ7d~Y2aD$ke^Wg7Ic3N6434kFSxSggAWR3axrd;KtRgEQ) zmKeeaklUi_K6F6-`Bjr}HI|R?lW=+!X?jZN@B~jXQzYc8LK0s|60z$$IkULeLPo(O z3o}NPtn|2=bvRnzQwKW5M(fc~^kE4nFvfEa0;Rd^!v+dBZo>z4uO#+3j@DF}yOcOl;MGQH5nc6%_JGIhk$k^@ zsaPci#)-{Om=s_*1aWmGni#S3^D(lT|M2fkdM*y=nyMcUz|Jj^v!v6tL0Ew*h;fB#9C{k_ZD`mmUpOU#%9}RpJ zFRI08dKF%>vwW7N% zA(=_@u_Gvkn3%!bNMb7ckc*oFc$;ln*?h9PuTKnyOF~ww{=%bCArn@zCZ|vYUERjR zg>U9gMPASTE!w^rc|c91zRfu=Wg*mJBs03(Ng_*=fKQo2f9#PL)T0D~?5E}&r*sBM zi1ntRBD)@1G8Hz~RTF;iD#G5Xm?n=2{MSE1Q{ zG_*u1DY7>$D^d(1Cak(cp-tVLM&);MEw?-wE$0f>|G0fe=$8s>{MaJ1T;;xmJoC|X zlX@C6U(w|*6)_gJvT6&B@c$BO&|ByybTMD#cZ(w6llG97Ze~*HPTmAAfxWJ4Q@Tn-Hk* z_G8t+y@6MDaE6V`2@~tvX+#tEt%Uo_l!-lCdsYu)A2+=MXesYaKhM%NlR9qGj<2Sa z7kS`Up@M>>($~1gFQLCzhoF5%oq1b0HT(Yr7ek%?SlM!AIY{YUWiWI;_{7Zd|qXXEkHeh3g?~B9$Z3LxCK2aL8gmGtGV5VL$2Csp#|U7Jfh?{JiglFQVkVHuLO|8^s77AjCX@@9*e`81?x zk(YTr)7pZbp~9HxYNh0WI3)e`4b0YRvY}Flef`#9au-q3mdc3;Ze?@&P>`j{P~3C3 zF%6$HIZaA#R3(2lxqk9g#wvWUYHMB@3++8z$j#i|{D>AoTxxQhkYqR}5&3@7c^xX? z2D@2_JeT5Dmv@Vk2`6z8t-Po%e?c7EDJvi44874spo{GJYaLRnn8;x;vht;4Cy9Mxquvh;mIh{+HrX%#%y^R_3-6aPt>^ zxm=}iT2-6sW~q~^I`EAsKt~$s+pr*DYQzd<3LNQn8Q!ySO?vw#<+bW_pwV?`7*dvK zZjS2NbX*k3N0%m70DUkQ%`NrReW-NvCOnXNy~(<1&c)D{y?QQe%)c#x_BnA|^4Lui z=9W6Lg}Dz@qF);9!uZ`y>&kM+?B$O9rh6_Q0-bz<>jS#ZWJk0U1Ul8XH&axae1cO+ z^Jt=@1b$L?mnj?wf$bSfP%8*k35NX3az!8IHf&~gc7e1~#Od?s?c_)0wq7`J&n}^W z1V0DuIF>Q3DxcdW{MLHW>%vs(9DZb_UQKt73@Lk)yT@*?Q6)rG8a;|{zL5BqUaBxK z@pZ|ig&stPtpQ>+FiG-V| zxh8%MW@r@z70GXIs_(8V1D6F|`||Zht6wPrl#YjR?-){QO8ZJ8FhvgET(->WGZ?W4 zV;{T7zt~-G(n%sbWMyPwWN}m3w>{)|EbDE6i0UZzkb3n8-jzsErWcxVM_->cera`gW{J z*1pZ=R-d2SFS;8vB*#N@+jh?$yBOAUTM9`iWFq=OuEivdAGS~3)k(er7kt&1-MX;k zO#p#Xrt(#H4!_fD=ZvAvMypew8l{@*j%Nk$PPbcFY&Q&b)4KmxZO<9j)V3@hj~eOf zp$H11U_g3r0un$31f)v~D%Ai9Jrn_@iZlg8dhZGmFoX_*80nqRK{}z=(0O}v?z!Lh z?)Uz^_wp-yt=Thc&zd!5?U}U!LE1~LFzJ^v99VRTVpoY06Hiss>mVjnLN5BBtCN$J z)sLQr!~1$L@T8NLH)YpS_Il&!sk}$|102>otcO{}8I@%>Nz&2-b=3+G!F|@02wvAZ zCS=&&cSWU-%GKpP2D9|ec(ZK*fRaRHM#j~e@3&GrDAgmHFKlJMe^FHH=wj^XK1)Q^ zFibErq)QF(j=-%JeU_-WK51V>sZ*6EWI6IzG9amLaOKrNS0BBpbg-SAV;IwqR(uAa z6yZ*|U$smA%m&>%^V|zQhMQX|C^BSt#V^XIwBEN%wO&GmiN*E&LhsQ5?El7LMr%FilvA2=(U1I=VzSHsWtsvqT#PBI*WaWydA(HqTlHOdS4S)^Vl_)FGf@6GeN0@1QHxE)eG~=Kv zy7Lqv`b{v24+rNL|C|p7l#{CF*ti|fp+zV0od*Fn?&jrVaEdn|b`jCgre!y;M9;rq zBGrONZ^&?uz-ILhn=bKasKCbGX~jkvXZ6@NA>dmlvb5}*-;@>K9s&TEZi9lQ1uhB43a323I;qL&A2Az0DG5{^pPFr1NH|xYJ-gwTlxciCo7c z2}}+yTtXbB!NMA`BFtymS*-js;lHJ8r$V5yF)mg6`;z|B5Bq{1bdDeU`m_!LXC8=? z+HpSfx+#esuAf5nW&n~>ZM-`3;!)f3H}MpEY}u}S0N?lZ@dkx1e}TlL1G=;GASRs%o7OoY$W zKC|&xGB6f_TOX>JW=DXY9*y0hnYiyb7e**so7n#Cj6zcE zR=L7xUQU!?hveA;(5Jq0GBpcneCFHyzOIMA=p|7+PhIbE2GGI^jZTNvP6xSmYF5Va z*6N8;?8JpA0vvAO_$Ho0G9OK%xAelX6z+d@SR1L$lzRDW!u=1>jeuaEz+Js)UX_*H zIu2T@iVuXuemNN#l`GP@G%meVc!4I;jo+KtuNR!X@Kmy3Le%teU~nCmR)32rE2b@y zRnopAS>fXD>eg01jcix%0!A`M8=h|~=hQQ!qEJa%h!xz+ksaWx_-vxO?!L?B+c3#?GfXt~)9nM3G3@RMv|?r95^J^ZgKty$ zZE`*qBL=o*^qdHpCH@&VZ?B;(^or#5zZ$T<$AlBUW8vvXVEX8-ZCE)==8H`nL)=Eitp%oGv9)x+W;c41pku)9(R z24VA4l9uz{Id-kmtk@|V6bs>X$vFs>PaV$n+HR3C-coK#8LgFm?}=XHyb7}2=1(>| zO5lq-sf1ke^n=mWGyz6iDCZyex~I-Ul_cJmo@_BunA$-oDWMMv>oMff*ILNa4J;J9 zq#KDh-TKskfya@uz1EXEJ3E%22|q$?Ov&9p@i?A%s%nKA87`ELX!6CGEqWTWGKZWk z{~+3NZn_~cw&BDYsPwI@U&wfs&69rCWxgUF>D}2S6hAj@w-&v@VmBS8de6-VcX)UE zT};3zA4mWDDl7X4%r039P)PFW9t?6t!u7tg$_=R;bV>WI%WSVWJS|v(VjBPsO8d z-_z#}+jTrVb;RP_T*|Ny0f2p;<1ex`+}`(to??+(tER0JJ}<}lp7&m63mCnZ9xhRg zXrA+y#FJ2F$D6&V!hBs5rHcKI`oK=q!YK5P5NS}WVo6kn=kHNS!1jG8E5-)Bf>2&o z-O-q*KE9e0CqSg>JHM!YJYS90`DlzPj^CN6IuOsEIGE&_zO+^Z-^-n?jEgwV?Wpuz zS<{EGxfBM=ii~X#Gn6!o3|8!QE`=xW<1>8aHpUN~Kb3hnj$Y_QJ#JliZd!MzR8zC{ z0tw`M8gG7!VIkU>8B4kqAjt}3hwJkO(Q{Nc8Q(^k0 zKhGWb#$m+G!mp&ZM?%34e)7#`8w-uxBeF-!{_#0o$)NtQxy$F~=)+OMc5YKk1)Wm7z|;ub3FqQj_q!VoEYq*eB| zB|$19QP3h6e7N=V;oXe6&9QOxv2i~oqKjthua}PK4UM3YbSy36@t~MX7?_Jayc1Oz zvbd-&1C~2as{TOjgE#+UV>p;VxYw~v!;BYe#^*8fmLtG58Iyk}tH45Hlhaa=SkRE2 zQ^jZkCHUy|k#kNJ?Q>Qeh;pE#{{{7*ei}k&3rb4klQb>Fh<7fB?5MxScS_T)oL*V-Uc|H(sc;$+^Oso+T`x|)d^oz_SKD1I`FY7b=zu7_QSpynf z(NFcXOtt=<2to1aGy6)W{??iRW>o&adk|ES*#!kb%C<;$6$FtDphzZnZdfF!pr9!` z;+^Uz{8H7CszOwjKy)|#%aG7w9q^!t2gf2dlo$f~Hm=J;=o|97^<^5{y>p3d2H4y_ zt(0WvdxGhK%@%gV-yphn0|kOP=R2p{IDr-`^~W|I6&HhO8?Lg%#&rp`Sjl`a&f`?o zp}7P=+SD@jF%}fW#(YeC98}I&rGFmLG4*2kZghIqm!r)pR*stU}R89j97kv#~J zcC#>E z_>UX`@6~~1JTVj;6q%eyco!q$ciGKgmt++4M0-q~vqGlw!>*+rvz~~80s(b!Dn(*s zXRM#R6SME=Mkl+h+-m%wWQH1dnu?go>b2gPx8L6`%&w}H(JBg6t8z2J)DK1Wm*z)2 zXs!)h<1?&);X7=$?)mBl#c}{*!+eta@&N4ZW46Gos?Na%`rM&d)UQ=4qvc}h8;PBi-b>;EfxQS z+|6DBvFzcBPRwq7O{sHImOO+NzK-bcAX%NRgs$B#s@!^0wN@!*H^RME$Y;P;mQUU9 zy`I|Hb}E7EkMqiHuS7ozO|sOKsav*b-}u@ zTo`(MyJ9MI-!~q2(ngG^AEy}~XOvw2AQ>qm%cU^1v$1tLv_`el2`q4P*-$3ih)>Dhy5Cs4pk=#NAMLykvx%Fv(#v1so4c?J z103nQCQgcqEYTny_*k%G{5?;?)oUlp_FgIMgMcdQ{!uTP-?oj`px!$BiWOjQU<}rxvGB5 zRHYNd;%;b!4ktsXj46OpyRhYy0p6Nj%{kZOD(0KUWfq5z zRTfoxPOyp2n*8VZC(2xL$`Ce1nM9&Mb`JK6vKvae#(gBUW@-p(W}M=M3=iOdLPL_; zrB!Xk^FA7jEt9a1HNx5XK>mdXIPEEQRTzY8&M%SJg=IP_mFK3f-WZimDK_9x-Ty4NS5Ut4 z)>g+-i&S>cwDsKd0Vd^eT+MeUoFyi&b*%EJCfO-<(O>EpY+d64K>vYGx@}nf@AfM4 zMk&oU0Yb?6=AKe?fg^#yOg-9DLs-!~xp%aqWJ`b4Zyu(}yi$YCSq7a4%YoUC*WrJM#kCHi9UpY zH*QvE0a&|=UI#)?k51|Gze4uit8)1T2m!`X-@T^~JyjnC4~{O6r6#8g!(%N~ZfgUh zUGLS`)y)uRv;f0?Bh!gZ2@at3-`F>THE>_Ye1%3qQRAj;Y7Bvu?q%Wrc%r8S0QSH+3-v3QL#1cY&UvyTNgY7{gP|0w!;wt(i0LniY&8 z+dIMLwCe?KRiddsXhp*v=gOnlJw{m~3ArnhAR-ZQ7EI^#Zqns*RBD+W_k(y^OL(Mj z%vyjBi^KITcW-KCkM^Cqxh+QRkEKSCbZ`$5D13i6MLMj3W10}fagFMC{pWJQjJqy& zUA-O8V?H#tbx|n(@kM|6+}=eODf@Xr1hc}?En&a!&u-D??a#;G{3ZpKXup2woWqKE z2g49rOKxP;)4~=yC5tt3ufZ6@e?Aki5n$BSqssz~f`i9KFTuR9NXoi4u)U^k_u2FQ}BC}}7b!Jhg3 E7cy;Rb^rhX literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-2.5/20-usage/linter-warnings-errors.png b/docs/versioned_docs/version-2.5/20-usage/linter-warnings-errors.png new file mode 100644 index 0000000000000000000000000000000000000000..663e4970495aaa59331d65cdbdbe7c8ee465f9ac GIT binary patch literal 116049 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%0DPrQp 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∾o(r8t=6h~7bq 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"); +}); +``` + +## All server configuration options + +The following list describes all available server configuration options. + +### `WOODPECKER_LOG_LEVEL` + +> Default: empty + +Configures the logging level. Possible values are `trace`, `debug`, `info`, `warn`, `error`, `fatal`, `panic`, `disabled` and empty. + +### `WOODPECKER_LOG_FILE` + +> Default: `stderr` + +Output destination for logs. +'stdout' and 'stderr' can be used as special keywords. + +### `WOODPECKER_LOG_XORM` + +> Default: `false` + +Enable XORM logs. + +### `WOODPECKER_LOG_XORM_SQL` + +> Default: `false` + +Enable XORM SQL command logs. + +### `WOODPECKER_DEBUG_PRETTY` + +> Default: `false` + +Enable pretty-printed debug output. + +### `WOODPECKER_DEBUG_NOCOLOR` + +> Default: `true` + +Disable colored debug output. + +### `WOODPECKER_HOST` + +> Default: empty + +Server fully qualified URL of the user-facing hostname, port (if not default for HTTP/HTTPS) and path prefix. + +Examples: + +- `WOODPECKER_HOST=http://woodpecker.example.org` +- `WOODPECKER_HOST=http://example.org/woodpecker` +- `WOODPECKER_HOST=http://example.org:1234/woodpecker` + +### `WOODPECKER_WEBHOOK_HOST` + +> Default: value from `WOODPECKER_HOST` config env + +Server fully qualified URL of the Webhook-facing hostname and path prefix. + +Example: `WOODPECKER_WEBHOOK_HOST=http://woodpecker-server.cicd.svc.cluster.local:8000` + +### `WOODPECKER_SERVER_ADDR` + +> Default: `:8000` + +Configures the HTTP listener port. + +### `WOODPECKER_SERVER_ADDR_TLS` + +> Default: `:443` + +Configures the HTTPS listener port when SSL is enabled. + +### `WOODPECKER_SERVER_CERT` + +> Default: empty + +Path to an SSL certificate used by the server to accept HTTPS requests. + +Example: `WOODPECKER_SERVER_CERT=/path/to/cert.pem` + +### `WOODPECKER_SERVER_KEY` + +> Default: empty + +Path to an SSL certificate key used by the server to accept HTTPS requests. + +Example: `WOODPECKER_SERVER_KEY=/path/to/key.pem` + +### `WOODPECKER_CUSTOM_CSS_FILE` + +> Default: empty + +File path for the server to serve a custom .CSS file, used for customizing the UI. +Can be used for showing banner messages, logos, or environment-specific hints (a.k.a. white-labeling). +The file must be UTF-8 encoded, to ensure all special characters are preserved. + +Example: `WOODPECKER_CUSTOM_CSS_FILE=/usr/local/www/woodpecker.css` + +### `WOODPECKER_CUSTOM_JS_FILE` + +> Default: empty + +File path for the server to serve a custom .JS file, used for customizing the UI. +Can be used for showing banner messages, logos, or environment-specific hints (a.k.a. white-labeling). +The file must be UTF-8 encoded, to ensure all special characters are preserved. + +Example: `WOODPECKER_CUSTOM_JS_FILE=/usr/local/www/woodpecker.js` + +### `WOODPECKER_LETS_ENCRYPT` + +> Default: `false` + +Automatically generates an SSL certificate using Let's Encrypt, and configures the server to accept HTTPS requests. + +### `WOODPECKER_GRPC_ADDR` + +> Default: `:9000` + +Configures the gRPC listener port. + +### `WOODPECKER_GRPC_SECRET` + +> Default: `secret` + +Configures the gRPC JWT secret. + +### `WOODPECKER_GRPC_SECRET_FILE` + +> Default: empty + +Read the value for `WOODPECKER_GRPC_SECRET` from the specified filepath. + +### `WOODPECKER_METRICS_SERVER_ADDR` + +> Default: empty + +Configures an unprotected metrics endpoint. An empty value disables the metrics endpoint completely. + +Example: `:9001` + +### `WOODPECKER_ADMIN` + +> Default: empty + +Comma-separated list of admin accounts. + +Example: `WOODPECKER_ADMIN=user1,user2` + +### `WOODPECKER_ORGS` + +> Default: empty + +Comma-separated list of approved organizations. + +Example: `org1,org2` + +### `WOODPECKER_REPO_OWNERS` + +> Default: empty + +Comma-separated list of syncable repo owners. ??? + +Example: `user1,user2` + +### `WOODPECKER_OPEN` + +> Default: `false` + +Enable to allow user registration. + +### `WOODPECKER_AUTHENTICATE_PUBLIC_REPOS` + +> Default: `false` + +Always use authentication to clone repositories even if they are public. Needed if the forge requires to always authenticate as used by many companies. + +### `WOODPECKER_DEFAULT_CANCEL_PREVIOUS_PIPELINE_EVENTS` + +> Default: `pull_request, push` + +List of event names that will be canceled when a new pipeline for the same context (tag, branch) is created. + +### `WOODPECKER_DEFAULT_CLONE_IMAGE` + +> Default is defined in [shared/constant/constant.go](https://github.com/woodpecker-ci/woodpecker/blob/main/shared/constant/constant.go) + +The default docker image to be used when cloning the repo + +### `WOODPECKER_DEFAULT_PIPELINE_TIMEOUT` + +> 60 (minutes) + +The default time for a repo in minutes before a pipeline gets killed + +### `WOODPECKER_MAX_PIPELINE_TIMEOUT` + +> 120 (minutes) + +The maximum time in minutes you can set in the repo settings before a pipeline gets killed + +### `WOODPECKER_SESSION_EXPIRES` + +> Default: `72h` + +Configures the session expiration time. +Context: when someone does log into Woodpecker, a temporary session token is created. +As long as the session is valid (until it expires or log-out), +a user can log into Woodpecker, without re-authentication. + +### `WOODPECKER_ESCALATE` + +> Defaults are defined in [shared/constant/constant.go](https://github.com/woodpecker-ci/woodpecker/blob/main/shared/constant/constant.go) + +Docker images to run in privileged mode. Only change if you are sure what you do! + + + +### `WOODPECKER_DOCKER_CONFIG` + +> Default: empty + +Configures a specific private registry config for all pipelines. + +Example: `WOODPECKER_DOCKER_CONFIG=/home/user/.docker/config.json` + + + +### `WOODPECKER_AGENT_SECRET` + +> Default: empty + +A shared secret used by server and agents to authenticate communication. A secret can be generated by `openssl rand -hex 32`. + +### `WOODPECKER_AGENT_SECRET_FILE` + +> Default: empty + +Read the value for `WOODPECKER_AGENT_SECRET` from the specified filepath + +### `WOODPECKER_KEEPALIVE_MIN_TIME` + +> Default: empty + +Server-side enforcement policy on the minimum amount of time a client should wait before sending a keepalive ping. + +Example: `WOODPECKER_KEEPALIVE_MIN_TIME=10s` + +### `WOODPECKER_DATABASE_DRIVER` + +> Default: `sqlite3` + +The database driver name. Possible values are `sqlite3`, `mysql` or `postgres`. + +### `WOODPECKER_DATABASE_DATASOURCE` + +> Default: `woodpecker.sqlite` if not running inside a container, `/var/lib/woodpecker/woodpecker.sqlite` if running inside a container + +The database connection string. The default value is the path of the embedded SQLite database file. + +Example: + +```bash +# MySQL +# https://github.com/go-sql-driver/mysql#dsn-data-source-name +WOODPECKER_DATABASE_DATASOURCE=root:password@tcp(1.2.3.4:3306)/woodpecker?parseTime=true + +# PostgreSQL +# https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING +WOODPECKER_DATABASE_DATASOURCE=postgres://root:password@1.2.3.4:5432/woodpecker?sslmode=disable +``` + +### `WOODPECKER_DATABASE_DATASOURCE_FILE` + +> Default: empty + +Read the value for `WOODPECKER_DATABASE_DATASOURCE` from the specified filepath + +### `WOODPECKER_PROMETHEUS_AUTH_TOKEN` + +> Default: empty + +Token to secure the Prometheus metrics endpoint. +Must be set to enable the endpoint. + +### `WOODPECKER_PROMETHEUS_AUTH_TOKEN_FILE` + +> Default: empty + +Read the value for `WOODPECKER_PROMETHEUS_AUTH_TOKEN` from the specified filepath + +### `WOODPECKER_STATUS_CONTEXT` + +> Default: `ci/woodpecker` + +Context prefix Woodpecker will use to publish status messages to SCM. You probably will only need to change it if you run multiple Woodpecker instances for a single repository. + +### `WOODPECKER_STATUS_CONTEXT_FORMAT` + +> Default: `{{ .context }}/{{ .event }}/{{ .workflow }}{{if not (eq .axis_id 0)}}/{{.axis_id}}{{end}}` + +Template for the status messages published to forges, uses [Go templates](https://pkg.go.dev/text/template) as template language. +Supported variables: + +- `context`: Woodpecker's context (see `WOODPECKER_STATUS_CONTEXT`) +- `event`: the event which started the pipeline +- `workflow`: the workflow's name +- `owner`: the repo's owner +- `repo`: the repo's name + +--- + +### `WOODPECKER_LIMIT_MEM_SWAP` + +> Default: `0` + +The maximum amount of memory a single pipeline container is allowed to swap to disk, configured in bytes. There is no limit if `0`. + +### `WOODPECKER_LIMIT_MEM` + +> Default: `0` + +The maximum amount of memory a single pipeline container can use, configured in bytes. There is no limit if `0`. + +### `WOODPECKER_LIMIT_SHM_SIZE` + +> Default: `0` + +The maximum amount of memory of `/dev/shm` allowed in bytes. There is no limit if `0`. + +### `WOODPECKER_LIMIT_CPU_QUOTA` + +> Default: `0` + +The number of microseconds per CPU period that the container is limited to before throttled. There is no limit if `0`. + +### `WOODPECKER_LIMIT_CPU_SHARES` + +> Default: `0` + +The relative weight vs. other containers. + +### `WOODPECKER_LIMIT_CPU_SET` + +> Default: empty + +Comma-separated list to limit the specific CPUs or cores a pipeline container can use. + +Example: `WOODPECKER_LIMIT_CPU_SET=1,2` + +### `WOODPECKER_CONFIG_SERVICE_ENDPOINT` + +> Default: empty + +Specify a configuration service endpoint, see [Configuration Extension](./100-external-configuration-api.md) + +### `WOODPECKER_FORGE_TIMEOUT` + +> Default: 3s + +Specify timeout when fetching the Woodpecker configuration from forge. See for syntax reference. + +### `WOODPECKER_FORGE_RETRY` + +> Default: 3 + +Specify how many retries of fetching the Woodpecker configuration from a forge are done before we fail. + +### `WOODPECKER_ENABLE_SWAGGER` + +> Default: true + +Enable the Swagger UI for API documentation. + +### `WOODPECKER_DISABLE_VERSION_CHECK` + +> Default: false + +Disable version check in admin web UI. + +--- + +### `WOODPECKER_GITHUB_...` + +See [GitHub configuration](./11-forges/20-github.md#configuration) + +### `WOODPECKER_GITEA_...` + +See [Gitea configuration](./11-forges/30-gitea.md#configuration) + +### `WOODPECKER_BITBUCKET_...` + +See [Bitbucket configuration](./11-forges/50-bitbucket.md#configuration) + +### `WOODPECKER_GITLAB_...` + +See [GitLab configuration](./11-forges/40-gitlab.md#configuration) + +### `WOODPECKER_ADDON_FORGE` + +See [addon forges](./11-forges/100-addon.md). diff --git a/docs/versioned_docs/version-2.5/30-administration/100-external-configuration-api.md b/docs/versioned_docs/version-2.5/30-administration/100-external-configuration-api.md new file mode 100644 index 0000000000..f951b14780 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/100-external-configuration-api.md @@ -0,0 +1,104 @@ +# External Configuration API + +To provide additional management and preprocessing capabilities for pipeline configurations Woodpecker supports an HTTP API which can be enabled to call an external config service. +Before the run or restart of any pipeline Woodpecker will make a POST request to an external HTTP API sending the current repository, build information and all current config files retrieved from the repository. The external API can then send back new pipeline configurations that will be used immediately or respond with `HTTP 204` to tell the system to use the existing configuration. + +Every request sent by Woodpecker is signed using a [http-signature](https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures) by a private key (ed25519) generated on the first start of the Woodpecker server. You can get the public key for the verification of the http-signature from `http(s)://your-woodpecker-server/api/signature/public-key`. + +A simplistic example configuration service can be found here: [https://github.com/woodpecker-ci/example-config-service](https://github.com/woodpecker-ci/example-config-service) + +:::warning +You need to trust the external config service as it is getting secret information about the repository and pipeline and has the ability to change pipeline configs that could run malicious tasks. +::: + +## Config + +```ini title="Server" +WOODPECKER_CONFIG_SERVICE_ENDPOINT=https://example.com/ciconfig +``` + +### Example request made by Woodpecker + +```json +{ + "repo": { + "id": 100, + "uid": "", + "user_id": 0, + "namespace": "", + "name": "woodpecker-testpipe", + "slug": "", + "scm": "git", + "git_http_url": "", + "git_ssh_url": "", + "link": "", + "default_branch": "", + "private": true, + "visibility": "private", + "active": true, + "config": "", + "trusted": false, + "protected": false, + "ignore_forks": false, + "ignore_pulls": false, + "cancel_pulls": false, + "timeout": 60, + "counter": 0, + "synced": 0, + "created": 0, + "updated": 0, + "version": 0 + }, + "pipeline": { + "author": "myUser", + "author_avatar": "https://myforge.com/avatars/d6b3f7787a685fcdf2a44e2c685c7e03", + "author_email": "my@email.com", + "branch": "main", + "changed_files": ["somefilename.txt"], + "commit": "2fff90f8d288a4640e90f05049fe30e61a14fd50", + "created_at": 0, + "deploy_to": "", + "enqueued_at": 0, + "error": "", + "event": "push", + "finished_at": 0, + "id": 0, + "link_url": "https://myforge.com/myUser/woodpecker-testpipe/commit/2fff90f8d288a4640e90f05049fe30e61a14fd50", + "message": "test old config\n", + "number": 0, + "parent": 0, + "ref": "refs/heads/main", + "refspec": "", + "clone_url": "", + "reviewed_at": 0, + "reviewed_by": "", + "sender": "myUser", + "signed": false, + "started_at": 0, + "status": "", + "timestamp": 1645962783, + "title": "", + "updated_at": 0, + "verified": false + }, + "configs": [ + { + "name": ".woodpecker.yaml", + "data": "steps:\n - name: backend\n image: alpine\n commands:\n - echo \"Hello there from Repo (.woodpecker.yaml)\"\n" + } + ] +} +``` + +### Example response structure + +```json +{ + "configs": [ + { + "name": "central-override", + "data": "steps:\n - name: backend\n image: alpine\n commands:\n - echo \"Hello there from ConfigAPI\"\n" + } + ] +} +``` diff --git a/docs/versioned_docs/version-2.5/30-administration/11-forges/100-addon.md b/docs/versioned_docs/version-2.5/30-administration/11-forges/100-addon.md new file mode 100644 index 0000000000..e280ed4202 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/11-forges/100-addon.md @@ -0,0 +1,68 @@ +# Addon forges + +If the forge you're using does not comply with [Woodpecker's requirements](../../92-development/02-core-ideas.md#forges) or your setup is too specific to be added to Woodpecker's core, you can write your own forge using an addon forge. + +:::warning +Addon forges are still experimental. Their implementation can change and break at any time. +::: + +:::danger +You need to trust the author of the addon forge you use. It can access authentication codes and other possibly sensitive information. +::: + +## Usage + +To use an addon forge, download the correct addon version. Then, you can add the following to your configuration: + +```ini +WOODPECKER_ADDON_FORGE=/path/to/your/addon/forge/file +``` + +In case you run Woodpecker as container, you probably want to mount the addon binary to `/opt/addons/`. + +### Bug reports + +If you experience bugs, please check which component has the issue. If it's the addon, **do not raise an issue in the main repository**, but rather use the separate addon repositories. To check which component is responsible for the bug, look at the logs. Logs from addons are marked with a special field `addon` containing their addon file name. + +## List of addon forges + +If you wrote or found an addon forge, please add it here so others can find it! + +_Be the first one to add your addon forge!_ + +## Creating addon forges + +Addons use RPC to communicate to the server and are implemented using the [`go-plugin` library](https://github.com/hashicorp/go-plugin). + +### Writing your code + +This example will use the Go language. + +Directly import Woodpecker's Go packages (`go.woodpecker-ci.org/woodpecker/woodpecker/v2`) and use the interfaces and types defined there. + +In the `main` function, just call `"go.woodpecker-ci.org/woodpecker/v2/server/forge/addon".Serve` with a `"go.woodpecker-ci.org/woodpecker/v2/server/forge".Forge` as argument. +This will take care of connecting the addon forge to the server. + +### Example structure + +```go +package main + +import ( + "context" + "net/http" + + "go.woodpecker-ci.org/woodpecker/v2/server/forge/addon" + forgeTypes "go.woodpecker-ci.org/woodpecker/v2/server/forge/types" + "go.woodpecker-ci.org/woodpecker/v2/server/model" +) + +func main() { + addon.Serve(config{}) +} + +type config struct { +} + +// `config` must implement `"go.woodpecker-ci.org/woodpecker/v2/server/forge".Forge`. You must directly use Woodpecker's packages - see imports above. +``` diff --git a/docs/versioned_docs/version-2.5/30-administration/11-forges/11-overview.md b/docs/versioned_docs/version-2.5/30-administration/11-forges/11-overview.md new file mode 100644 index 0000000000..4446896f0f --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/11-forges/11-overview.md @@ -0,0 +1,13 @@ +# Forges + +## Supported features + +| Feature | [GitHub](20-github.md) | [Gitea / Forgejo](30-gitea.md) | [Gitlab](40-gitlab.md) | [Bitbucket](50-bitbucket.md) | [Bitbucket Datacenter](60-bitbucket_datacenter.md) | +| ------------------------------------------------------------- | :--------------------: | :----------------------------: | :--------------------: | :--------------------------: | :------------------------------------------------: | +| Event: Push | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Event: Tag | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Event: Pull-Request | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Event: Release | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| Event: Deploy | :white_check_mark: | :x: | :x: | :x: | :x: | +| [Multiple workflows](../../20-usage/25-workflows.md) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| [when.path filter](../../20-usage/20-workflow-syntax.md#path) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | diff --git a/docs/versioned_docs/version-2.5/30-administration/11-forges/20-github.md b/docs/versioned_docs/version-2.5/30-administration/11-forges/20-github.md new file mode 100644 index 0000000000..338e555fd2 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/11-forges/20-github.md @@ -0,0 +1,89 @@ +--- +toc_max_heading_level: 2 +--- + +# GitHub + +Woodpecker comes with built-in support for GitHub and GitHub Enterprise. +To use Woodpecker with GitHub the following environment variables should be set for the server component: + +```ini +WOODPECKER_GITHUB=true +WOODPECKER_GITHUB_CLIENT=YOUR_GITHUB_CLIENT_ID +WOODPECKER_GITHUB_SECRET=YOUR_GITHUB_CLIENT_SECRET +``` + +You will get these values from GitHub when you register your OAuth application. +To do so, go to Settings -> Developer Settings -> GitHub Apps -> New Oauth2 App. + +:::warning +Do not use a "GitHub App" instead of an Oauth2 app as the former will not work correctly with Woodpecker right now (because user access tokens are not being refreshed automatically) +::: + +## App Settings + +- Name: An arbitrary name for your App +- Homepage URL: The URL of your Woodpecker instance +- Callback URL: `https:///authorize` +- (optional) Upload the Woodpecker Logo: + +## Client Secret Creation + +After your App has been created, you can generate a client secret. +Use this one for the `WOODPECKER_GITHUB_SECRET` environment variable. + +## Configuration + +This is a full list of configuration options. Please note that many of these options use default configuration values that should work for the majority of installations. + +### `WOODPECKER_GITHUB` + +> Default: `false` + +Enables the GitHub driver. + +### `WOODPECKER_GITHUB_URL` + +> Default: `https://github.com` + +Configures the GitHub server address. + +### `WOODPECKER_GITHUB_CLIENT` + +> Default: empty + +Configures the GitHub OAuth client id to authorize access. + +### `WOODPECKER_GITHUB_CLIENT_FILE` + +> Default: empty + +Read the value for `WOODPECKER_GITHUB_CLIENT` from the specified filepath. + +### `WOODPECKER_GITHUB_SECRET` + +> Default: empty + +Configures the GitHub OAuth client secret. This is used to authorize access. + +### `WOODPECKER_GITHUB_SECRET_FILE` + +> Default: empty + +Read the value for `WOODPECKER_GITHUB_SECRET` from the specified filepath. + +### `WOODPECKER_GITHUB_MERGE_REF` + +> Default: `true` + +### `WOODPECKER_GITHUB_SKIP_VERIFY` + +> Default: `false` + +Configure if SSL verification should be skipped. + +### `WOODPECKER_GITHUB_PUBLIC_ONLY` + +> Default: `false` + +Configures the GitHub OAuth client to only obtain a token that can manage public repositories. diff --git a/docs/versioned_docs/version-2.5/30-administration/11-forges/30-gitea.md b/docs/versioned_docs/version-2.5/30-administration/11-forges/30-gitea.md new file mode 100644 index 0000000000..46249b9869 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/11-forges/30-gitea.md @@ -0,0 +1,103 @@ +--- +toc_max_heading_level: 2 +--- + +# Gitea / Forgejo + +Woodpecker comes with built-in support for Gitea and the "soft" fork Forgejo. To enable Gitea you should configure the Woodpecker container using the following environment variables: + +```ini +WOODPECKER_GITEA=true +WOODPECKER_GITEA_URL=YOUR_GITEA_URL +WOODPECKER_GITEA_CLIENT=YOUR_GITEA_CLIENT +WOODPECKER_GITEA_SECRET=YOUR_GITEA_CLIENT_SECRET +``` + +## Gitea on the same host with containers + +If you have Gitea also running on the same host within a container, make sure the agent does have access to it. +The agent tries to clone using the URL which Gitea reports through its API. For simplified connectivity, you should add the Woodpecker agent to the same docker network as Gitea is in. +Otherwise, the communication should go via the `docker0` gateway (usually 172.17.0.1). + +To configure the Docker network if the network's name is `gitea`, configure it like this: + +```diff title="docker-compose.yaml" + version: '3' + + services: + [...] + woodpecker-agent: + [...] + environment: + - [...] ++ - WOODPECKER_BACKEND_DOCKER_NETWORK=gitea +``` + +## Registration + +Register your application with Gitea to create your client id and secret. You can find the OAuth applications settings of Gitea at `https://gitea./user/settings/`. It is very import the authorization callback URL matches your http(s) scheme and hostname exactly with `https:///authorize` as the path. + +If you run the Woodpecker CI server on the same host as the Gitea instance, you might also need to allow local connections in Gitea, since version `v1.16`. Otherwise webhooks will fail. Add the following lines to your Gitea configuration (usually at `/etc/gitea/conf/app.ini`). + +```ini +[webhook] +ALLOWED_HOST_LIST=external,loopback +``` + +For reference see [Configuration Cheat Sheet](https://docs.gitea.io/en-us/config-cheat-sheet/#webhook-webhook). + +![gitea oauth setup](gitea_oauth.gif) + +## Configuration + +This is a full list of configuration options. Please note that many of these options use default configuration values that should work for the majority of installations. + +### `WOODPECKER_GITEA` + +> Default: `false` + +Enables the Gitea driver. + +### `WOODPECKER_GITEA_URL` + +> Default: `https://try.gitea.io` + +Configures the Gitea server address. + +### `WOODPECKER_GITEA_CLIENT` + +> Default: empty + +Configures the Gitea OAuth client id. This is used to authorize access. + +### `WOODPECKER_GITEA_CLIENT_FILE` + +> Default: empty + +Read the value for `WOODPECKER_GITEA_CLIENT` from the specified filepath + +### `WOODPECKER_GITEA_SECRET` + +> Default: empty + +Configures the Gitea OAuth client secret. This is used to authorize access. + +### `WOODPECKER_GITEA_SECRET_FILE` + +> Default: empty + +Read the value for `WOODPECKER_GITEA_SECRET` from the specified filepath + +### `WOODPECKER_GITEA_SKIP_VERIFY` + +> Default: `false` + +Configure if SSL verification should be skipped. + +## Advanced options + +### `WOODPECKER_DEV_GITEA_OAUTH_URL` + +> Default: value of `WOODPECKER_GITEA_URL` + +Configures the user-facing Gitea server address. Should be used if `WOODPECKER_GITEA_URL` points to an internal URL used for API requests. diff --git a/docs/versioned_docs/version-2.5/30-administration/11-forges/40-gitlab.md b/docs/versioned_docs/version-2.5/30-administration/11-forges/40-gitlab.md new file mode 100644 index 0000000000..3fff410c69 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/11-forges/40-gitlab.md @@ -0,0 +1,68 @@ +--- +toc_max_heading_level: 2 +--- + +# GitLab + +Woodpecker comes with built-in support for the GitLab version 8.2 and higher. To enable GitLab you should configure the Woodpecker container using the following environment variables: + +```ini +WOODPECKER_GITLAB=true +WOODPECKER_GITLAB_URL=http://gitlab.mycompany.com +WOODPECKER_GITLAB_CLIENT=95c0282573633eb25e82 +WOODPECKER_GITLAB_SECRET=30f5064039e6b359e075 +``` + +## Registration + +You must register your application with GitLab in order to generate a Client and Secret. Navigate to your account settings and choose Applications from the menu, and click New Application. + +Please use `http://woodpecker.mycompany.com/authorize` as the Authorization callback URL. Grant `api` scope to the application. + +If you run the Woodpecker CI server on a private IP (RFC1918) or use a non standard TLD (e.g. `.local`, `.intern`) with your GitLab instance, you might also need to allow local connections in GitLab, otherwise API requests will fail. In GitLab, navigate to the Admin dashboard, then go to `Settings > Network > Outbound requests` and enable `Allow requests to the local network from web hooks and services`. + +## Configuration + +This is a full list of configuration options. Please note that many of these options use default configuration values that should work for the majority of installations. + +### `WOODPECKER_GITLAB` + +> Default: `false` + +Enables the GitLab driver. + +### `WOODPECKER_GITLAB_URL` + +> Default: `https://gitlab.com` + +Configures the GitLab server address. + +### `WOODPECKER_GITLAB_CLIENT` + +> Default: empty + +Configures the GitLab OAuth client id. This is used to authorize access. + +### `WOODPECKER_GITLAB_CLIENT_FILE` + +> Default: empty + +Read the value for `WOODPECKER_GITLAB_CLIENT` from the specified filepath + +### `WOODPECKER_GITLAB_SECRET` + +> Default: empty + +Configures the GitLab OAuth client secret. This is used to authorize access. + +### `WOODPECKER_GITLAB_SECRET_FILE` + +> Default: empty + +Read the value for `WOODPECKER_GITLAB_SECRET` from the specified filepath + +### `WOODPECKER_GITLAB_SKIP_VERIFY` + +> Default: `false` + +Configure if SSL verification should be skipped. diff --git a/docs/versioned_docs/version-2.5/30-administration/11-forges/50-bitbucket.md b/docs/versioned_docs/version-2.5/30-administration/11-forges/50-bitbucket.md new file mode 100644 index 0000000000..d368e709c7 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/11-forges/50-bitbucket.md @@ -0,0 +1,75 @@ +--- +toc_max_heading_level: 2 +--- + +# Bitbucket + +Woodpecker comes with built-in support for Bitbucket Cloud. To enable Bitbucket Cloud you should configure the Woodpecker container using the following environment variables: + +```ini +WOODPECKER_BITBUCKET=true +WOODPECKER_BITBUCKET_CLIENT=... # called "Key" in Bitbucket +WOODPECKER_BITBUCKET_SECRET=... +``` + +## Registration + +You must register an OAuth application at Bitbucket in order to get a key and secret combination for Woodpecker. Navigate to your workspace settings and choose `OAuth consumers` from the menu, and finally click `Add Consumer` (the url should be like: `https://bitbucket.org/[your-project-name]/workspace/settings/api`). + +Please set a name and set the `Callback URL` like this: + +```uri +https:///authorize +``` + +![bitbucket oauth setup](bitbucket_oauth.png) + +Please also be sure to check the following permissions: + +- Account: Email, Read +- Workspace membership: Read +- Projects: Read +- Repositories: Read +- Pull requests: Read +- Webhooks: Read and Write + +![bitbucket permissions](bitbucket_permissions.png) + +## Configuration + +This is a full list of configuration options. Please note that many of these options use default configuration values that should work for the majority of installations. + +### `WOODPECKER_BITBUCKET` + +> Default: `false` + +Enables the Bitbucket driver. + +### `WOODPECKER_BITBUCKET_CLIENT` + +> Default: empty + +Configures the Bitbucket OAuth client key. This is used to authorize access. + +### `WOODPECKER_BITBUCKET_CLIENT_FILE` + +> Default: empty + +Read the value for `WOODPECKER_BITBUCKET_CLIENT` from the specified filepath + +### `WOODPECKER_BITBUCKET_SECRET` + +> Default: empty + +Configures the Bitbucket OAuth client secret. This is used to authorize access. + +### `WOODPECKER_BITBUCKET_SECRET_FILE` + +> Default: empty + +Read the value for `WOODPECKER_BITBUCKET_SECRET` from the specified filepath + +## Missing Features + +Path filters for pull requests are not supported. We are interested in patches to include this functionality. +If you are interested in contributing to Woodpecker and submitting a patch please **contact us** via [Discord](https://discord.gg/fcMQqSMXJy) or [Matrix](https://matrix.to/#/#WoodpeckerCI-Develop:obermui.de). diff --git a/docs/versioned_docs/version-2.5/30-administration/11-forges/60-bitbucket_datacenter.md b/docs/versioned_docs/version-2.5/30-administration/11-forges/60-bitbucket_datacenter.md new file mode 100644 index 0000000000..9304d13a14 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/11-forges/60-bitbucket_datacenter.md @@ -0,0 +1,98 @@ +--- +toc_max_heading_level: 2 +--- + +# Bitbucket Datacenter / Server + +:::warning +Woodpecker comes with experimental support for Bitbucket Datacenter / Server, formerly known as Atlassian Stash. +::: + +To enable Bitbucket Server you should configure the Woodpecker container using the following environment variables: + +```diff title="docker-compose.yaml" + version: '3' + + services: + woodpecker-server: + [...] + environment: + - [...] ++ - WOODPECKER_BITBUCKET_DC=true ++ - WOODPECKER_BITBUCKET_DC_GIT_USERNAME=foo ++ - WOODPECKER_BITBUCKET_DC_GIT_PASSWORD=bar ++ - WOODPECKER_BITBUCKET_DC_CLIENT_ID=xxx ++ - WOODPECKER_BITBUCKET_DC_CLIENT_SECRET=yyy ++ - WOODPECKER_BITBUCKET_DC_URL=http://stash.mycompany.com + + woodpecker-agent: + [...] +``` + +## Service Account + +Woodpecker uses `git+https` to clone repositories, however, Bitbucket Server does not currently support cloning repositories with an OAuth token. To work around this limitation, you must create a service account and provide the username and password to Woodpecker. This service account will be used to authenticate and clone private repositories. + +## Registration + +Woodpecker must be registered with Bitbucket Datacenter / Server. In the administration section of Bitbucket choose "Application Links" and then "Create link". Woodpecker should be listed as "External Application" and the direction should be set to "Incomming". Note the client id and client secret of the registration to be used in the configuration of Woodpecker. + +See also [Configure an incoming link](https://confluence.atlassian.com/bitbucketserver/configure-an-incoming-link-1108483657.html). + +## Configuration + +This is a full list of configuration options. Please note that many of these options use default configuration values that should work for the majority of installations. + +### `WOODPECKER_BITBUCKET_DC` + +> Default: `false` + +Enables the Bitbucket Server driver. + +### `WOODPECKER_BITBUCKET_DC_URL` + +> Default: empty + +Configures the Bitbucket Server address. + +### `WOODPECKER_BITBUCKET_DC_CLIENT_ID` + +> Default: empty + +Configures your Bitbucket Server OAUth 2.0 client id. + +### `WOODPECKER_BITBUCKET_DC_CLIENT_SECRET` + +> Default: empty + +Configures your Bitbucket Server OAUth 2.0 client secret. + +### `WOODPECKER_BITBUCKET_DC_GIT_USERNAME` + +> Default: empty + +This username is used to authenticate and clone all private repositories. + +### `WOODPECKER_BITBUCKET_DC_GIT_USERNAME_FILE` + +> Default: empty + +Read the value for `WOODPECKER_BITBUCKET_DC_GIT_USERNAME` from the specified filepath + +### `WOODPECKER_BITBUCKET_DC_GIT_PASSWORD` + +> Default: empty + +The password is used to authenticate and clone all private repositories. + +### `WOODPECKER_BITBUCKET_DC_GIT_PASSWORD_FILE` + +> Default: empty + +Read the value for `WOODPECKER_BITBUCKET_DC_GIT_PASSWORD` from the specified filepath + +### `WOODPECKER_BITBUCKET_DC_SKIP_VERIFY` + +> Default: `false` + +Configure if SSL verification should be skipped. diff --git a/docs/versioned_docs/version-2.5/30-administration/11-forges/_category_.yaml b/docs/versioned_docs/version-2.5/30-administration/11-forges/_category_.yaml new file mode 100644 index 0000000000..e240bfc513 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/11-forges/_category_.yaml @@ -0,0 +1,6 @@ +label: 'Forges' +collapsible: true +collapsed: true +link: + type: 'doc' + id: 'overview' diff --git a/docs/versioned_docs/version-2.5/30-administration/11-forges/bitbucket_oauth.png b/docs/versioned_docs/version-2.5/30-administration/11-forges/bitbucket_oauth.png new file mode 100644 index 0000000000000000000000000000000000000000..17ecf38ab96c814369be259a155df6342839ba27 GIT binary patch literal 29361 zcmdqIWmFtZxGf9;0>LFX0|X~Xa2eb!IKkZm1Rn_Q?yf^{cPF^J5AG6Va0xD#_dWNV zbvX7$vXs;;M={p{M^)iqTerlcT+hD?ME0|SF5BQ3510|N(q`-UOGy_IaU z7U{iZV3fY9NxZ(kK0H0&-9K$??Op%9!)K7ceJgss-)qTweZ97JjdU(t-h6q5zP>ge zy>_R?zTV%wKCZmJp1rQMWq9R!hqlEJ-OfC`zCO+k-Mw1>OmGPSd-%q`>~?n#PC6tG zygqL^dd5LY5-(m~9sN?)Ycj4+PxcRvyDwkulSf}KW-97BZKHdv-F_vH-0j@GygvQ8 ze0cE=PTV`Xd_M17d3qsZkbijmn?3g!)qC-JGusp&8`^$Sz5ANx5&8G};(oTy5j>UQ zn-S1-`1*Vp7aae1b(X*M@_ID9cXoHwUEtsc&JRj{Uj7~AU1q?hbxA(Jr)6q538{E^D97`%3xEY5#H%P zgOmAKzAtSZdAdhFPh~Dvr57h93UMkidyf7cDc>Dyoh(SmHdV`*dGslmKACLz5l|e~ zumPE#i>#bsX7m1i|1!RL7Otom=T%sfpC6Fi;OSc?_s!lEsOUHTOvSA=6K`F4@sc%h z-aECm)n8j)QR@+1I@efOy>b6NYnIlrr>i)xv!yk1{w1Pl*s}3%CEb2#|E8s5WWB9~ zN7}4$V2M;Uf4nNEW${!k_W-&&JKE8|0~uQ!?xeD84)FUm9cfxQaoFymlh-}z|i{x4khKVz#rgabDq*fB3?po4jA(ez>#88#*6T+V!$jleGErt8^gW!=?~& zA!1){YHIPb`&!;Cv?BAjwfr}Q(1DXb$HhZCo_cywHdgb{%bq0n-NvY+pXz6jTmNrQ zXfQB#HZtNOYCo5cGqo&nLzc{oKOB ztQaXB5BTeTZiuq(A70HF9!|s{8@e4u_fw-(T{S>dpeyZ}HjR3m##+4Q(&x*tt;OE2 zF3-owF?4DqfAat5aXC4APb?$%j21}l<3|ydj5RPLiF}_ROb&l6Q&j;aKkp zHAg|o|E4xFl$gr4azNWIrZzo9waN0Kgz@1fKE5<`X{DI3YI$bJHQT`<$+pU~X@k z39}w8jnUN>1?;xVDa<;!Igu9)Z#ghJtZeT+yr$CEk}6(U}-heEXhe#OtHt=%S$Eu*F1%9QX znb8A|Wu+p=%F3YYeg<`ILn>u z@qZacZyfz7O*P>=`xU&svJgM6Va;)a(?q|=Q~PIJZm%|8x!pog1ak#i|8iRNP7KTh z3+y*5h8sc{+f7Pb{}eBkm;^79b*b0l>eF@9VD~3?nR7T#@?ps; z@_?4>L8~#7fil-;8VXRtznkjjjhGIPs%^M3pB9?a7Px=PbYaD~fM>8ael86rGG% z2rv~U4qRD1jpcWX0=~tJT2W%u&g{^9J-3<+4FW3DDMZ-~+gFg)C2zOhT77-4tTolI z4=0y?4}yGW_Y?3eZbwo2i}I`Z_$js&{U^EGAHNeDC%km>JirIdu%KIDX$QvQ3})s+Zj}Q)G>3>U zXXCl}D{#e%vZ?$Ry{nu?B|>*t3%1OS#Vu42;aOvxv&;+~W^X=zt$7c>$=(Vyi!IOQ zmokm}9E9{fk#;-AXhX1|q){4PKwL*EaE(w3N{jhxrD(`9{(=C}J zmn*4RNt^R~`sOHVI=tzT2iDoQaE!*U+X#h{^Zvj&p54T@Pgd6#U zGgN~B4 z!|7V6BC^4bE$*&6CmBcDd{fM3ZS5-kT!OwjR5&3h#4hemFX7(bG*n*7n-2d|dObo1 z?niO&PO7{JC{`B&3m8G3EvCdL-dh4B1mOqcM=D_OjFSSIO0*oc3I0l6kudNK5Y8& zF2+Kz$UG;B{W7xA11~`1<NSnhMP*r6#ac!&5CE7@+-)9-Hn^mP*VI`E44N`ChRN5`}F!mT6X

9^^zys+v!Oh?HfrLHrCO%et^PKqgy>>RfA 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%0ApiA%=OlsK?Z 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 i_?O7{zi4^J?@>~0NvdZ4;4}O)bl*Z$ Agents -> Add agent` + ![Agent creation](./new-agent-registration.png) + ![Agent created](./new-agent-created.png) +1. The generated token from the previous step has to be provided to the agent using `WOODPECKER_AGENT_SECRET` +1. The agent will connect to the server using the provided token and will update its status in the UI: + ![Agent connected](./new-agent-connected.png) + +## All agent configuration options + +Here is the full list of configuration options and their default variables. + +### `WOODPECKER_SERVER` + +> Default: `localhost:9000` + +Configures gRPC address of the server. + +### `WOODPECKER_USERNAME` + +> Default: `x-oauth-basic` + +The gRPC username. + +### `WOODPECKER_AGENT_SECRET` + +> Default: empty + +A shared secret used by server and agents to authenticate communication. A secret can be generated by `openssl rand -hex 32`. + +### `WOODPECKER_AGENT_SECRET_FILE` + +> Default: empty + +Read the value for `WOODPECKER_AGENT_SECRET` from the specified filepath, e.g. `/etc/woodpecker/agent-secret.conf` + +### `WOODPECKER_LOG_LEVEL` + +> Default: empty + +Configures the logging level. Possible values are `trace`, `debug`, `info`, `warn`, `error`, `fatal`, `panic`, `disabled` and empty. + +### `WOODPECKER_DEBUG_PRETTY` + +> Default: `false` + +Enable pretty-printed debug output. + +### `WOODPECKER_DEBUG_NOCOLOR` + +> Default: `true` + +Disable colored debug output. + +### `WOODPECKER_HOSTNAME` + +> Default: empty + +Configures the agent hostname. + +### `WOODPECKER_AGENT_CONFIG_FILE` + +> Default: `/etc/woodpecker/agent.conf` + +Configures the path of the agent config file. + +### `WOODPECKER_MAX_WORKFLOWS` + +> Default: `1` + +Configures the number of parallel workflows. + +### `WOODPECKER_FILTER_LABELS` + +> Default: empty + +Configures labels to filter pipeline pick up. Use a list of key-value pairs like `key=value,second-key=*`. `*` can be used as a wildcard. By default, agents provide three additional labels `platform=os/arch`, `hostname=my-agent` and `repo=*` which can be overwritten if needed. To learn how labels work, check out the [pipeline syntax page](../20-usage/20-workflow-syntax.md#labels). + +### `WOODPECKER_HEALTHCHECK` + +> Default: `true` + +Enable healthcheck endpoint. + +### `WOODPECKER_HEALTHCHECK_ADDR` + +> Default: `:3000` + +Configures healthcheck endpoint address. + +### `WOODPECKER_KEEPALIVE_TIME` + +> Default: empty + +After a duration of this time of no activity, the agent pings the server to check if the transport is still alive. + +### `WOODPECKER_KEEPALIVE_TIMEOUT` + +> Default: `20s` + +After pinging for a keepalive check, the agent waits for a duration of this time before closing the connection if no activity. + +### `WOODPECKER_GRPC_SECURE` + +> Default: `false` + +Configures if the connection to `WOODPECKER_SERVER` should be made using a secure transport. + +### `WOODPECKER_GRPC_VERIFY` + +> Default: `true` + +Configures if the gRPC server certificate should be verified, only valid when `WOODPECKER_GRPC_SECURE` is `true`. + +### `WOODPECKER_BACKEND` + +> Default: `auto-detect` + +Configures the backend engine to run pipelines on. Possible values are `auto-detect`, `docker`, `local` or `kubernetes`. + +### `WOODPECKER_BACKEND_DOCKER_*` + +See [Docker backend configuration](./22-backends/10-docker.md#configuration) + +### `WOODPECKER_BACKEND_K8S_*` + +See [Kubernetes backend configuration](./22-backends/40-kubernetes.md#configuration) + +### `WOODPECKER_BACKEND_LOCAL_*` + +See [Local backend configuration](./22-backends/20-local.md#options) + +## Advanced Settings + +:::warning +Only change these If you know what you do. +::: + +### `WOODPECKER_CONNECT_RETRY_COUNT` + +> Default: `5` + +Configures number of times agent retries to connect to the server. + +### `WOODPECKER_CONNECT_RETRY_DELAY` + +> Default: `2s` + +Configures delay between agent connection retries to the server. diff --git a/docs/versioned_docs/version-2.5/30-administration/22-backends/10-docker.md b/docs/versioned_docs/version-2.5/30-administration/22-backends/10-docker.md new file mode 100644 index 0000000000..faa9e3d91d --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/22-backends/10-docker.md @@ -0,0 +1,64 @@ +--- +toc_max_heading_level: 2 +--- + +# Docker backend + +This is the original backend used with Woodpecker. The docker backend executes each step inside a separate container started on the agent. + +## Docker credentials + +Woodpecker supports [Docker credentials](https://github.com/docker/docker-credential-helpers) to securely store registry credentials. Install your corresponding credential helper and configure it in your Docker config file passed via [`WOODPECKER_DOCKER_CONFIG`](../10-server-config.md#woodpecker_docker_config). + +To add your credential helper to the Woodpecker server container you could use the following code to build a custom image: + +```dockerfile +FROM woodpeckerci/woodpecker-server:latest-alpine + +RUN apk add -U --no-cache docker-credential-ecr-login +``` + +## Podman support + +While the agent was developed with Docker/Moby, Podman can also be used by setting the environment variable `DOCKER_HOST` to point to the Podman socket. In order to work without workarounds, Podman 4.0 (or above) is required. + +## Image cleanup + +The agent **will not** automatically remove images from the host. This task should be managed by the host system. For example, you can use a cron job to periodically do clean-up tasks for the CI runner. + +:::danger +The following commands **are destructive** and **irreversible** it is highly recommended that you test these commands on your system before running them in production via a cron job or other automation. +::: + +### Remove all unused images + +```bash +docker image rm $(docker images --filter "dangling=true" -q --no-trunc) +``` + +### Remove Woodpecker volumes + +```bash +docker volume rm $(docker volume ls --filter name=^wp_* --filter dangling=true -q) +``` + +## Configuration + +### `WOODPECKER_BACKEND_DOCKER_NETWORK` + +> Default: empty + +Set to the name of an existing network which will be attached to all your pipeline containers (steps). Please be careful as this allows the containers of different pipelines to access each other! + +### `WOODPECKER_BACKEND_DOCKER_ENABLE_IPV6` + +> Default: `false` + +Enable IPv6 for the networks used by pipeline containers (steps). Make sure you configured your docker daemon to support IPv6. + +### `WOODPECKER_BACKEND_DOCKER_VOLUMES` + +> Default: empty + +List of default volumes separated by comma to be mounted to all pipeline containers (steps). For example to use custom CA +certificates installed on host and host timezone use `/etc/ssl/certs:/etc/ssl/certs:ro,/etc/timezone:/etc/timezone`. diff --git a/docs/versioned_docs/version-2.5/30-administration/22-backends/20-local.md b/docs/versioned_docs/version-2.5/30-administration/22-backends/20-local.md new file mode 100644 index 0000000000..7ec95f0f86 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/22-backends/20-local.md @@ -0,0 +1,71 @@ +--- +toc_max_heading_level: 3 +--- + +# Local backend + +:::danger +The local backend will execute the pipelines on the local system without any isolation of any kind. +::: + +:::note +Currently we do not support services for this backend. +[Read more here](https://github.com/woodpecker-ci/woodpecker/issues/3095). +::: + +Since the code runs directly in the same context as the agent (same user, same +filesystem), a malicious pipeline could be used to access the agent +configuration especially the `WOODPECKER_AGENT_SECRET` variable. + +It is recommended to use this backend only for private setup where the code and +pipeline can be trusted. You shouldn't use it for a public facing CI where +anyone can submit code or add new repositories. You shouldn't execute the agent +as a privileged user (root). + +The local backend will use a random directory in `$TMPDIR` to store the cloned +code and execute commands. + +In order to use this backend, you need to download (or build) the +[binary](https://github.com/woodpecker-ci/woodpecker/releases/latest) of the +agent, configure it and run it on the host machine. + +## Usage + +To enable the local backend, add this to your configuration: + +```ini +WOODPECKER_BACKEND=local +``` + +### Shell + +The `image` entry is used to specify the shell, such as Bash or Fish, that is +used to run the commands. + +```yaml title=".woodpecker.yaml" +steps: + - name: build + image: bash + commands: [...] +``` + +### Plugins + +Plugins are just executable binaries: + +```yaml +steps: + - name: build + image: /usr/bin/tree +``` + +If no commands are provided, we treat them as plugins in the usual manner. +In the context of the local backend, plugins are simply executable binaries, which can be located using their name if they are listed in `$PATH`, or through an absolute path. + +### Options + +#### `WOODPECKER_BACKEND_LOCAL_TEMP_DIR` + +> Default: default temp directory + +Directory to create folders for workflows. diff --git a/docs/versioned_docs/version-2.5/30-administration/22-backends/40-kubernetes.md b/docs/versioned_docs/version-2.5/30-administration/22-backends/40-kubernetes.md new file mode 100644 index 0000000000..e9a71e0a5a --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/22-backends/40-kubernetes.md @@ -0,0 +1,292 @@ +--- +toc_max_heading_level: 2 +--- + +# Kubernetes backend + +The Kubernetes backend executes steps inside standalone Pods. A temporary PVC is created for the lifetime of the pipeline to transfer files between steps. + +## Images from private registries + +In order to pull private container images defined in your pipeline YAML you must provide [registry credentials in Kubernetes Secret](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/). +As the Secret is Agent-wide, it has to be placed in namespace defined by `WOODPECKER_BACKEND_K8S_NAMESPACE`. +Besides, you need to provide the Secret name to Agent via `WOODPECKER_BACKEND_K8S_PULL_SECRET_NAMES`. + +## Job specific configuration + +### Resources + +The Kubernetes backend also allows for specifying requests and limits on a per-step basic, most commonly for CPU and memory. +We recommend to add a `resources` definition to all steps to ensure efficient scheduling. + +Here is an example definition with an arbitrary `resources` definition below the `backend_options` section: + +```yaml +steps: + - name: 'My kubernetes step' + image: alpine + commands: + - echo "Hello world" + backend_options: + kubernetes: + resources: + requests: + memory: 200Mi + cpu: 100m + limits: + memory: 400Mi + cpu: 1000m +``` + +You can use [Limit Ranges](https://kubernetes.io/docs/concepts/policy/limit-range/) if you want to set the limits by per-namespace basis. + +### Runtime class + +`runtimeClassName` specifies the name of the RuntimeClass which will be used to run this Pod. If no `runtimeClassName` is specified, the default RuntimeHandler will be used. +See the [Kubernetes documentation](https://kubernetes.io/docs/concepts/containers/runtime-class/) for more information on specifying runtime classes. + +### Service account + +`serviceAccountName` specifies the name of the ServiceAccount which the Pod will mount. This service account must be created externally. +See the [Kubernetes documentation](https://kubernetes.io/docs/concepts/security/service-accounts/) for more information on using service accounts. + +### Node selector + +`nodeSelector` specifies the labels which are used to select the node on which the job will be executed. + +Labels defined here will be appended to a list which already contains `"kubernetes.io/arch"`. +By default `"kubernetes.io/arch"` is inferred from the agents' platform. One can override it by setting that label in the `nodeSelector` section of the `backend_options`. +Without a manual overwrite, builds will be randomly assigned to the runners and inherit their respective architectures. + +To overwrite this, one needs to set the label in the `nodeSelector` section of the `backend_options`. +A practical example for this is when running a matrix-build and delegating specific elements of the matrix to run on a specific architecture. +In this case, one must define an arbitrary key in the matrix section of the respective matrix element: + +```yaml +matrix: + include: + - NAME: runner1 + ARCH: arm64 +``` + +And then overwrite the `nodeSelector` in the `backend_options` section of the step(s) using the name of the respective env var: + +```yaml +[...] + backend_options: + kubernetes: + nodeSelector: + kubernetes.io/arch: "${ARCH}" +``` + +You can use [PodNodeSelector](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#podnodeselector) admission controller if you want to set the node selector by per-namespace basis. + +### Tolerations + +When you use `nodeSelector` and the node pool is configured with Taints, you need to specify the Tolerations. Tolerations allow the scheduler to schedule Pods with matching taints. +See the [Kubernetes documentation](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) for more information on using tolerations. + +Example pipeline configuration: + +```yaml +steps: + - name: build + image: golang + commands: + - go get + - go build + - go test + backend_options: + kubernetes: + serviceAccountName: 'my-service-account' + resources: + requests: + memory: 128Mi + cpu: 1000m + limits: + memory: 256Mi + nodeSelector: + beta.kubernetes.io/instance-type: p3.8xlarge + tolerations: + - key: 'key1' + operator: 'Equal' + value: 'value1' + effect: 'NoSchedule' + tolerationSeconds: 3600 +``` + +### Volumes + +To mount volumes a PersistentVolume (PV) and PersistentVolumeClaim (PVC) are needed on the cluster which can be referenced in steps via the `volumes` option. +Assuming a PVC named `woodpecker-cache` exists, it can be referenced as follows in a step: + +```yaml +steps: + - name: "Restore Cache" + image: meltwater/drone-cache + volumes: + - woodpecker-cache:/woodpecker/src/cache + settings: + mount: + - "woodpecker-cache" + [...] +``` + +### Security context + +Use the following configuration to set the [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) for the Pod/container running a given pipeline step: + +```yaml +steps: + - name: test + image: alpine + commands: + - echo Hello world + backend_options: + kubernetes: + securityContext: + runAsUser: 999 + runAsGroup: 999 + privileged: true + [...] +``` + +Note that the `backend_options.kubernetes.securityContext` object allows you to set both Pod and container level security context options in one object. +By default, the properties will be set at the Pod level. Properties that are only supported on the container level will be set there instead. So, the +configuration shown above will result in something like the following Pod spec: + +```yaml +kind: Pod +spec: + securityContext: + runAsUser: 999 + runAsGroup: 999 + containers: + - name: wp-01hcd83q7be5ymh89k5accn3k6-0-step-0 + image: alpine + securityContext: + privileged: true + [...] +``` + +You can also restrict a container's syscalls with [seccomp](https://kubernetes.io/docs/tutorials/security/seccomp/) profile + +```yaml +backend_options: + kubernetes: + securityContext: + seccompProfile: + type: Localhost + localhostProfile: profiles/audit.json +``` + +or restrict a container's access to resources by specifying [AppArmor](https://kubernetes.io/docs/tutorials/security/apparmor/) profile + +```yaml +backend_options: + kubernetes: + securityContext: + apparmorProfile: + type: Localhost + localhostProfile: k8s-apparmor-example-deny-write +``` + +:::note +AppArmor syntax follows [KEP-24](https://github.com/kubernetes/enhancements/blob/fddcbb9cbf3df39ded03bad71228265ac6e5215f/keps/sig-node/24-apparmor/README.md). +::: + +### Annotations and labels + +You can specify arbitrary [annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) and [labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/) to be set on the Pod definition for a given workflow step using the following configuration: + +```yaml +backend_options: + kubernetes: + annotations: + workflow-group: alpha + io.kubernetes.cri-o.Devices: /dev/fuse + labels: + environment: ci + app.kubernetes.io/name: builder +``` + +In order to enable this configuration you need to set the appropriate environment variables to `true` on the woodpecker agent: +[WOODPECKER_BACKEND_K8S_POD_ANNOTATIONS_ALLOW_FROM_STEP](#woodpecker_backend_k8s_pod_annotations_allow_from_step) and/or [WOODPECKER_BACKEND_K8S_POD_LABELS_ALLOW_FROM_STEP](#woodpecker_backend_k8s_pod_labels_allow_from_step). + +## Tips and tricks + +### CRI-O + +CRI-O users currently need to configure the workspace for all workflows in order for them to run correctly. Add the following at the beginning of your configuration: + +```yaml +workspace: + base: '/woodpecker' + path: '/' +``` + +See [this issue](https://github.com/woodpecker-ci/woodpecker/issues/2510) for more details. + +## Configuration + +These env vars can be set in the `env:` sections of the agent. + +### `WOODPECKER_BACKEND_K8S_NAMESPACE` + +> Default: `woodpecker` + +The namespace to create worker Pods in. + +### `WOODPECKER_BACKEND_K8S_VOLUME_SIZE` + +> Default: `10G` + +The volume size of the pipeline volume. + +### `WOODPECKER_BACKEND_K8S_STORAGE_CLASS` + +> Default: empty + +The storage class to use for the pipeline volume. + +### `WOODPECKER_BACKEND_K8S_STORAGE_RWX` + +> Default: `true` + +Determines if `RWX` should be used for the pipeline volume's [access mode](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes). If false, `RWO` is used instead. + +### `WOODPECKER_BACKEND_K8S_POD_LABELS` + +> Default: empty + +Additional labels to apply to worker Pods. Must be a YAML object, e.g. `{"example.com/test-label":"test-value"}`. + +### `WOODPECKER_BACKEND_K8S_POD_LABELS_ALLOW_FROM_STEP` + +> Default: `false` + +Determines if additional Pod labels can be defined from a step's backend options. + +### `WOODPECKER_BACKEND_K8S_POD_ANNOTATIONS` + +> Default: empty + +Additional annotations to apply to worker Pods. Must be a YAML object, e.g. `{"example.com/test-annotation":"test-value"}`. + +### `WOODPECKER_BACKEND_K8S_POD_ANNOTATIONS_ALLOW_FROM_STEP` + +> Default: `false` + +Determines if Pod annotations can be defined from a step's backend options. + +### `WOODPECKER_BACKEND_K8S_SECCTX_NONROOT` + +> Default: `false` + +Determines if containers must be required to run as non-root users. + +### `WOODPECKER_BACKEND_K8S_PULL_SECRET_NAMES` + +> Default: empty + +Secret names to pull images from private repositories. See, how to [Pull an Image from a Private Registry](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/). diff --git a/docs/versioned_docs/version-2.5/30-administration/22-backends/50-custom-backends.md b/docs/versioned_docs/version-2.5/30-administration/22-backends/50-custom-backends.md new file mode 100644 index 0000000000..3c771c4ef1 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/22-backends/50-custom-backends.md @@ -0,0 +1,23 @@ +# Custom backends + +If none of our backends fits your usecases, you can write your own. + +Therefore, implement the interface `"go.woodpecker-ci.org/woodpecker/woodpecker/v2/pipeline/backend/types".Backend` and +build a custom agent using your backend with this `main.go`: + +```go +package main + +import ( + "go.woodpecker-ci.org/woodpecker/v2/cmd/agent/core" + backendTypes "go.woodpecker-ci.org/woodpecker/v2/pipeline/backend/types" +) + +func main() { + core.RunAgent([]backendTypes.Backend{ + yourBackend, + }) +} +``` + +It is also possible to use multiple backends, you can select with [`WOODPECKER_BACKEND`](../15-agent-config.md#woodpecker_backend) between them. diff --git a/docs/versioned_docs/version-2.5/30-administration/22-backends/_category_.yaml b/docs/versioned_docs/version-2.5/30-administration/22-backends/_category_.yaml new file mode 100644 index 0000000000..556444f02f --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/22-backends/_category_.yaml @@ -0,0 +1,4 @@ +label: 'Backends' +# position: 3 +collapsible: true +collapsed: true diff --git a/docs/versioned_docs/version-2.5/30-administration/30-database.md b/docs/versioned_docs/version-2.5/30-administration/30-database.md new file mode 100644 index 0000000000..e3e33ba7d1 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/30-database.md @@ -0,0 +1,53 @@ +# Databases + +The default database engine of Woodpecker is an embedded SQLite database which requires zero installation or configuration. But you can replace it with a MySQL/MariaDB or Postgres database. + +## Configure SQLite + +By default Woodpecker uses a SQLite database stored under `/var/lib/woodpecker/`. If using containers, you can mount a [data volume](https://docs.docker.com/storage/volumes/#create-and-manage-volumes) to persist the SQLite database. + +```diff title="docker-compose.yaml" + version: '3' + + services: + woodpecker-server: + [...] ++ volumes: ++ - woodpecker-server-data:/var/lib/woodpecker/ +``` + +## Configure MySQL/MariaDB + +The below example demonstrates MySQL database configuration. See the official driver [documentation](https://github.com/go-sql-driver/mysql#dsn-data-source-name) for configuration options and examples. +The minimum version of MySQL/MariaDB required is determined by the `go-sql-driver/mysql` - see [it's README](https://github.com/go-sql-driver/mysql#requirements) for more information. + +```ini +WOODPECKER_DATABASE_DRIVER=mysql +WOODPECKER_DATABASE_DATASOURCE=root:password@tcp(1.2.3.4:3306)/woodpecker?parseTime=true +``` + +## Configure Postgres + +The below example demonstrates Postgres database configuration. See the official driver [documentation](https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING) for configuration options and examples. +Please use Postgres versions equal or higher than **11**. + +```ini +WOODPECKER_DATABASE_DRIVER=postgres +WOODPECKER_DATABASE_DATASOURCE=postgres://root:password@1.2.3.4:5432/postgres?sslmode=disable +``` + +## Database Creation + +Woodpecker does not create your database automatically. If you are using the MySQL or Postgres driver you will need to manually create your database using `CREATE DATABASE`. + +## Database Migration + +Woodpecker automatically handles database migration, including the initial creation of tables and indexes. New versions of Woodpecker will automatically upgrade the database unless otherwise specified in the release notes. + +## Database Backups + +Woodpecker does not perform database backups. This should be handled by separate third party tools provided by your database vendor of choice. + +## Database Archiving + +Woodpecker does not perform data archival; it considered out-of-scope for the project. Woodpecker is rather conservative with the amount of data it stores, however, you should expect the database logs to grow the size of your database considerably. diff --git a/docs/versioned_docs/version-2.5/30-administration/60-ssl.md b/docs/versioned_docs/version-2.5/30-administration/60-ssl.md new file mode 100644 index 0000000000..755ba205d8 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/60-ssl.md @@ -0,0 +1,90 @@ +# SSL + +Woodpecker supports two ways of enabling SSL communication. You can either use Let's Encrypt to get automated SSL support with +renewal or provide your own SSL certificates. + +## Let's Encrypt + +Woodpecker supports automated SSL configuration and updates using Let's Encrypt. + +You can enable Let's Encrypt by making the following modifications to your server configuration: + +```ini +WOODPECKER_LETS_ENCRYPT=true +WOODPECKER_LETS_ENCRYPT_EMAIL=ssl-admin@example.tld +``` + +Note that Woodpecker uses the hostname from the `WOODPECKER_HOST` environment variable when requesting certificates. For example, if `WOODPECKER_HOST=https://example.com` is set the certificate is requested for `example.com`. To receive emails before certificates expire Let's Encrypt requires an email address. You can set it with `WOODPECKER_LETS_ENCRYPT_EMAIL=ssl-admin@example.tld`. + +The SSL certificates are stored in `$HOME/.local/share/certmagic` for binary versions of Woodpecker and in `/var/lib/woodpecker` for the Container versions of it. You can set a custom path by setting `XDG_DATA_HOME` if required. + +> Once enabled you can visit the Woodpecker UI with http and the HTTPS address. HTTP will be redirected to HTTPS. + +### Certificate Cache + +Woodpecker writes the certificates to `/var/lib/woodpecker/certmagic/`. + +### Certificate Updates + +Woodpecker uses the official Go acme library which will handle certificate upgrades. There should be no addition configuration or management required. + +## SSL with own certificates + +Woodpecker supports SSL configuration by mounting certificates into your container. + +```ini +WOODPECKER_SERVER_CERT=/etc/certs/woodpecker.example.com/server.crt +WOODPECKER_SERVER_KEY=/etc/certs/woodpecker.example.com/server.key +``` + +### Certificate Chain + +The most common problem encountered is providing a certificate file without the intermediate chain. + +> LoadX509KeyPair reads and parses a public/private key pair from a pair of files. The files must contain PEM encoded data. The certificate file may contain intermediate certificates following the leaf certificate to form a certificate chain. + +### Certificate Errors + +SSL support is provided using the [ListenAndServeTLS](https://golang.org/pkg/net/http/#ListenAndServeTLS) function from the Go standard library. If you receive certificate errors or warnings please examine your configuration more closely. + +### Running in containers + +Update your configuration to expose the following ports: + +```diff title="docker-compose.yaml" + version: '3' + + services: + woodpecker-server: + [...] + ports: ++ - 80:80 ++ - 443:443 + - 9000:9000 +``` + +Update your configuration to mount your certificate and key: + +```diff title="docker-compose.yaml" + version: '3' + + services: + woodpecker-server: + [...] + volumes: ++ - /etc/certs/woodpecker.example.com/server.crt:/etc/certs/woodpecker.example.com/server.crt ++ - /etc/certs/woodpecker.example.com/server.key:/etc/certs/woodpecker.example.com/server.key +``` + +Update your configuration to provide the paths of your certificate and key: + +```diff title="docker-compose.yaml" + version: '3' + + services: + woodpecker-server: + [...] + environment: ++ - WOODPECKER_SERVER_CERT=/etc/certs/woodpecker.example.com/server.crt ++ - WOODPECKER_SERVER_KEY=/etc/certs/woodpecker.example.com/server.key +``` diff --git a/docs/versioned_docs/version-2.5/30-administration/70-proxy.md b/docs/versioned_docs/version-2.5/30-administration/70-proxy.md new file mode 100644 index 0000000000..1e253e4574 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/70-proxy.md @@ -0,0 +1,199 @@ +# Proxy + +## Apache + +This guide provides a brief overview for installing Woodpecker server behind the Apache2 web-server. This is an example configuration: + +```apacheconf +ProxyPreserveHost On + +RequestHeader set X-Forwarded-Proto "https" + +ProxyPass / http://127.0.0.1:8000/ +ProxyPassReverse / http://127.0.0.1:8000/ +``` + +You must have these Apache modules installed: + +- `proxy` +- `proxy_http` + +You must configure Apache to set `X-Forwarded-Proto` when using https. + +```diff + ProxyPreserveHost On + ++RequestHeader set X-Forwarded-Proto "https" + + ProxyPass / http://127.0.0.1:8000/ + ProxyPassReverse / http://127.0.0.1:8000/ +``` + +## Nginx + +This guide provides a basic overview for installing Woodpecker server behind the Nginx web-server. For more advanced configuration options please consult the official Nginx [documentation](https://docs.nginx.com/nginx/admin-guide). + +Example configuration: + +```nginx +server { + listen 80; + server_name woodpecker.example.com; + + location / { + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Host $http_host; + + proxy_pass http://127.0.0.1:8000; + proxy_redirect off; + proxy_http_version 1.1; + proxy_buffering off; + + chunked_transfer_encoding off; + } +} +``` + +You must configure the proxy to set `X-Forwarded` proxy headers: + +```diff + server { + listen 80; + server_name woodpecker.example.com; + + location / { ++ proxy_set_header X-Forwarded-For $remote_addr; ++ proxy_set_header X-Forwarded-Proto $scheme; + + proxy_pass http://127.0.0.1:8000; + proxy_redirect off; + proxy_http_version 1.1; + proxy_buffering off; + + chunked_transfer_encoding off; + } + } +``` + +## Caddy + +This guide provides a brief overview for installing Woodpecker server behind the [Caddy web-server](https://caddyserver.com/). This is an example caddyfile proxy configuration: + +```caddy +# expose WebUI and API +woodpecker.example.com { + reverse_proxy woodpecker-server:8000 +} + +# expose gRPC +woodpeckeragent.example.com { + reverse_proxy h2c://woodpecker-server:9000 +} +``` + +:::note +Above configuration shows how to create reverse-proxies for web and agent communication. If your agent uses SSL do not forget to enable [`WOODPECKER_GRPC_SECURE`](./15-agent-config.md#woodpecker_grpc_secure). +::: + +## Tunnelmole + +[Tunnelmole](https://github.com/robbie-cahill/tunnelmole-client) is an open source tunneling tool. + +Start by [installing tunnelmole](https://github.com/robbie-cahill/tunnelmole-client#installation). + +After the installation, run the following command to start tunnelmole: + +```bash +tmole 8000 +``` + +It will start a tunnel and will give a response like this: + +```bash +➜ ~ tmole 8000 +http://bvdo5f-ip-49-183-170-144.tunnelmole.net is forwarding to localhost:8000 +https://bvdo5f-ip-49-183-170-144.tunnelmole.net is forwarding to localhost:8000 +``` + +Set `WOODPECKER_HOST` to the Tunnelmole URL (`xxx.tunnelmole.net`) and start the server. + +## Ngrok + +[Ngrok](https://ngrok.com/) is a popular closed source tunnelling tool. After installing ngrok, open a new console and run the following command: + +```bash +ngrok http 8000 +``` + +Set `WOODPECKER_HOST` to the ngrok URL (usually xxx.ngrok.io) and start the server. + +## Traefik + +To install the Woodpecker server behind a [Traefik](https://traefik.io/) load balancer, you must expose both the `http` and the `gRPC` ports. Here is a comprehensive example, considering you are running Traefik with docker swarm and want to do TLS termination and automatic redirection from http to https. + +```yaml +version: '3.8' + +services: + server: + image: woodpeckerci/woodpecker-server:latest + environment: + - WOODPECKER_OPEN=true + - WOODPECKER_ADMIN=your_admin_user + # other settings ... + + networks: + - dmz # externally defined network, so that traefik can connect to the server + volumes: + - woodpecker-server-data:/var/lib/woodpecker/ + + deploy: + labels: + - traefik.enable=true + + # web server + - traefik.http.services.woodpecker-service.loadbalancer.server.port=8000 + + - traefik.http.routers.woodpecker-secure.rule=Host(`cd.yourdomain.com`) + - traefik.http.routers.woodpecker-secure.tls=true + - traefik.http.routers.woodpecker-secure.tls.certresolver=letsencrypt + - traefik.http.routers.woodpecker-secure.entrypoints=websecure + - traefik.http.routers.woodpecker-secure.service=woodpecker-service + + - traefik.http.routers.woodpecker.rule=Host(`cd.yourdomain.com`) + - traefik.http.routers.woodpecker.entrypoints=web + - traefik.http.routers.woodpecker.service=woodpecker-service + + - traefik.http.middlewares.woodpecker-redirect.redirectscheme.scheme=https + - traefik.http.middlewares.woodpecker-redirect.redirectscheme.permanent=true + - traefik.http.routers.woodpecker.middlewares=woodpecker-redirect@docker + + # gRPC service + - traefik.http.services.woodpecker-grpc.loadbalancer.server.port=9000 + - traefik.http.services.woodpecker-grpc.loadbalancer.server.scheme=h2c + + - traefik.http.routers.woodpecker-grpc-secure.rule=Host(`woodpecker-grpc.yourdomain.com`) + - traefik.http.routers.woodpecker-grpc-secure.tls=true + - traefik.http.routers.woodpecker-grpc-secure.tls.certresolver=letsencrypt + - traefik.http.routers.woodpecker-grpc-secure.entrypoints=websecure + - traefik.http.routers.woodpecker-grpc-secure.service=woodpecker-grpc + + - traefik.http.routers.woodpecker-grpc.rule=Host(`woodpecker-grpc.yourdomain.com`) + - traefik.http.routers.woodpecker-grpc.entrypoints=web + - traefik.http.routers.woodpecker-grpc.service=woodpecker-grpc + + - traefik.http.middlewares.woodpecker-grpc-redirect.redirectscheme.scheme=https + - traefik.http.middlewares.woodpecker-grpc-redirect.redirectscheme.permanent=true + - traefik.http.routers.woodpecker-grpc.middlewares=woodpecker-grpc-redirect@docker + +volumes: + woodpecker-server-data: + driver: local + +networks: + dmz: + external: true +``` + +You should pass `WOODPECKER_GRPC_SECURE=true` and `WOODPECKER_GRPC_VERIFY=true` to your agent when using this configuration. diff --git a/docs/versioned_docs/version-2.5/30-administration/80-autoscaler.md b/docs/versioned_docs/version-2.5/30-administration/80-autoscaler.md new file mode 100644 index 0000000000..6ac581c2e7 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/80-autoscaler.md @@ -0,0 +1,37 @@ +# Autoscaler + +If your would like dynamically scale your agents with the load, you can use [our autoscaler](https://github.com/woodpecker-ci/autoscaler). + +Please note that the autoscaler is not feature-complete yet. You can follow the progress [here](https://github.com/woodpecker-ci/autoscaler#roadmap). + +## Setup + +### docker-compose + +If you are using docker-compose you can add the following to your `docker-compose.yaml` file: + +```yaml +version: '3' + +services: + woodpecker-server: + image: woodpeckerci/woodpecker-server:next + [...] + + woodpecker-autoscaler: + image: woodpeckerci/autoscaler:next + restart: always + depends_on: + - woodpecker-server + environment: + - WOODPECKER_SERVER=https://your-woodpecker-server.tld # the url of your woodpecker server / could also be a public url + - WOODPECKER_TOKEN=${WOODPECKER_TOKEN} # the api token you can get from the UI https://your-woodpecker-server.tld/user + - WOODPECKER_MIN_AGENTS=0 + - WOODPECKER_MAX_AGENTS=3 + - WOODPECKER_WORKFLOWS_PER_AGENT=2 # the number of workflows each agent can run at the same time + - WOODEPCKER_GRPC_ADDR=https://grpc.your-woodpecker-server.tld # the grpc address of your woodpecker server, publicly accessible from the agents + - WOODEPCKER_GRPC_SECURE=true + - WOODPECKER_AGENT_ENV= # optional environment variables to pass to the agents + - WOODPECKER_PROVIDER=hetznercloud # set the provider, you can find all the available ones down below + - WOODPECKER_HETZNERCLOUD_API_TOKEN=${WOODPECKER_HETZNERCLOUD_API_TOKEN} # your api token for the Hetzner cloud +``` diff --git a/docs/versioned_docs/version-2.5/30-administration/90-prometheus.md b/docs/versioned_docs/version-2.5/30-administration/90-prometheus.md new file mode 100644 index 0000000000..2264f3b09c --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/90-prometheus.md @@ -0,0 +1,81 @@ +# Prometheus + +Woodpecker is compatible with Prometheus and exposes a `/metrics` endpoint if the environment variable `WOODPECKER_PROMETHEUS_AUTH_TOKEN` is set. Please note that access to the metrics endpoint is restricted and requires the authorization token from the environment variable mentioned above. + +```yaml +global: + scrape_interval: 60s + +scrape_configs: + - job_name: 'woodpecker' + bearer_token: dummyToken... + + static_configs: + - targets: ['woodpecker.domain.com'] +``` + +## Authorization + +An administrator will need to generate a user API token and configure in the Prometheus configuration file as a bearer token. Please see the following example: + +```diff + global: + scrape_interval: 60s + + scrape_configs: + - job_name: 'woodpecker' ++ bearer_token: dummyToken... + + static_configs: + - targets: ['woodpecker.domain.com'] +``` + +As an alternative, the token can also be read from a file: + +```diff + global: + scrape_interval: 60s + + scrape_configs: + - job_name: 'woodpecker' ++ bearer_token_file: /etc/secrets/woodpecker-monitoring-token + + static_configs: + - targets: ['woodpecker.domain.com'] +``` + +## Metric Reference + +List of Prometheus metrics specific to Woodpecker: + +```yaml +# HELP woodpecker_pipeline_count Pipeline count. +# TYPE woodpecker_pipeline_count counter +woodpecker_pipeline_count{branch="main",pipeline="total",repo="woodpecker-ci/woodpecker",status="success"} 3 +woodpecker_pipeline_count{branch="mkdocs",pipeline="total",repo="woodpecker-ci/woodpecker",status="success"} 3 +# HELP woodpecker_pipeline_time Build time. +# TYPE woodpecker_pipeline_time gauge +woodpecker_pipeline_time{branch="main",pipeline="total",repo="woodpecker-ci/woodpecker",status="success"} 116 +woodpecker_pipeline_time{branch="mkdocs",pipeline="total",repo="woodpecker-ci/woodpecker",status="success"} 155 +# HELP woodpecker_pipeline_total_count Total number of builds. +# TYPE woodpecker_pipeline_total_count gauge +woodpecker_pipeline_total_count 1025 +# HELP woodpecker_pending_steps Total number of pending pipeline steps. +# TYPE woodpecker_pending_steps gauge +woodpecker_pending_steps 0 +# HELP woodpecker_repo_count Total number of repos. +# TYPE woodpecker_repo_count gauge +woodpecker_repo_count 9 +# HELP woodpecker_running_steps Total number of running pipeline steps. +# TYPE woodpecker_running_steps gauge +woodpecker_running_steps 0 +# HELP woodpecker_user_count Total number of users. +# TYPE woodpecker_user_count gauge +woodpecker_user_count 1 +# HELP woodpecker_waiting_steps Total number of pipeline waiting on deps. +# TYPE woodpecker_waiting_steps gauge +woodpecker_waiting_steps 0 +# HELP woodpecker_worker_count Total number of workers. +# TYPE woodpecker_worker_count gauge +woodpecker_worker_count 4 +``` diff --git a/docs/versioned_docs/version-2.5/30-administration/_category_.yaml b/docs/versioned_docs/version-2.5/30-administration/_category_.yaml new file mode 100644 index 0000000000..4f31383598 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/_category_.yaml @@ -0,0 +1,4 @@ +label: 'Administration' +# position: 3 +collapsible: true +collapsed: true diff --git a/docs/versioned_docs/version-2.5/30-administration/new-agent-connected.png b/docs/versioned_docs/version-2.5/30-administration/new-agent-connected.png new file mode 100644 index 0000000000000000000000000000000000000000..9d19153d9d70900198473b93920d5a0daae34121 GIT binary patch literal 5468 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 ass5JZ(fFgYWnH&xtB$6=My;CtoBsetae`X_ literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-2.5/30-administration/new-agent-created.png b/docs/versioned_docs/version-2.5/30-administration/new-agent-created.png new file mode 100644 index 0000000000000000000000000000000000000000..dc561d8873cf69b8770501721e17143616d4f847 GIT binary patch literal 4492 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 literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-2.5/40-cli.md b/docs/versioned_docs/version-2.5/40-cli.md new file mode 100644 index 0000000000..252017fa70 --- /dev/null +++ b/docs/versioned_docs/version-2.5/40-cli.md @@ -0,0 +1,609 @@ +# CLI + +# NAME + +woodpecker-cli - A new cli application + +# SYNOPSIS + +woodpecker-cli + +``` +[--config|-c]=[value] +[--disable-update-check] +[--log-file]=[value] +[--log-level]=[value] +[--nocolor] +[--pretty] +[--server|-s]=[value] +[--token|-t]=[value] +``` + +# DESCRIPTION + +Woodpecker command line utility + +**Usage**: + +``` +woodpecker-cli [GLOBAL OPTIONS] command [COMMAND OPTIONS] [ARGUMENTS...] +``` + +# GLOBAL OPTIONS + +**--config, -c**="": path to config file + +**--disable-update-check**: disable update check + +**--log-file**="": Output destination for logs. 'stdout' and 'stderr' can be used as special keywords. (default: "stderr") + +**--log-level**="": set logging level (default: "info") + +**--nocolor**: disable colored debug output, only has effect if pretty output is set too + +**--pretty**: enable pretty-printed debug output + +**--server, -s**="": server address + +**--token, -t**="": server auth token + + +# COMMANDS + +## pipeline + +manage pipelines + +### ls + +show pipeline history + +**--branch**="": branch filter + +**--event**="": event filter + +**--limit**="": limit the list size (default: 25) + +**--output**="": output format (default: "table") + +**--output-no-headers**: don't print headers + +**--status**="": status filter + +### last + +show latest pipeline details + +**--branch**="": branch name (default: "main") + +**--output**="": output format (default: "table") + +**--output-no-headers**: don't print headers + +### logs + +show pipeline logs + +### info + +show pipeline details + +**--output**="": output format (default: "table") + +**--output-no-headers**: don't print headers + +### stop + +stop a pipeline + +### start + +start a pipeline + +**--param, -p**="": custom parameters to be injected into the step environment. Format: KEY=value + +### approve + +approve a pipeline + +### decline + +decline a pipeline + +### queue + +show pipeline queue + +**--format**="": format output (default: "\x1b[33m{{ .FullName }} #{{ .Number }} \x1b[0m\nStatus: {{ .Status }}\nEvent: {{ .Event }}\nCommit: {{ .Commit }}\nBranch: {{ .Branch }}\nRef: {{ .Ref }}\nAuthor: {{ .Author }} {{ if .Email }}<{{.Email}}>{{ end }}\nMessage: {{ .Message }}\n") + +### ps + +show pipeline steps + +**--format**="": format output (default: "\x1b[33mStep #{{ .PID }} \x1b[0m\nStep: {{ .Name }}\nState: {{ .State }}\n") + +### create + +create new pipeline + +**--branch**="": branch to create pipeline from + +**--output**="": output format (default: "table") + +**--output-no-headers**: don't print headers + +**--var**="": key=value + +## log + +manage logs + +### purge + +purge a log + +## deploy + +deploy code + +**--branch**="": branch filter (default: "main") + +**--event**="": event filter (default: "push") + +**--format**="": format output (default: "Number: {{ .Number }}\nStatus: {{ .Status }}\nCommit: {{ .Commit }}\nBranch: {{ .Branch }}\nRef: {{ .Ref }}\nMessage: {{ .Message }}\nAuthor: {{ .Author }}\nTarget: {{ .Deploy }}\n") + +**--param, -p**="": custom parameters to be injected into the step environment. Format: KEY=value + +**--status**="": status filter (default: "success") + +## exec + +execute a local pipeline + +**--backend-docker-api-version**="": the version of the API to reach, leave empty for latest. + +**--backend-docker-cert**="": path to load the TLS certificates for connecting to docker server + +**--backend-docker-host**="": path to docker socket or url to the docker server + +**--backend-docker-ipv6**: backend docker enable IPV6 + +**--backend-docker-network**="": backend docker network + +**--backend-docker-tls-verify**: enable or disable TLS verification for connecting to docker server + +**--backend-docker-volumes**="": backend docker volumes (comma separated) + +**--backend-engine**="": backend engine to run pipelines on (default: "auto-detect") + +**--backend-http-proxy**="": if set, pass the environment variable down as "HTTP_PROXY" to steps + +**--backend-https-proxy**="": if set, pass the environment variable down as "HTTPS_PROXY" to steps + +**--backend-k8s-namespace**="": backend k8s namespace (default: "woodpecker") + +**--backend-k8s-pod-annotations**="": backend k8s additional Agent-wide worker pod annotations + +**--backend-k8s-pod-annotations-allow-from-step**: whether to allow using annotations from step's backend options + +**--backend-k8s-pod-image-pull-secret-names**="": backend k8s pull secret names for private registries (default: "regcred") + +**--backend-k8s-pod-labels**="": backend k8s additional Agent-wide worker pod labels + +**--backend-k8s-pod-labels-allow-from-step**: whether to allow using labels from step's backend options + +**--backend-k8s-secctx-nonroot**: `run as non root` Kubernetes security context option + +**--backend-k8s-storage-class**="": backend k8s storage class + +**--backend-k8s-storage-rwx**: backend k8s storage access mode, should ReadWriteMany (RWX) instead of ReadWriteOnce (RWO) be used? (default: true) + +**--backend-k8s-volume-size**="": backend k8s volume size (default 10G) (default: "10G") + +**--backend-local-temp-dir**="": set a different temp dir to clone workflows into (default: "/tmp") + +**--backend-no-proxy**="": if set, pass the environment variable down as "NO_PROXY" to steps + +**--commit-author-avatar**="": + +**--commit-author-email**="": + +**--commit-author-name**="": + +**--commit-branch**="": + +**--commit-message**="": + +**--commit-ref**="": + +**--commit-refspec**="": + +**--commit-sha**="": + +**--env**="": + +**--forge-type**="": + +**--forge-url**="": + +**--local**: run from local directory + +**--netrc-machine**="": + +**--netrc-password**="": + +**--netrc-username**="": + +**--network**="": external networks + +**--pipeline-created**="": (default: 0) + +**--pipeline-event**="": (default: "manual") + +**--pipeline-finished**="": (default: 0) + +**--pipeline-number**="": (default: 0) + +**--pipeline-parent**="": (default: 0) + +**--pipeline-started**="": (default: 0) + +**--pipeline-status**="": + +**--pipeline-target**="": + +**--pipeline-task**="": + +**--pipeline-url**="": + +**--prev-commit-author-avatar**="": + +**--prev-commit-author-email**="": + +**--prev-commit-author-name**="": + +**--prev-commit-branch**="": + +**--prev-commit-message**="": + +**--prev-commit-ref**="": + +**--prev-commit-refspec**="": + +**--prev-commit-sha**="": + +**--prev-pipeline-created**="": (default: 0) + +**--prev-pipeline-event**="": + +**--prev-pipeline-finished**="": (default: 0) + +**--prev-pipeline-number**="": (default: 0) + +**--prev-pipeline-started**="": (default: 0) + +**--prev-pipeline-status**="": + +**--prev-pipeline-url**="": + +**--privileged**="": privileged plugins (default: "plugins/docker", "plugins/gcr", "plugins/ecr", "woodpeckerci/plugin-docker-buildx", "codeberg.org/woodpecker-plugins/docker-buildx") + +**--repo**="": full repo name + +**--repo-clone-ssh-url**="": + +**--repo-clone-url**="": + +**--repo-path**="": path to local repository + +**--repo-private**="": + +**--repo-remote-id**="": + +**--repo-trusted**: + +**--repo-url**="": + +**--step-name**="": (default: 0) + +**--system-name**="": (default: "woodpecker") + +**--system-platform**="": + +**--system-url**="": (default: "https://github.com/woodpecker-ci/woodpecker") + +**--timeout**="": pipeline timeout (default: 1h0m0s) + +**--volumes**="": pipeline volumes + +**--workflow-name**="": (default: 0) + +**--workflow-number**="": (default: 0) + +**--workspace-base**="": (default: "/woodpecker") + +**--workspace-path**="": (default: "src") + +## info + +show information about the current user + +## registry + +manage registries + +### add + +adds a registry + +**--hostname**="": registry hostname (default: "docker.io") + +**--password**="": registry password + +**--repository, --repo**="": repository id or full name (e.g. 134 or octocat/hello-world) + +**--username**="": registry username + +### rm + +remove a registry + +**--hostname**="": registry hostname (default: "docker.io") + +**--repository, --repo**="": repository id or full name (e.g. 134 or octocat/hello-world) + +### update + +update a registry + +**--hostname**="": registry hostname (default: "docker.io") + +**--password**="": registry password + +**--repository, --repo**="": repository id or full name (e.g. 134 or octocat/hello-world) + +**--username**="": registry username + +### info + +display registry info + +**--hostname**="": registry hostname (default: "docker.io") + +**--repository, --repo**="": repository id or full name (e.g. 134 or octocat/hello-world) + +### ls + +list registries + +**--repository, --repo**="": repository id or full name (e.g. 134 or octocat/hello-world) + +## secret + +manage secrets + +### add + +adds a secret + +**--event**="": secret limited to these events + +**--global**: global secret + +**--image**="": secret limited to these images + +**--name**="": secret name + +**--organization, --org**="": organization id or full name (e.g. 123 or octocat) + +**--repository, --repo**="": repository id or full name (e.g. 134 or octocat/hello-world) + +**--value**="": secret value + +### rm + +remove a secret + +**--global**: global secret + +**--name**="": secret name + +**--organization, --org**="": organization id or full name (e.g. 123 or octocat) + +**--repository, --repo**="": repository id or full name (e.g. 134 or octocat/hello-world) + +### update + +update a secret + +**--event**="": secret limited to these events + +**--global**: global secret + +**--image**="": secret limited to these images + +**--name**="": secret name + +**--organization, --org**="": organization id or full name (e.g. 123 or octocat) + +**--repository, --repo**="": repository id or full name (e.g. 134 or octocat/hello-world) + +**--value**="": secret value + +### info + +display secret info + +**--global**: global secret + +**--name**="": secret name + +**--organization, --org**="": organization id or full name (e.g. 123 or octocat) + +**--repository, --repo**="": repository id or full name (e.g. 134 or octocat/hello-world) + +### ls + +list secrets + +**--global**: global secret + +**--organization, --org**="": organization id or full name (e.g. 123 or octocat) + +**--repository, --repo**="": repository id or full name (e.g. 134 or octocat/hello-world) + +## repo + +manage repositories + +### ls + +list all repos + +**--format**="": format output (default: "\x1b[33m{{ .FullName }}\x1b[0m (id: {{ .ID }}, forgeRemoteID: {{ .ForgeRemoteID }})") + +**--org**="": filter by organization + +### info + +show repository details + +**--format**="": format output (default: "Owner: {{ .Owner }}\nRepo: {{ .Name }}\nURL: {{ .ForgeURL }}\nConfig path: {{ .Config }}\nVisibility: {{ .Visibility }}\nPrivate: {{ .IsSCMPrivate }}\nTrusted: {{ .IsTrusted }}\nGated: {{ .IsGated }}\nClone url: {{ .Clone }}\nAllow pull-requests: {{ .AllowPullRequests }}\n") + +### add + +add a repository + +### update + +update a repository + +**--config**="": repository configuration path (e.g. .woodpecker.yml) + +**--gated**: repository is gated + +**--pipeline-counter**="": repository starting pipeline number (default: 0) + +**--timeout**="": repository timeout (default: 0s) + +**--trusted**: repository is trusted + +**--unsafe**: validate updating the pipeline-counter is unsafe + +**--visibility**="": repository visibility + +### rm + +remove a repository + +### repair + +repair repository webhooks + +### chown + +assume ownership of a repository + +### sync + +synchronize the repository list + +**--format**="": format output (default: "\x1b[33m{{ .FullName }}\x1b[0m (id: {{ .ID }}, forgeRemoteID: {{ .ForgeRemoteID }})") + +## user + +manage users + +### ls + +list all users + +**--format**="": format output (default: "{{ .Login }}") + +### info + +show user details + +**--format**="": format output (default: "User: {{ .Login }}\nEmail: {{ .Email }}") + +### add + +adds a user + +### rm + +remove a user + +## lint + +lint a pipeline configuration file + +## log-level + +get the logging level of the server, or set it with [level] + +## cron + +manage cron jobs + +### add + +add a cron job + +**--branch**="": cron branch + +**--name**="": cron name + +**--repository, --repo**="": repository id or full name (e.g. 134 or octocat/hello-world) + +**--schedule**="": cron schedule + +### rm + +remove a cron job + +**--id**="": cron id + +**--repository, --repo**="": repository id or full name (e.g. 134 or octocat/hello-world) + +### update + +update a cron job + +**--branch**="": cron branch + +**--id**="": cron id + +**--name**="": cron name + +**--repository, --repo**="": repository id or full name (e.g. 134 or octocat/hello-world) + +**--schedule**="": cron schedule + +### info + +display info about a cron job + +**--id**="": cron id + +**--repository, --repo**="": repository id or full name (e.g. 134 or octocat/hello-world) + +### ls + +list cron jobs + +**--repository, --repo**="": repository id or full name (e.g. 134 or octocat/hello-world) + +## setup + +setup the woodpecker-cli for the first time + +**--server-url**="": The URL of the woodpecker server + +**--token**="": The token to authenticate with the woodpecker server + +## update + +update the woodpecker-cli to the latest version + +**--force**: force update even if the latest version is already installed diff --git a/docs/versioned_docs/version-2.5/91-migrations.md b/docs/versioned_docs/version-2.5/91-migrations.md new file mode 100644 index 0000000000..02c7cd08ff --- /dev/null +++ b/docs/versioned_docs/version-2.5/91-migrations.md @@ -0,0 +1,153 @@ +# Migrations + +Some versions need some changes to the server configuration or the pipeline configuration files. + +## `next` + +- Deprecated `steps.[name].group` in favor of `steps.[name].depends_on` (see [workflow syntax](./20-usage/20-workflow-syntax.md#depends_on) to learn how to set dependencies) +- Removed `WOODPECKER_ROOT_PATH` and `WOODPECKER_ROOT_URL` config variables. Use `WOODPECKER_HOST` with a path instead +- Pipelines without a config file will now be skipped instead of failing +- Deprecated `includes` and `excludes` support from **event** filter +- Deprecated uppercasing all secret env vars, instead, the value of the `secrets` property is used. [Read more](./20-usage/40-secrets.md#use-secrets-in-commands) +- Deprecated alternative names for secrets, use `environment` with `from_secret` +- Deprecated slice definition for env vars +- Deprecated `environment` filter, use `when.evaluate` +- Use `WOODPECKER_EXPERT_FORGE_OAUTH_HOST` instead of `WOODPECKER_DEV_GITEA_OAUTH_URL` or `WOODPECKER_DEV_OAUTH_HOST` +- Deprecated `WOODPECKER_WEBHOOK_HOST` in favor of `WOODPECKER_EXPERT_WEBHOOK_HOST` + +## 2.0.0 + +- Dropped deprecated `CI_BUILD_*`, `CI_PREV_BUILD_*`, `CI_JOB_*`, `*_LINK`, `CI_SYSTEM_ARCH`, `CI_REPO_REMOTE` built-in environment variables +- Deprecated `platform:` filter in favor of `labels:`, [read more](./20-usage/20-workflow-syntax.md#filter-by-platform) +- Secrets `event` property was renamed to `events` and `image` to `images` as both are lists. The new property `events` / `images` has to be used in the api. The old properties `event` and `image` were removed. +- The secrets `plugin_only` option was removed. Secrets with images are now always only available for plugins using listed by the `images` property. Existing secrets with a list of `images` will now only be available to the listed images if they are used as a plugin. +- Removed `build` alias for `pipeline` command in CLI +- Removed `ssh` backend. Use an agent directly on the SSH machine using the `local` backend. +- Removed `/hook` and `/stream` API paths in favor of `/api/(hook|stream)`. You may need to use the "Repair repository" button in the repo settings or "Repair all" in the admin settings to recreate the forge hook. +- Removed `WOODPECKER_DOCS` config variable +- Renamed `link` to `url` (including all API fields) +- Deprecated `CI_COMMIT_URL` env var, use `CI_PIPELINE_FORGE_URL` + +## 1.0.0 + +- The signature used to verify extension calls (like those used for the [config-extension](./30-administration/100-external-configuration-api.md)) done by the Woodpecker server switched from using a shared-secret HMac to an ed25519 key-pair. Read more about it at the [config-extensions](./30-administration/100-external-configuration-api.md) documentation. +- Refactored support for old agent filter labels and expressions. Learn how to use the new [filter](./20-usage/20-workflow-syntax.md#labels) +- Renamed step environment variable `CI_SYSTEM_ARCH` to `CI_SYSTEM_PLATFORM`. Same applies for the cli exec variable. +- Renamed environment variables `CI_BUILD_*` and `CI_PREV_BUILD_*` to `CI_PIPELINE_*` and `CI_PREV_PIPELINE_*`, old ones are still available but deprecated +- Renamed environment variables `CI_JOB_*` to `CI_STEP_*`, old ones are still available but deprecated +- Renamed environment variable `CI_REPO_REMOTE` to `CI_REPO_CLONE_URL`, old is still available but deprecated +- Renamed environment variable `*_LINK` to `*_URL`, old ones are still available but deprecated +- Renamed API endpoints for pipelines (`//builds/` -> `//pipelines/`), old ones are still available but deprecated +- Updated Prometheus gauge `build_*` to `pipeline_*` +- Updated Prometheus gauge `*_job_*` to `*_step_*` +- Renamed config env `WOODPECKER_MAX_PROCS` to `WOODPECKER_MAX_WORKFLOWS` (still available as fallback) +- The pipelines are now also read from `.yaml` files, the new default order is `.woodpecker/*.yml` and `.woodpecker/*.yaml` (without any prioritization) -> `.woodpecker.yml` -> `.woodpecker.yaml` +- Dropped support for [Coding](https://coding.net/), [Gogs](https://gogs.io) and Bitbucket Server (Stash). +- `/api/queue/resume` & `/api/queue/pause` endpoint methods were changed from `GET` to `POST` +- rename `pipeline:` key in your workflow config to `steps:` +- If you want to migrate old logs to the new format, watch the error messages on start. If there are none we are good to go, else you have to plan a migration that can take hours. Set `WOODPECKER_MIGRATIONS_ALLOW_LONG` to true and let it run. +- Using `repo-id` in favor of `owner/repo` combination + - :warning: The api endpoints `/api/repos/{owner}/{repo}/...` were replaced by new endpoints using the repos id `/api/repos/{repo-id}` + - To find the id of a repo use the `/api/repos/lookup/{repo-full-name-with-slashes}` endpoint. + - The existing badge endpoint `/api/badges/{owner}/{repo}` will still work, but whenever possible try to use the new endpoint using the `repo-id`: `/api/badges/{repo-id}`. + - The UI urls for a repository changed from `/repos/{owner}/{repo}/...` to `/repos/{repo-id}/...`. You will be redirected automatically when using the old url. + - The woodpecker-go api-client is now using the `repo-id` instead of `owner/repo` for all functions +- Using `org-id` in favour of `owner` name + - :warning: The api endpoints `/api/orgs/{owner}/...` were replaced by new endpoints using the orgs id `/api/repos/{org-id}` + - To find the id of orgs use the `/api/orgs/lookup/{org_full_name}` endpoint. + - The UI urls for a organization changed from `/org/{owner}/...` to `/orgs/{org-id}/...`. You will be redirected automatically when using the old url. + - The woodpecker-go api-client is now using the `org-id` instead of `org name` for all functions +- The `command:` field has been removed from steps. If you were using it, please check if the entrypoint of the image you used is a shell. + - If it is a shell, simply rename `command:` to `commands:`. + - If it's not, you need to prepend the entrypoint before and also rename it (e.g., `commands: `). + +## 0.15.0 + +- Default value for custom pipeline path is now empty / un-set which results in following resolution: + + `.woodpecker/*.yml` -> `.woodpecker.yml` -> `.drone.yml` + + Only projects created after updating will have an empty value by default. Existing projects will stick to the current pipeline path which is `.drone.yml` in most cases. + + Read more about it at the [Project Settings](./20-usage/75-project-settings.md#pipeline-path) + +- From version `0.15.0` ongoing there will be three types of docker images: `latest`, `next` and `x.x.x` with an alpine variant for each type like `latest-alpine`. + If you used `latest` before to try pre-release features you should switch to `next` after this release. + +- Dropped support for `DRONE_*` environment variables. The according `WOODPECKER_*` variables must be used instead. + Additionally some alternative namings have been removed to simplify maintenance: + + - `WOODPECKER_AGENT_SECRET` replaces `WOODPECKER_SECRET`, `DRONE_SECRET`, `WOODPECKER_PASSWORD`, `DRONE_PASSWORD` and `DRONE_AGENT_SECRET`. + - `WOODPECKER_HOST` replaces `DRONE_HOST` and `DRONE_SERVER_HOST`. + - `WOODPECKER_DATABASE_DRIVER` replaces `DRONE_DATABASE_DRIVER` and `DATABASE_DRIVER`. + - `WOODPECKER_DATABASE_DATASOURCE` replaces `DRONE_DATABASE_DATASOURCE` and `DATABASE_CONFIG`. + +- Dropped support for `DRONE_*` environment variables in pipeline steps. Pipeline meta-data can be accessed with `CI_*` variables. + + - `CI_*` prefix replaces `DRONE_*` + - `CI` value is now `woodpecker` + - `DRONE=true` has been removed + - Some variables got deprecated and will be removed in future versions. Please migrate to the new names. Same applies for `DRONE_` of them. + - CI_ARCH => use CI_SYSTEM_ARCH + - CI_COMMIT => CI_COMMIT_SHA + - CI_TAG => CI_COMMIT_TAG + - CI_PULL_REQUEST => CI_COMMIT_PULL_REQUEST + - CI_REMOTE_URL => use CI_REPO_REMOTE + - CI_REPO_BRANCH => use CI_REPO_DEFAULT_BRANCH + - CI_PARENT_BUILD_NUMBER => use CI_BUILD_PARENT + - CI_BUILD_TARGET => use CI_BUILD_DEPLOY_TARGET + - CI_DEPLOY_TO => use CI_BUILD_DEPLOY_TARGET + - CI_COMMIT_AUTHOR_NAME => use CI_COMMIT_AUTHOR + - CI_PREV_COMMIT_AUTHOR_NAME => use CI_PREV_COMMIT_AUTHOR + - CI_SYSTEM => use CI_SYSTEM_NAME + - CI_BRANCH => use CI_COMMIT_BRANCH + - CI_SOURCE_BRANCH => use CI_COMMIT_SOURCE_BRANCH + - CI_TARGET_BRANCH => use CI_COMMIT_TARGET_BRANCH + + For all available variables and their descriptions have a look at [built-in-environment-variables](./20-usage/50-environment.md#built-in-environment-variables). + +- Prometheus metrics have been changed from `drone_*` to `woodpecker_*` + +- Base path has moved from `/var/lib/drone` to `/var/lib/woodpecker` + +- Default workspace base path has moved from `/drone` to `/woodpecker` + +- Default SQLite database location has changed: + + - `/var/lib/drone/drone.sqlite` -> `/var/lib/woodpecker/woodpecker.sqlite` + - `drone.sqlite` -> `woodpecker.sqlite` + +- Plugin Settings moved into `settings` section: + + ```diff + steps: + something: + image: my/plugin + - setting1: foo + - setting2: bar + + settings: + + setting1: foo + + setting2: bar + ``` + +- `WOODPECKER_DEBUG` option for server and agent got removed in favor of `WOODPECKER_LOG_LEVEL=debug` + +- Remove unused server flags which can safely be removed from your server config: `WOODPECKER_QUIC`, `WOODPECKER_GITHUB_SCOPE`, `WOODPECKER_GITHUB_GIT_USERNAME`, `WOODPECKER_GITHUB_GIT_PASSWORD`, `WOODPECKER_GITHUB_PRIVATE_MODE`, `WOODPECKER_GITEA_GIT_USERNAME`, `WOODPECKER_GITEA_GIT_PASSWORD`, `WOODPECKER_GITEA_PRIVATE_MODE`, `WOODPECKER_GITLAB_GIT_USERNAME`, `WOODPECKER_GITLAB_GIT_PASSWORD`, `WOODPECKER_GITLAB_PRIVATE_MODE` + +- Dropped support for manually setting the agents platform with `WOODPECKER_PLATFORM`. The platform is now automatically detected. + +- Use `WOODPECKER_STATUS_CONTEXT` instead of the deprecated options `WOODPECKER_GITHUB_CONTEXT` and `WOODPECKER_GITEA_CONTEXT`. + +## 0.14.0 + +No breaking changes + +## From Drone + +:::warning +Migration from Drone is only possible if you were running Drone <= v0.8. +::: + +1. Make sure you are already running Drone v0.8 +2. Upgrade to Woodpecker v0.14.4, migration will be done during startup +3. Upgrade to the latest Woodpecker version. Pay attention to the breaking changes listed above. diff --git a/docs/versioned_docs/version-2.5/92-awesome.md b/docs/versioned_docs/version-2.5/92-awesome.md new file mode 100644 index 0000000000..b9b5935803 --- /dev/null +++ b/docs/versioned_docs/version-2.5/92-awesome.md @@ -0,0 +1,67 @@ +# Awesome Woodpecker + +A curated list of awesome things related to Woodpecker CI. + +If you have some missing resources, please feel free to [open a pull-request](https://github.com/woodpecker-ci/woodpecker/edit/main/docs/docs/92-awesome.md) and add them. + +## Official Resources + +- [Woodpecker CI pipeline configs](https://github.com/woodpecker-ci/woodpecker/tree/main/.woodpecker) - Complex setup containing different kind of pipelines + - [Golang tests](https://github.com/woodpecker-ci/woodpecker/blob/main/.woodpecker/test.yaml) + - [Typescript, eslint & Vue](https://github.com/woodpecker-ci/woodpecker/blob/main/.woodpecker/web.yaml) + - [Docusaurus & publishing to GitHub Pages](https://github.com/woodpecker-ci/woodpecker/blob/main/.woodpecker/docs.yaml) + - [Docker container building](https://github.com/woodpecker-ci/woodpecker/blob/main/.woodpecker/docker.yaml) + +## Projects using Woodpecker + +- [Woodpecker CI](https://github.com/woodpecker-ci/woodpecker/tree/main/.woodpecker) itself +- [All official plugins](https://github.com/woodpecker-ci?q=plugin&type=all) +- [dessalines/thumb-key](https://github.com/dessalines/thumb-key/blob/main/.woodpecker.yml) - Android Jetpack compose linting and building +- [Vieter](https://git.rustybever.be/vieter-v/vieter) - Archlinux/Pacman repository server & automated package build system + - [Rieter](https://git.rustybever.be/Chewing_Bever/rieter) - Rewrite of the Vieter project in Rust +- [Alex](https://git.rustybever.be/Chewing_Bever/alex) - Minecraft server wrapper designed to automate backups & complement Docker installations + +## Tools + +- [Convert Drone CI pipelines to Woodpecker CI](https://codeberg.org/lafriks/woodpecker-pipeline-transform) +- [Ansible NAS](https://github.com/davestephens/ansible-nas/) - a homelab Ansible playbook that can set up Woodpecker CI and Gitea +- [picus](https://github.com/windsource/picus) - Picus connects to a Woodpecker CI server and creates an agent in the cloud when there are pending workflows. +- [Hetzner cloud](https://www.hetzner.com/cloud) based [Woodpecker compatible autoscaler](https://git.ljoonal.xyz/ljoonal/hetzner-ci-autoscaler) - Creates and destroys VPS instances based on the count of pending & running jobs. +- [woodpecker-lint](https://git.schmidl.dev/schtobia/woodpecker-lint) - A repository for linting a Woodpecker config file via pre-commit hook +- [Grafana Dashboard](https://github.com/Janik-Haag/woodpecker-grafana-dashboard) - A dashboard visualizing information exposed by the Woodpecker prometheus endpoint. +- [woodpecker-autoscaler](https://github.com/Lerentis/woodpecker-autoscaler) - Yet another Woodpecker autoscaler currently targeting [Hetzner cloud](https://www.hetzner.com/cloud) that works in parallel to other autoscaler implementations. + +## Configuration Services + +- [Dynamic Pipelines for Nix Flakes](https://github.com/pinpox/woodpecker-flake-pipeliner) - Define pipelines as Nix Flake outputs + +## Pipelines + +- [Collection of pipeline examples](https://codeberg.org/Codeberg-CI/examples) + +## Posts & tutorials + +- [Setup Gitea with Woodpecker CI](https://containers.fan/posts/setup-gitea-with-woodpecker-ci/) +- [Step-by-step guide to modern, secure and Open-source CI setup](https://devforth.io/blog/step-by-step-guide-to-modern-secure-ci-setup/) +- [Using Woodpecker CI for my static sites](https://web.archive.org/web/20240212182516/https://jan.wildeboer.net/2022/07/Woodpecker-CI-Jekyll/) +- [Woodpecker CI @ Codeberg](https://www.sarkasti.eu/articles/post/woodpecker/) +- [Deploy Docker/Compose using Woodpecker CI](https://hinty.io/vverenko/deploy-docker-compose-using-woodpecker-ci/) +- [Installing Woodpecker CI in your personal homelab](https://pwa.io/articles/installing-woodpecker-in-your-homelab/) +- [Locally Cached Nix CI with Woodpecker](https://blog.kotatsu.dev/posts/2023-04-21-woodpecker-nix-caching/) +- [How to run Cypress auto-tests on Woodpecker CI and report results to Slack](https://devforth.io/blog/how-to-run-cypress-auto-tests-on-woodpecker-ci-and-report-results-to-slack/) +- [Quest For CICD - WoodpeckerCI](https://omaramin.me/posts/woodpecker/) +- [Getting started with Woodpecker CI](https://systeemkabouter.eu/getting-started-with-woodpecker-ci.html) +- [Installing gitea and woodpecker using binary packages](https://neelex.com/2023/03/26/Installing-gitea-using-binary-packages/) +- [Deploying mdbook to codeberg pages using woodpecker CI](https://www.markpitblado.me/blog/deploying-mdbook-to-codeberg-pages-using-woodpecker-ci/) +- [Deploy a Fly app with Woodpecker CI](https://joeroe.io/2024/01/09/deploy-fly-woodpecker-ci.html) +- [Ansible - using Woodpecker as an alternative to Semaphore](https://pat-s.me/ansible-using-woodpecker-as-an-alternative-to-semaphore/) + +## Videos + +- [Replace Ansible Semaphore with Woodpecker CI](https://www.youtube.com/watch?v=d610YPvCB0E) +- ["unexpected EOF" error when trying to pair Woodpecker CI served through the Caddy with Gitea](https://www.youtube.com/watch?v=n7Hyvt71Np0) +- [CICD Environment in Docker Swarm behind Caddy Server - Part 2 Woodpeckerci](https://www.youtube.com/watch?v=rkbw_k7JvS0) + +## Plugins + +We have a separate [index](/plugins) for plugins. diff --git a/docs/versioned_docs/version-2.5/92-development/01-getting-started.md b/docs/versioned_docs/version-2.5/92-development/01-getting-started.md new file mode 100644 index 0000000000..e1bb1ce0c0 --- /dev/null +++ b/docs/versioned_docs/version-2.5/92-development/01-getting-started.md @@ -0,0 +1,153 @@ +# Getting started + +You can develop on your local computer by following the [steps below](#preparation-for-local-development) or you can start with a fully prepared online setup using [Gitpod](https://github.com/gitpod-io/gitpod) and [Gitea](https://github.com/go-gitea/gitea). + +## Gitpod + +If you want to start development or updating docs as easy as possible, you can use our preconfigured setup for Woodpecker using [Gitpod](https://github.com/gitpod-io/gitpod). Gitpod starts a complete development setup in the cloud containing: + +- An IDE in the browser or bridged to your local VS-Code or Jetbrains +- A preconfigured [Gitea](https://github.com/go-gitea/gitea) instance as forge +- A preconfigured Woodpecker server +- A single preconfigured Woodpecker agent node +- Our docs preview server + +Start Woodpecker in Gitpod by clicking on the following badge. You can log in with `woodpecker` and `password`. + +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/woodpecker-ci/woodpecker) + +## Preparation for local development + +### Install Go + +Install Golang (>=1.20) as described by [this guide](https://go.dev/doc/install). + +### Install make + +> GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files (). + +Install make on: + +- Ubuntu: `apt install make` - [Docs](https://wiki.ubuntuusers.de/Makefile/) +- [Windows](https://stackoverflow.com/a/32127632/8461267) +- Mac OS: `brew install make` + +### Install Node.js & `pnpm` + +Install [Node.js (>=14)](https://nodejs.org/en/download/) if you want to build Woodpecker's UI or documentation. + +For dependency installation (`node_modules`) of UI and documentation of Woodpecker the package manager pnpm is used. +[This guide](https://pnpm.io/installation) describes the installation of `pnpm`. + +### Install `pre-commit` (optional) + +Woodpecker uses [`pre-commit`](https://pre-commit.com/) to allow you to easily autofix your code. +To apply it during local development, take a look at [`pre-commit`s documentation](https://pre-commit.com/#usage). + +### Create a `.env` file with your development configuration + +Similar to the environment variables you can set for your production setup of Woodpecker, you can create a `.env` in the root of the Woodpecker project and add any need config to it. + +A common config for debugging would look like this: + +```ini +WOODPECKER_OPEN=true +WOODPECKER_ADMIN=your-username + +# if you want to test webhooks with an online forge like GitHub this address needs to be accessible from public server +WOODPECKER_HOST=http://your-dev-address.com + +# github (sample for a forge config - see /docs/administration/forge/overview for other forges) +WOODPECKER_GITHUB=true +WOODPECKER_GITHUB_CLIENT= +WOODPECKER_GITHUB_SECRET= + +# agent +WOODPECKER_SERVER=localhost:9000 +WOODPECKER_AGENT_SECRET=a-long-and-secure-password-used-for-the-local-development-system +WOODPECKER_MAX_WORKFLOWS=1 + +# enable if you want to develop the UI +# WOODPECKER_DEV_WWW_PROXY=http://localhost:8010 + +# used so you can login without using a public address +WOODPECKER_DEV_OAUTH_HOST=http://localhost:8000 + +# disable health-checks while debugging (normally not needed while developing) +WOODPECKER_HEALTHCHECK=false + +# WOODPECKER_LOG_LEVEL=debug +# WOODPECKER_LOG_LEVEL=trace +``` + +### Setup OAuth + +Create an OAuth app for your forge as described in the [forges documentation](../30-administration/11-forges/11-overview.md). If you set `WOODPECKER_DEV_OAUTH_HOST=http://localhost:8000` you can use that address with the path as explained for the specific forge to login without the need for a public address. For example for GitHub you would use `http://localhost:8000/authorize` as authorization callback URL. + +## Developing with VS Code + +You can use different methods for debugging the Woodpecker applications. One of the currently recommended ways to debug and test the Woodpecker application is using [VS-Code](https://code.visualstudio.com/) or [VS-Codium](https://vscodium.com/) (Open-Source binaries of VS-Code) as most maintainers are using it and Woodpecker already includes the needed debug configurations for it. + +To launch all needed services for local development, you can use "Woodpecker CI" debugging configuration that will launch UI, server and agent in debugging mode. Then open `http://localhost:8000` to access it. + +As a starting guide for programming Go with VS Code, you can use this video guide: +[![Getting started with Go in VS Code](https://img.youtube.com/vi/1MXIGYrMk80/0.jpg)](https://www.youtube.com/watch?v=1MXIGYrMk80) + +### Debugging Woodpecker + +The Woodpecker source code already includes launch configurations for the Woodpecker server and agent. To start debugging you can click on the debug icon in the navigation bar of VS-Code (ctrl-shift-d). On that page you will see the existing launch jobs at the top. Simply select the agent or server and click on the play button. You can set breakpoints in the source files to stop at specific points. + +![Woodpecker debugging with VS Code](./vscode-debug.png) + +## Testing & linting code + +To test or lint parts of Woodpecker, you can run one of the following commands: + +```bash +# test server code +make test-server + +# test agent code +make test-agent + +# test cli code +make test-cli + +# test datastore / database related code like migrations of the server +make test-server-datastore + +# lint go code +make lint + +# lint UI code +make lint-frontend + +# test UI code +make test-frontend +``` + +If you want to test a specific Go file, you can also use: + +```bash +go test -race -timeout 30s go.woodpecker-ci.org/woodpecker/v2/ +``` + +Or you can open the test-file inside [VS-Code](#developing-with-vs-code) and run or debug the test by clicking on the inline commands: + +![Run test via VS-Code](./vscode-run-test.png) + +## Run applications from terminal + +If you want to run a Woodpecker applications from your terminal, you can use one of the following commands from the base of the Woodpecker project. They will execute Woodpecker in a similar way as described in [debugging Woodpecker](#debugging-woodpecker) without the ability to really debug it in your editor. + +```bash title="start server" +go run ./cmd/server +``` + +```bash title="start agent" +go run ./cmd/agent +``` + +```bash title="execute cli command" +go run ./cmd/cli [command] +``` diff --git a/docs/versioned_docs/version-2.5/92-development/02-core-ideas.md b/docs/versioned_docs/version-2.5/92-development/02-core-ideas.md new file mode 100644 index 0000000000..8e0d6e292a --- /dev/null +++ b/docs/versioned_docs/version-2.5/92-development/02-core-ideas.md @@ -0,0 +1,26 @@ +# Core ideas + +- A configuration (e.g. of a pipeline) should never be [turing complete](https://en.wikipedia.org/wiki/Turing_completeness) (We have agents to exec things 🙂). +- If possible, follow the [KISS principle](https://en.wikipedia.org/wiki/KISS_principle). +- What is used most often should be default. +- Keep different topics separated, so you can write plugins, port new ideas ... more easily, see [Architecture](./05-architecture.md). + +## Addons and extensions + +If you are wondering whether your contribution will be accepted to be merged in the Woodpecker core, or whether it's better to write an +[addon forge](../30-administration/11-forges/100-addon.md), [extension](../30-administration/100-external-configuration-api.md) or an +[external custom backend](../30-administration/22-backends/50-custom-backends.md), please check these points: + +- Is your change very specific to your setup and unlikely to be used by anyone else? +- Does your change violate the [guidelines](#guidelines)? + +Both should be false when you open a pull request to get your change into the core repository. + +### Guidelines + +#### Forges + +A new forge must support these features: + +- OAuth2 +- Webhooks diff --git a/docs/versioned_docs/version-2.5/92-development/03-ui.md b/docs/versioned_docs/version-2.5/92-development/03-ui.md new file mode 100644 index 0000000000..e8999b0be8 --- /dev/null +++ b/docs/versioned_docs/version-2.5/92-development/03-ui.md @@ -0,0 +1,39 @@ +# UI Development + +To develop the UI you need to install [Node.js and pnpm](./01-getting-started.md#install-nodejs--pnpm). In addition it is recommended to use VS-Code with the recommended plugin selection to get features like auto-formatting, linting and typechecking. The UI is written with [Vue 3](https://v3.vuejs.org/) as Single-Page-Application accessing the Woodpecker REST api. + +## Setup + +The UI code is placed in `web/`. Change to that folder in your terminal with `cd web/` and install all dependencies by running `pnpm install`. For production builds the generated UI code is integrated into the Woodpecker server by using [go-embed](https://pkg.go.dev/embed). + +Testing UI changes would require us to rebuild the UI after each adjustment to the code by running `pnpm build` and restarting the Woodpecker server. To avoid this you can make use of the dev-proxy integrated into the Woodpecker server. This integrated dev-proxy will forward all none api request to a separate http-server which will only serve the UI files. + +![UI Proxy architecture](./ui-proxy.svg) + +Start the UI server locally with [hot-reloading](https://stackoverflow.com/a/41429055/8461267) by running: `pnpm start`. To enable the forwarding of requests to the UI server you have to enable the dev-proxy inside the Woodpecker server by adding `WOODPECKER_DEV_WWW_PROXY=http://localhost:8010` to your `.env` file. +After starting the Woodpecker server as explained in the [debugging](./01-getting-started.md#debugging-woodpecker) section, you should now be able to access the UI under [http://localhost:8000](http://localhost:8000). + +## Tools and frameworks + +The following list contains some tools and frameworks used by the Woodpecker UI. For some points we added some guidelines / hints to help you developing. + +- [Vue 3](https://v3.vuejs.org/) + - use `setup` and composition api + - place (re-usable) components in `web/src/components/` + - views should have a route in `web/src/router.ts` and are located in `web/src/views/` +- [Windicss](https://windicss.org/) (similar to Tailwind) + - use Windicss classes where possible + - if needed extend the Windicss config to use new classes +- [Vite](https://vitejs.dev/) (similar to Webpack) +- [Typescript](https://www.typescriptlang.org/) + - avoid using `any` and `unknown` (the linter will prevent you from doing so anyways :wink:) +- [eslint](https://eslint.org/) +- [Volar & vue-tsc](https://github.com/johnsoncodehk/volar/) for type-checking in .vue file + - use the take-over mode of Volar as described by [this guide](https://github.com/johnsoncodehk/volar/discussions/471) + +## Messages and Translations + +Woodpecker uses [Vue I18n](https://vue-i18n.intlify.dev/) as translation library. New translations have to be added to `web/src/assets/locales/en.json`. The English source file will be automatically imported into [Weblate](https://translate.woodpecker-ci.org/) (the translation system used by Woodpecker) where all other languages will be translated by the community based on the English source. +You must not provide translations except English in PRs, otherwise weblate could put git into conflicts (when someone has translated in that language file and changes are not into main branch yet) + +For more information about translations see [Translations](./07-translations.md). diff --git a/docs/versioned_docs/version-2.5/92-development/04-docs.md b/docs/versioned_docs/version-2.5/92-development/04-docs.md new file mode 100644 index 0000000000..55ccb5b7d9 --- /dev/null +++ b/docs/versioned_docs/version-2.5/92-development/04-docs.md @@ -0,0 +1,20 @@ +# Documentation + +The documentation is using docusaurus as framework. You can learn more about it from its [official documentation](https://docusaurus.io/docs/). + +If you only want to change some text it probably is enough if you just search for the corresponding [Markdown](https://www.markdownguide.org/basic-syntax/) file inside the `docs/docs/` folder and adjust it. If you want to change larger parts and test the rendered documentation you can run docusaurus locally. Similarly to the UI you need to install [Node.js and pnpm](./01-getting-started.md#install-nodejs--pnpm). After that you can run and build docusaurus locally by using the following commands: + +```bash +cd docs/ + +pnpm install + +# build plugins used by the docs +pnpm build:woodpecker-plugins + +# start docs with hot-reloading, so you can change the docs and directly see the changes in the browser without reloading it manually +pnpm start + +# or build the docs to deploy it to some static page hosting +pnpm build +``` diff --git a/docs/versioned_docs/version-2.5/92-development/05-architecture.md b/docs/versioned_docs/version-2.5/92-development/05-architecture.md new file mode 100644 index 0000000000..ccfd410f36 --- /dev/null +++ b/docs/versioned_docs/version-2.5/92-development/05-architecture.md @@ -0,0 +1,48 @@ +# Architecture + +## Package architecture + +![Woodpecker architecture](./woodpecker-architecture.png) + +## System architecture + +### main package hierarchy + +| package | meaning | imports | +| ------------------ | -------------------------------------------------------------- | ------------------------------------- | +| `cmd/**` | parse command-line args & environment to stat server/cli/agent | all other | +| `agent/**` | code only agent (remote worker) will need | `pipeline`, `shared` | +| `cli/**` | code only cli tool does need | `pipeline`, `shared`, `woodpecker-go` | +| `server/**` | code only server will need | `pipeline`, `shared` | +| `shared/**` | code shared for all three main tools (go help utils) | only std and external libs | +| `woodpecker-go/**` | go client for server rest api | std | + +### Server + +| package | meaning | imports | +| -------------------- | ----------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `server/api/**` | handle web requests from `server/router` | `pipeline`, `../badges`, `../ccmenue`, `../logging`, `../model`, `../pubsub`, `../queue`, `../forge`, `../shared`, `../store`, `shared`, (TODO: mv `server/router/middleware/session`) | +| `server/badges/**` | generate svg badges for pipelines | `../model` | +| `server/ccmenu/**` | generate xml ccmenu for pipelines | `../model` | +| `server/grpc/**` | gRPC server agents can connect to | `pipeline/rpc/**`, `../logging`, `../model`, `../pubsub`, `../queue`, `../forge`, `../pipeline`, `../store` | +| `server/logging/**` | logging lib for gPRC server to stream logs while running | std | +| `server/model/**` | structs for store (db) and api (json) | std | +| `server/plugins/**` | plugins for server | `../model`, `../forge` | +| `server/pipeline/**` | orchestrate pipelines | `pipeline`, `../model`, `../pubsub`, `../queue`, `../forge`, `../store`, `../plugins` | +| `server/pubsub/**` | pubsub lib for server to push changes to the WebUI | std | +| `server/queue/**` | queue lib for server where agents pull new pipelines from via gRPC | `server/model` | +| `server/forge/**` | forge lib for server to connect and handle forge specific stuff | `shared`, `server/model` | +| `server/router/**` | handle requests to REST API (and all middleware) and serve UI and WebUI config | `shared`, `../api`, `../model`, `../forge`, `../store`, `../web` | +| `server/store/**` | handle database | `server/model` | +| `server/shared/**` | TODO: move and split [#974](https://github.com/woodpecker-ci/woodpecker/issues/974) | | +| `server/web/**` | server SPA | | + +- `../` = `server/` + +### Agent + +TODO + +### CLI + +TODO diff --git a/docs/versioned_docs/version-2.5/92-development/06-guides.md b/docs/versioned_docs/version-2.5/92-development/06-guides.md new file mode 100644 index 0000000000..c70a9ec93d --- /dev/null +++ b/docs/versioned_docs/version-2.5/92-development/06-guides.md @@ -0,0 +1,23 @@ +# Guides + +## ORM + +Woodpecker uses [Xorm](https://xorm.io/) as ORM for the database connection. + +## Add a new migration + +Woodpecker uses migrations to change the database schema if a database model has been changed. Add the new migration task into `server/store/datastore/migration/`. + +:::info +Adding new properties to models will be handled automatically by the underlying [ORM](#orm) based on the [struct field tags](https://stackoverflow.com/questions/10858787/what-are-the-uses-for-tags-in-go) of the model. If you add a completely new model, you have to add it to the `allBeans` variable at `server/store/datastore/migration/migration.go` to get a new table created. +::: + +:::warning +You should not use `sess.Begin()`, `sess.Commit()` or `sess.Close()` inside a migration. Session / transaction handling will be done by the underlying migration manager. +::: + +To automatically execute the migration after the start of the server, the new migration needs to be added to the end of `migrationTasks` in `server/store/datastore/migration/migration.go`. After a successful execution of that transaction the server will automatically add the migration to a list, so it won't be executed again on the next start. + +## Constants of official images + +All official default images, are saved in [shared/constant/constant.go](https://github.com/woodpecker-ci/woodpecker/blob/main/shared/constant/constant.go) and must be pinned by an exact tag. diff --git a/docs/versioned_docs/version-2.5/92-development/07-translations.md b/docs/versioned_docs/version-2.5/92-development/07-translations.md new file mode 100644 index 0000000000..6ddd9f1eb4 --- /dev/null +++ b/docs/versioned_docs/version-2.5/92-development/07-translations.md @@ -0,0 +1,9 @@ +# Translations + +To translate the web UI into your language, we have [our own Weblate instance](https://translate.woodpecker-ci.org/). Please register there and translate Woodpecker into your language. **We won't accept PRs changing any language except English.** + + + Translation status + + +Woodpecker uses [Vue I18n](https://vue-i18n.intlify.dev/) as translation library. diff --git a/docs/versioned_docs/version-2.5/92-development/08-swagger.md b/docs/versioned_docs/version-2.5/92-development/08-swagger.md new file mode 100644 index 0000000000..9a3775c413 --- /dev/null +++ b/docs/versioned_docs/version-2.5/92-development/08-swagger.md @@ -0,0 +1,63 @@ +# Swagger, API Spec and Code Generation + +Woodpecker uses [gin-swagger](https://github.com/swaggo/gin-swagger) middleware to automatically +generate Swagger v2 API specifications and a nice looking Web UI from the source code. +Also, the generated spec will be transformed into Markdown, using [go-swagger](https://github.com/go-swagger/go-swagger) +and then being using on the community's website documentation. + +It's paramount important to keep the gin handler function's godoc documentation up-to-date, +to always have accurate API documentation. +Whenever you change, add or enhance an API endpoint, please update the godocs. + +You don't require any extra tools on your machine, all Swagger tooling is automatically fetched by standard Go tools. + +## Gin-Handler API documentation guideline + +Here's a typical example of how annotations for Swagger documentation look like... + +```go title="server/api/user.go" +// @Summary Get a user +// @Description Returns a user with the specified login name. Requires admin rights. +// @Router /users/{login} [get] +// @Produce json +// @Success 200 {object} User +// @Tags Users +// @Param Authorization header string true "Insert your personal access token" default(Bearer ) +// @Param login path string true "the user's login name" +// @Param foobar query string false "optional foobar parameter" +// @Param page query int false "for response pagination, page offset number" default(1) +// @Param perPage query int false "for response pagination, max items per page" default(50) +``` + +```go title="server/model/user.go" +type User struct { + ID int64 `json:"id" xorm:"pk autoincr 'user_id'"` +// ... +} // @name User +``` + +These guidelines aim to have consistent wording in the swagger doc: + +- first word after `@Summary` and `@Summary` are always uppercase +- `@Summary` has no `.` (dot) at the end of the line +- model structs shall use custom short names, to ease life for API consumers, using `@name` +- `@Success` object or array declarations shall be short, this means the actual `model.User` struct must have a `@name` annotation, so that the model can be renderend in Swagger +- when pagination is used, `@Parame page` and `@Parame perPage` must be added manually +- `@Param Authorization` is almost always present, there are just a few un-protected endpoints + +There are many examples in the `server/api` package, which you can use a blueprint. +More enhanced information you can find here + +### Manual code generation + +```bash title="generate the server's Go code containing the Swagger" +make generate-swagger +``` + +```bash title="update the Markdown in the ./docs folder" +make docs +``` + +```bash title="auto-format swagger related godoc" +go run github.com/swaggo/swag/cmd/swag@latest fmt -g server/api/z.go +``` diff --git a/docs/versioned_docs/version-2.5/92-development/_category_.yaml b/docs/versioned_docs/version-2.5/92-development/_category_.yaml new file mode 100644 index 0000000000..02d70e09b5 --- /dev/null +++ b/docs/versioned_docs/version-2.5/92-development/_category_.yaml @@ -0,0 +1,4 @@ +label: 'Development' +# position: 3 +collapsible: true +collapsed: true diff --git a/docs/versioned_docs/version-2.5/92-development/ui-proxy.svg b/docs/versioned_docs/version-2.5/92-development/ui-proxy.svg new file mode 100644 index 0000000000..79809ffa19 --- /dev/null +++ b/docs/versioned_docs/version-2.5/92-development/ui-proxy.svg @@ -0,0 +1,16 @@ + + + + + + + forward requestin dev modeUI Server Port 8010Woodpecker ServerBrowserPort 8000/login/logout/api/.../api/web-config.js/streamEvery other request(404 Handler) diff --git a/docs/versioned_docs/version-2.5/92-development/vscode-debug.png b/docs/versioned_docs/version-2.5/92-development/vscode-debug.png new file mode 100644 index 0000000000000000000000000000000000000000..58861dbde187f131c140bdcf4e9a8e122acb6b25 GIT binary patch literal 17502 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 literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-2.5/92-development/vscode-run-test.png b/docs/versioned_docs/version-2.5/92-development/vscode-run-test.png new file mode 100644 index 0000000000000000000000000000000000000000..6d163f8b8c524ebd5c2e4312e705f7aa661ff79a GIT binary patch literal 11440 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 O)=<$=u2Zyn`#%7$GeGPB literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-2.5/woodpecker.png b/docs/versioned_docs/version-2.5/woodpecker.png new file mode 100644 index 0000000000000000000000000000000000000000..b92f3589f55d79a17069e44ca23b44cf91e6139c GIT binary patch literal 71639 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 e9QGTxvTWV

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%0DGQZML z?Kwr!4>G^axZO#m)6rkHNZyIEkd!?o+X~1N|DpG?(hKh%ZGug8;o}gw>$=?b(Qa~a z$*&UAhAa~EG4n^0Q1gtrx)=g!Qv_H>uSQcG_>jZ6VoTYnz zEWM`gEnWAu&ZHLrBC_SO=3m$1G3NLZM50l4%2>q-)^oCt0b5&mPcknOw%lZlcx0x3Hw}0Qt)4^`sO~Tcg3Rmh!#=@7r@56to>yx5zQnxRuE{sAIT-rPS2Gw z158?wG6Ei{lnD1AG_-5qlJXOUG}*6EFW68AtnB?Tst(n<(lvwRn7fM~y};lA2nvOgb5YagK%_sAG>-J2!b~P?%WaC5R zrkCDYgDWrnK{B@d8*A01!k#GD`puz8yCdpGj}H(5e29&|^y(kwL@%-kxFPQ!mr9Qo zvu@CgQ|N8%rSH9O$OeHNGp>eByDvOg+!WTUHIV=c8)hUeZNz0_waEbKUWZ3{g7Pkcw$&JLc4vP;mEDoV; zot_76YnaNO5PehL#p)MoN}QfI|OhW=8BJC|3Y@ap`Wmznn9 z^1v*IPltn)Hx9pAxv&>+yrCAOE6To}@2*yWXivZPJk{)!fmXPX{Lg^Yh|964lacc; zS7AG?>tReR0=I** znS8+cz%_PAmmbz>{<{gOZjg^JD9_9cj0FUsXsa7a0pE689A~e#d3;UNW@BQNxyaEh zpnKyOXw7B0Bz_(l)nj<_vY>m}DNi@gnEuILUgAFZCFrL1Wd37MN$>Ze+l`J1%SNgg z2a}jfcDF$1=Z@o6wZu@;!gO|b;KSR`a`zpGxoho8ZGA%YU;p+o;zHxTon+mnKx%|H zS?WynRaoEFye!Adt|KK0vlZ&&cj&|#S8=mY{=)}$PbpBE6DwSXBYF1F;X!PQU((ZX zlJAqJ<9`>;dCqln2fshiifsjFwF26jTNQ<_#j%vPo(QdOyq-|7+2$9DT7K{|ENTNh7)o*m*o1{>SeNw$aD_YfF#b_@!-^5kLQ}L74wByaZy3%8;I#Ue_znElhyNRF zqxymO{v4}H*0vE{ss?BSE^cfun(1(B;tT2}x{sNFUwr25<@7E(t?nZ0W9erLMcFG7Kox1XTJx=3!G8^C4Da>v<)r>dV)s0v`0mMTN3f z0uN^qy~gT8k5M@&f>E(EeDD(~HJ=!M_Sc=~sK z`{qJpq&stF4e-T@I$Weu$bK!YJCLII--luxy&As0v0oacn$(jKTn`e=<7iD5ljQYeI_fZ8L@#Pt{GLVY#zZ_xsM zIMh-=Ds%w|5x-Bn)%C13#SIVyOHU>AmL|$sonHG5K;~c6r7E8M7e`~O)7?7V->zgH z&Houvk@VlF8O`gaK|>ANiG*EgU^WI0YLR?QApKqFuUkp~Z{Zlq-9I3Qc0hA{cG~RR z_F|Op#G>K?V3l~RRXuG0=6Hf$eS%~6zPs2UXbG7&|GLsLvO18^HzJ<&Vq^2q?Fmrf zIS1YcUvidtUbf@oWY#txQwVx%xuPS286<3|l!K`T-@8dFELbC9xT>4v#a{40|r{9XY?xLJ&*YxVP=nw7`Y6utiZ z&$sk|nutCN0m)iL9;CLl#6@Ggg8m^{@HOpTsJY1S;Hq}=5~hV7=WmXYD<7eP^lp^h ze`8sM<%EejKdh`UZ;wZJo)I;hCx+>{@%(w8NCTj5H!TT_i4oH825imam5*^3yXdL( zx;Vv8QZ7k6yJzKL>1}NDuhMU;1I=aBS@m<9Q!*703Lja&1jLmTgBWISGKt5$UIYrb z-X1MYj}OVwSrq}lo{y9b{?<%W3ANBL#r=hE2CrgE>@-c+vRDaJ*q*hwG4RXr|3HcCU zWB>iSoo@0UzO@-3YU}%mYrNsRL6X^DoVIIv3rv%A!~rA|Qh-d7@0YYrdayRa1N?r@r8cpd%gHzOQ!(y8_XIya3X~%8| znKzSSH{M2DX#Lc772WjdweT*8R#C)Ku~Q6N#2Fz8N z`OLLhB0hklv+DqDFBNhbu&m46$m>CJgxZdHY^Na8>b;gQ#>_ucq*421Izy}cVQd8{ zAc>5T^Jc^Q{<-sSFU2j3*!=m)1Cf{ihY*SXA+CQL_JLm_KwcOl6hjA}4}hJmi|(qGn`?XLPWgX-zjJ?MJwk?DEn-=@WoAr_ zpPC{2k>D-=J!G;M9v`}aGeFoF3K^GGv&0SzZE(9#QYNc>)Uq}lp#S{1S}Ew6m?F`9 zZ088{u!;m*@xL}xcv?>Y7ZYNcVRfrE;kAsOQ+UZkzU=}}v@7>Axob-8Dk zrEBZy8>bce+UeN)HP-N&c|%r5f*ZgpmD8moDU(m>qh)?kdM8N<`R7e}*t+(=tOUIw zg>7~%4A-ez%Izw6|1Bfn7mz;c?5mb4@O%-4#mI(reEgL4Hqx8%<<{Fx+ALj~*rB>N za%rf)cjD@Uaw0{+mCVXB*`{%9mtTWt@cQo)%9s{-HeI{*%TG<(_dC7Tk_I3|m~dyP zPAWcN*A>TRy!`KL#-q6UoKSJeQrUVQ;XGOk1?N61Eghn5j38ev0%cTa<)#&j^n4W! z)?$CJ3}eKD>-1hgUyhmV1;!EMmbfS-T0deIhTz55!ewMGmA?e>Ag>6J8CE03BC@PX zq4N%AJvMnD7Xy;6&Jjnp!Z%-hl-Tv`rM(Wr$Tl{U>v01}Y*Yz15-p5tSG>E~=Z76g zwY@sDrc0b@Qz`Ivq1|#PxI9EwSh~085=Sx;NB0IY*hiMK20e0`r@PzF9wAr{WtYn(-a+pDI;8h<** zfGB@-;Lz1C!B=^QBum#&$qx99Tgua6O4%I(ca|A${{o{2y5l8%kk_g%tG%Wb&UjZc zM~Usv@V*L#<*$iJTj|fIT~TlC0SzNIsRo~T_~{RSHt=TW1;D=RKL;!s%~{dLNJ*w1 z2GeDGkoE0EhOR4{S34E92>F!y0vfyt*p`lz)JeOJJU@Im)x5}E z+t?q0+NqWoJ$`hXo};P;^NZ zX7e@4?DE#F_Qigw52+y*Bo^hUNSE$!i{^TIpD1q+ml51xXFo|x>wUcVy0FK?Wg*E` z0FAG8AC53!3_;IsyDqy)FLZb;i9TG^N{np-G3)5pgt*6-aD!s1YFVIp-hE|p{j+Y- zDY*&{WJa3&1`|!8_5OQ4GV1NeJFl6|W+Gh{M@msB{7J{^tXJzGdRbuzZ&Qa;_UwH@ z^=NdjOl_vhz4DrBa2D03zPH}|zS5&R%rE!6EaI;Mt(lmuna|A-_nk@a!M678Yt2Y& z+S!;2+IY9D#5h7gz-Qj3Ey^XjVzHB?QPt6#XWE89?H&?(RP)8Wp(FnxK(aKK3}1u4 zWz6rtJybXKD@j7PLR6s43#s}#D`Yd*BLwBU*GC{Yr<#2_w!6ShxAYGCNnH@JMwAg& zJNR5j1G`c_!>n{trNkCRos%UL56=W(6JYJ;0VJC1#@Q8lTM zAMoIcTkh;#2Eyw!M=UBf(emMc&@>YX@`YL#eXx?*aENMcv? znoZhV7L+#A7dP4t7EJM3`82ipgm%#AMo}9&z&g%#G##UK z?_>@CR7+g3ZtYfkp_XG8kO`p?Ge4ICkBSPVkza>TaZP4xSGoF!AR+NFAqBPgyIv__ z=*S~8=0>9u!LO$^s!QODzgXJ6N!@-Q3sC3V=c#3@>Xx~$Yx%WMVM0Ose(+A(b){tI zw9)L49(8<;HH>?1RRtfm)*<(E57}AGv8#A%3-d5+K8eo%dJ^M|KCgNo#O;*;3HYTC zY1<$UG0Ly*?A}YrlrsOokWa4iWZ;g<{<1!DAgP+A&}=MhWG>sg1b}ph8oMSAE8h_%$8Q|FBkd z+~FWg{qz%a0pi{RIdAZ%pwqcCv&xGKuU6|JIy7-!~v#Uv$b7#VBt3BZa zg)aa6Jwlb^yYlD60p7S(eLGEDzO#8*I)*WaC!eP^5jzlbju+jI!^%9@jEg<#f^t3= zBUGr{GON%nRW*vGC5{I@zSWh|(G}h1&{D07H#KI|*K7G&Q8>{fbzM@i?yf1;XWRMgqV^rR1*y!paz>CAn0|9XujD8ys) zp-VM&AV6!qY~wW_GMN98n(ki(w#jH!>#p0QH4IwMw^AnxTu9FxamPh5yDswp4ArAs z<{V)0#n*z%!q_j?4M^!+`0sHrI^*4nfbXv*z#<@J7#oX|_C0uk5Ru({)6l4brDx}S zbgB#sr&xI{g*Xp$pl&}zx@vRF!@@-@%32KzsJk5wLC}2r`EN5g;xZTWo^)p`^eS1nw>vIH>WE~7bz^Pnf~8%iE#j=|wwL&^ z!Q66J_YUCg4Ls5){YRRsQ>_g14LtpRw1Wh0==4s$STVvf(rYbnrwjJ$=;Gq1Z?)j| z_le+==)!PXWK9_QPWUSc4ww|*k%eqoS62JWF-5~Robc{3cBXH=6}wdZ6vNOdHS0qM zj2WZ%HH8+j?Jc0~i8N&;;}UrOz?r7+KU)@7-*tF6 z=DAR(HYww|c0=sD%`e%R26ta;jnt07)(k~iy?KU=vLkaj%+hZUd_@L%;$P$Vs_GX@ zH!WMPx9yTVg=aDao4tui#PZLUi&L0>zh({ILWA6s2yy+AL|x_wPEZa1&lZC{8wE3V zoK^n&QYtgsZuR%kwsXTXM#i!;Gj9bay{#UkNXzGW$;3K;8?z1_9NB(n8Lv!R(C=w( zZ+hkRAf|4=B3;|hlxxd62mNEuuB`SD1M@(E>>9!HYTeXBoJgJBg`qXsgpzYEvYd-8 z%gQv*nWFYbQ?I~+p+A)_sB>it#j61x>4J_Mggd0Zl4c3R$UHq`8L?|)rveMZrxeza zZ7VybiS zwjnjLVz(LeW7Ie%e#RO$%rF9SdlSmYEGJ2Rq3XMPos<}P*Xkjt6{)*AC7>42;)Hsz z+2ou1kY;NdPe;2{qi*6D`G=CS;$;ijH=7V`$r*o#>XSjE>Dwt6b`beztoLQP16}7J zFU?M9RN1m-osrm4D)eUGQz}f1_h!p|9iGZJs6la`(zUyfmAQje-SI92|G1d_@z8fo zV|Z?)xyTU?oA?u3OBpolI`Va~jg;of%`U%d9UAm~xY2Nhn_uC=UcXq`%ch@^E<-m| z@jS3A_m-2r^1gJj$4v~CH+D+J3qEYWRsN1Le_-#Sq0GT~y=!IXu&`rv+l-G_HDjpPJ2YUDs>)YRSq1(8^^5Holw@Hk*fKzV@~I zYG=3|%WKcrEw=t5rhR86$J_WGOwt?YLkaR;vx0XwgcXlirZ z>O(&@KgE?>Zc7IfvY}n#&E$v7M)S7uVI7A+&4c0qccZwqb- ziG+6d#*2!mc2qx9rJbG10#w)PmN@k%vI6>>Sy|}OzE8S#*KR@CuBMixGs{CyR4wJb zCmgzNDaSwB?lOvWXni1zKR`1v$mM_Fn0>xfY{)w<@w;%(uYvonT!DP|P9oQ2`#llg zVpeb0<#Z}Mq-dBanaRdmX@Kf z#%0PMtM7`cS@YHZ z>b7m<9E#S)jvay=W~$z078vrT6AX~C=&x+sRwt1XojZt%4$9Y~b zpIJhzs(XrKqOD<-mT67__}+~RuVNh9>utaSm~iR|X20TAMKNS=(hG@>eT)*F%$%IW zAo4XBtX*q1yN}gzzNPqux{oRw>iiHpRkurKllNQj)PFl8b&aby5Gi}M3)b;4#Ub@# zvbj{AorUh@#o;W*7wgJDvv+&_@;k{rVRD4}qjC3P+ehR0c63e$@?F`Hr8A?Sh8}2r z{K53~-6C5-w=C%$)C_Ev+EU$i-#A|E-6`b3gj;tro)TREJ2q|jo%iag|%XZ z$9JNQgQkk#R4g=51ABRwQ6y`Q?_5Px1U1z+X1vSbo83&nuTeu}c#J!>Fbu^iYr=)Q z&C!&nZd{x5>7iw;LsE=Qmleydx7eeLq_6bHCISj2lk8aM@xHcc3Y691O{7|i-(eXh zd2p%U2NBN*nsjQ{H<1Xhl1>`D<A7DrzW2skVLfi1z_51O!Ek8iZ$RuszcgM<=o2ps-~36HSAB+W?=<2V|M6#GC;$sX4u?(6rpCcD z3})W7+oRciC<_%PpDWYyJac?H&m2!{Z)>do-qJQ6JNQMl5&5R`7JGbGveQl%PaFFu z_1$8~=DnP<;i8+iapz+MqrLPu76T{BY=+%OV1w4X4EPY?*2D4GwWiEF2|E0VuD(3l#|E$54J5|tS z{*C#+vFJhL2I@_|>mpECbuVGw^t#1md%>k%H#Ca+h;m*`35r!*n^o+mW~KQ0Q@px2 z#fYB20u{1{n_Ov94@=uw4MUZ?$UbC3Be;$0)F&?86(QMB zr`3@;{jNVBkrWP&$L6)qoo<}Z_nge8A_yNlw5E6s@R1c$R`NdFY zQJ=ZqN?ox^%x5&u*~AMHD+;N$*Jt2bS+Q}gg0dmziqEcQ_c&9Q6v4Rce*Mfi7-#b5 zwl4A7Gvw6MRrahTcu_Y*i_%mE`tF$+(I!e%3A@*evTqhfW5+Ky`!QN8AXRFU)Q6KY z$DX(gMLaa!Q~C>j)4oiJMlC}X_R-#t)ls}I66%}gYSjPBMOL@o=WuxFXa2EvH^0M+ zaAC%;?xSUl5PW|uLHbf4jad4ug97g9%7!l!QfnR8cOK{PznN&z^_csLrWkm5-8h)7 z-W;o4IGHMI|0*%G`#{EE8k7x3F0~^3b??%PkrW%QyN1CnuNdczv@RI(@#!=R_(TCd zJt}191j#SzrlaP3@qIl4sp84}dar2a_eUrp6GP>9Uv+)8>@w)j{sj(AFm=`PN50iSQs*d5KVpO0wt$RpP zWoz?C2St>Uh$%|EWi^@LrDvyZn|+Plz*RtPc2lq)+^>;Ze&_9dE%dXpV%Ox#C1^CS z8~6i;x2=3vWPMwdk?u&T+oeA~Ejg*=+8*VtzcLi~W@ej5OV(KE8hrTIH(Hdt48v?y zOjcLp+`1l1fxBP0GqzlbH*7TcO6=MVlbZdg>Ayp&_w(|v7;fcx2F@S|js*UOVQswS zbnT^_;hI;eu!%Os^N(sJwn`wZd9#K!r0L9uPTF4*9c-Xb9Nxrbe0C)KHOjqD>iKF} z{8ARLPd^WBm}AdsD@8BLco(TN(2=5GJJEd)64un({!x$jQxoreLtB|-AbPCDP# z9Dd2aETl^pC(2uq0nNEOU;@#-Z|7dbl{vbt(kT{|43K zvn*CWLV)1-Icfc3-RY*6j5Xkz_^~C|yK{RJA089)2LiV@bkD8oLLUef8ai_22GJhQ zyU9xy8qUF8Ju%ACv-j*e2MN!M3wm=R9%3c8p{d2LIde}GrlG$!<=a+JU5{&E)O zB_Zh+oJ+m9H)~wYvx9R0yFE>1I0SSbGju5GyJ%%qbMLK~a1xC;o2A5>Q^*{Zbez0) zbEJy<=Q}ttd1lNw2l*e2dSyg}ezn+xQc%R#l_yE2vF=uLoCT47b@qWS#SFcG90Y@+p%_4jMZ_ z_D|TOQqW@a)J=G%k7CHyLuDgU zwV-&>Sj1-ij9MVi)wl6QFl$}G!g_sNDYZ|!k0TtlG3UGUmdN8}`E|A(x_2v4%I_5^ zd@3xJ=I-cWfsO^vU1sA~T?n7)kh*vMX_{!RzPtfW>%CdCB8LwzSmg=>Ma;^IHc%_g z-V>EusYi(dv|EzImpcn7;?N4T&}!5P+mV3sC_yIP8Wp2^j$h?NLCI#WxgDsP4=E>A zR@rv3`>{6UhkIIAE#7ZF1y9_X5*TP5T(jh22+C5i!TQt;aTdMR^RFot6U)Eu5^g88@9b5;j~R%pZI?XKv#W^azc@yOAcY*hzYz1NWy%J#%N#;*zk7Xt&$DH+z=naoBp7Yy5HP0Aza zMH#Bsu18@HYy_9T(6AP`&{LU8N_qOTSxQv7oHie+%8_i!5Ga98*%kMGIu_8^Unucn zc;`L;uEEsTRM(6K9q;Wd@1?*y=9TZ=w!;l8gx$3}?aLOxw2)Z5C}6!Gh$#Qk&Tpx8 z+QKL$_ub`4f3pUFq;o05Vj$b9?`L2aQK2cDfCzqUeI@Li~$A5eLFx6@72@W9E<^^)}`J!haSuAto1Hm zpA^9ZTZ1&1dx)q|+a2Ug8ott`!~U&-w5`aDQ}GR_k-L?tW>zipN&8#x$QJObL+u|C z=4oJy&CIYLwm5{rG2HD(><#a+_tCBz!sY|09rJjQ4Yjjt0U|4CJ^J-6ZjPO!k@w0mbS#YUd3W$~1R;YU^oHi-88lZo9sO z@>k;KZ91~oCunaMG9gugcqK>0{f)a+q;oyaI*a`%WZG08oLd>gR930PN*SrnvnN$A zg{8orZq{xK%D6vONE$B8C#_lTt#`2Qe$&rq_EB~R+r=!y=V9GZ^=f4DB4cT^$#55 zvN2KCiMij5m3}1&-K~@FF}!9E*Mu{>y3bEeKJ}xdHwOzc#kh@cY7b+!f+Y$aK3;S+ z<$Y(?HLHe(Dew!{O_{{x=6K=Gw@=;0>kRusZXCNsA9=|AH23}DqE~z#(L)#lNnY};@*^@9~ae59hc`a+DDZW z0%85;R|S5o1sV+HuIf0>%*3qf5(e&GDkZ(`=Z#$2?5pC>``eHrFoZw_>0OCL`0OXQ z)h^Lyr%@Vu`y`V~5wa8d)!6w}mJy{n3xl7qx8G3Y1s`oxEJv;TlsYw&RMgKQylBBP ziENiL{E(Yopa)+y5_ON2rfE&bI1GI&j41vom}BQgsI44Qdfl54jU)Azo&Sg zy_qfMD72$ zl2Ea&j@47YJ8E~P1_9&*My{Tygbi|Ubtfd%2rR>ue1uP&Crak5hXP_&wZINf1-~k4 zVtLz`=;5bm?Pu7p5`rgkIh0Nd7wwBFEVMQ85qz@IYwMR3hBQ^rKgyLq?jzf`SSI?I z{FLDXWH!>>fBn@k;qr{-Ibg>)JA-8%k#1#)>+> z7R}FK9`DJ8ZRnJ(e9l5Umig@;Y*e>o*H|=*XCDK?Z*jeMdW6#kAgAYdAlJ7Op$Cq! zy>nyAW)lx;$W10l3OJsB>~r(9<{mab|Fq9=+NS~81dG)tB{y9`Ey-IQVu zt9(39#dyM3T~ioqj33_D{*I{q#qWB2*rAi*T%^%_th%kFLlR5G%!Pa-q*n+@@J;Ui zl%odYB+Ofdaq<`qZCx9vf%xfAcW9ds7%`kV_Kp#aMN@pHx-N( z0w59WHrPxc#u&dFbK27DS2Q*I)&#PvQ|GRdAMy5YvB<4MU5EZ7XW(}Dk676KuM;o- z2$l}KkvMb%e58N9JnsJ&1w{M*P<-^iZ}NLk{~ys*$Nr4`?WF%5uK%Bh%QU5M*mr@F zA`dj?mB7+82m)e7Wc{N6RH_cbbUQt<>S=03(&r~@M&we%#LeOPw%lyL7B2rny@6O6hV#eQK|vKcJq zjaqF1Rj@dKV{NELiaMgeU{^tw7BcEAfQ0S(dY}W3Jo#q|jGaIJ@?hjcbH8{3ZQC`m z>}jf@a6Aq{`ZOvh^=9O|-B!|RYT$xZB9BR}p3QbPnzJk*hRx#mp9$1;>A)!ga7Y1o zWN4qX3-L*ekYUjbAGSj?MtB?pnWW46UAA&O5XUW7qe>UMSvod}Z`-m%YAZYTDHtL9 zWci9xdhP`Tx3I{rREfmWenRYgK|F>TUX&MOY})diA4&2_1vUgC#BOtM#tqWpX-{l7 z$Bgc8Y`fy;;S|U1LI^dGC~vB7Y)9L9UOA`NNnJnGU+Awl&;8G*e3@f+=B36Ll`T$T zGbejLtkSQEU?Ep<-Vf|#gi=2*5-~VxZ`#HvMcIdAy#zQ1AYR`DmbSZWn%4(6!P!3c zQ%MKdr3`)RsI4d`?Qaqzh;(e8eK}j97KvvK|CCG!@w!3%GQ4UeVtqPr5ao>lB=2q0$zQm za|KXi8vDE31z?M5{(998mAd@2Q-ZrZcNd`lBzvZx$ z3{w@RG2%c_n1tz}ougQYuv__0D00g@4u>qF=TJfm3q3&j$*af*n;(^ayy{IhT$sqb zToS^2_^L#F#KF%ocQw~otTkNn#B=<1K5lY+dF1z`Zr4X^JMSsr=n`_B?(-~XDKvga?6E6;-< zyL)UX^QbmX(FoPGGAHZ4xc00XncOjYsA=#;_)nR2unnyAPgJE+uvvYc{}blhLRL>UT+Qcm@4Jt@kc z0vlJ}oB>osq0&k#Sa+TQVipq~+2Hqx)0P==q|)Z275{>7$fD5gH3P~aurTg;xa@W` zOC_(_{q@UY&&a8Ti{bg7RmrqvL&TlWLPP&qreU}MWa8(whsy({$RS>eqN~JA zt1e4zBZ#Q7IPj}Bj9P71_FS00df_*A;=ny0mL^QM@A`+2pxZzdsP z;%;q9c+?fit&4k*Gv0(x5ew$GRG04^UeGoB^b5m`)E|?mvyAyOJxj!l8EmfVXpEjr zGwVAnVisITgMKL zjS7j>;ds%i?rIe!^0|Mm)_H-+@B{A|$Bo}b!&{63y!3qJL4#dbkwGH-%=PC$8UMpa zVq-I37rm78tUV&$d-7ctv-k6Z9n4Sr#HqU}ry7D#v&jBH*iu1bUvye)zh= z;-n5yKDXh0>eJy0^0L)W>oP}#Yj>|@qVBp{IBUENZ zRO$g6jgV2*7^2CM5g5*PvDWoJI^U~y*jz3Ezw{j&)HZC(7y zY+IY*!IdV?QIzZVG8$0&R&b`&jDqitt8{bWOo4=&$90!dw2k51EoxMG=(Gj7Z=8dR zhYJJ(P=uk|om+PVqXyxwjp-}xMU&ozR)Vpuwiw+Ox60HMj{`yR*qzR@@4w>}z^*1k z1u-Ao>Ia@HLmP@{2vWTJmH@Nl-)0pTp)6eGdPn;TGJJN5Pg>RM<4&|3jT;qIH!;k?@)y|A)K(&!ABff z){Ir?{C>&Ao%1o6v&Aj&g|Y`GC%dK0%8dT@b~6%oe;@Y!x`6L`3Y<&Yvmj9?Ua3X< zo`^5N&yX<9BLH$WkJ4d*AKXp_4`9ex@r>mML95l!rpmitOL}r(mgK%yDwL3rhszSbUtcpth6g$Xr z%3(sdo!atQ-j9Dr3Y-*GKc!ihW|Kzc+j)^qlW?uRc#j#KE0&@X-YV&8B4%lJZTaMo zW=6|V-Wq#TeTvPzoc099K_Pm~=zRJaX=~WpXUhE89_DcdMR+Btr!b$gaGR7q=HV+D z`@UNUEhqJ$#0A|J+M(fcFDBkz^tugwb&GPhtv%9Xvv+AG%VdV}{oz0E(v=U+;EJf0 z+p@jqy*Q4-amfbMP=pNug0#l|V=nxSne^7_#y8KF_d!(SN(y{uBT5-uc_cJ3mRQ=m z$4aa?bWI?olL+BZjG(Npma-4dkT?7Y9t`vxJBqM$>5M2Cc)br!4F&7AwY~Yt#T#wo z={KE&L(D&CwH7t?JPSa!>dXfwQG_98{puy@uhKW~HGbO}Pg>q;FH3)IV zFE-*Mj+aLl14!?XOz89P1ws15|6%VQ-l!F zYD_T|F%MO{lNK#SO;z(8RbohtZP8LQ2_lB7G3F_z$p4IP`@Zl0{d?AWUi{X2-aKCH zwf44M*Oe>Rd7bC^{T|2X*lH47ZF2rn>1nv{h=`WyJxnxv?X1td9du!~)V>#3!)S7T z#ej1qOobKC4iQfCirgThB@pF(m4vIS8$YV)muo6lLEdejZ?tyP*FK-Iv^$ggE~s(v zjDZzK+Sd+FQsp5PRB#pTJD9qrEKnb}ruVyi)(_Z{b9n2Ek@1^f;O;~VXYN@KW*Kc2 zEll$sA31b#^P^e=Ok3MN<{s-0cUxb}t;Ff`7T@|6BzXss_uEcLv1sHYj<@MUk@@#e zSnY1)5BKUrNI96&$NPkHP7qHB19?}ZZ^ia%O>v{E;`k546akj>O|=$n?%Ta!A<4#N zTgm$uJp$!JdPy6+MU=ilA;>+>Zpw+D^=k9Kv9FhMnNOo0lMTn{%s>+n*!7U-R=@}eeH5;@|M>E*0Zz2 z#pfm^W|li)RHexje8N&gyjSZFLjK^8iq7EFgr)5j?$B;mx(yya|I3m_St4W1ib!|G zhnoKx5P7My9@Hx8>Zb!M_PzzDm6y7X&1}3UgRMtrj|g?(q1DrcyPr}VZOsZ5Qc)t} zywU-;J@%J&&1Z{aS9|}A*6fh{Sj8}U`Etg$MPIM&YBsHa^*s=dmMJhOPmy&r8uUfi z@MOBLzUM!Qee9j#t4Uns^70-)yK6)34+xGDg*V1qIhh?=ndCQoG;LWIH&z?G@Dg{+(4zk3 zW8u;yi<+^5UT0zjwrMQiSm9jd8-KP;m20B5ZjAj$L$;{LSm7-~zM@t2-^1kU6-HT5 z3l~QMtuj)T|7QOh*Z1$fc?NZ?1Ik{g8j;nRaE(f+wda6OK6)l1z?|o56@A^)cO)^q z0%{FDObIYH_{~AK&d+yHg5f3prM-nzP-y}@?y`)A~`^K#z;H6gf>%f`w z_jy0rFjCsp0{3_x3;gZq*|$=p1!p_)_wSh=CEQ?pccQ3lvLfVuoV^E>_@R1(?_2bl#f5UJKn67 z6ljI;qov9>xgSdigW$@R3eolx$I#4YFOe!nBc2fsz&YKn8WmJC< z$l00ldqA~v=jXXv{i7E}Q;=MfaGjPVi#@~Hl)?tVt?DmF{f?leGHTdrcmGd?<*e9H z^@aP_8C&`i=!VL#6w|8;tQBCEXdRfOzv?b9Yl`3DXn+GN#DVhV-=|=@D)(>yQgcf4 z|1bUR+?k)RnEp4ba&CY5u4M<3ddUT)$zN`GyQO5dPVT<*nC@#ZjUC2gi2im#p+j2K zTqm&8^lc{4D{IZ9FFBH`zDVL{Iq*Xv@ecKQ-UH^l-`rsU5V>anoO9x)DP_LDfb$n@ zLG7%z<9_Xx>9x!Mdnw1nbd+V!yDz_9RC)GlIamJ@K=>~|^_LssWY|yA)24wO&#ToK z0~?WuH3{LAxSv$98oQ8ejOT1iUoiTMh(Yf z-!`guNfKY{gj-TKt9Vdes_FizkFZfK-vbQDi6#6hlK52*;A^1{Fw6)$KPP+ts5$!% z5QTAe0Mk#Fu{iEG=|5*B`G-NV?LAcg2MpWl1;BdnAurwRKd?>o!GNL_P4)h(^l65RhD(sUeXsaG!d;b+%nRU}<0f$P1``d3v03j+JY83IDa4@mMr z?Y+qRE?^`>0;un=Y@&NiHWx{Vnc&u{(mjIyBN;yV>pqAkyY>G2Kqs|Ins4`5qN_Y0 zc}^D-B;sH@<(m(MQkc~}Vdn&p`- zF94Wd4=YQv-)9Ge3-+T*Ohsz*J(V`$5~d{`%+LUS)fVu?AXn_6rJZ-CEMpMv8F05c zZ>Jn$TmcoE5KSCk_Rbe+?;jX1EMCx;tXSmoEu<@#fFwl}Fm|p~md2DCZMmyfB}R#v ze)f%euQpFFj&9slf`61K`sW>bOH#sFs0oRb>TN@8NLU_^Lb88g=rp0t`q{GV? zOfhKKnU+hZ15=rj31A|paNM?4lqhJOT!MuYGFQ%ph-?fX1uJO=eIvELPS^~^6BXwH z5{i1kCU4U>6;Ry_`*e4QuR@%#InxdG2b8HBo| zKtMrm&a}k@n9t+6M9q72i@rFA7F&U=>fKp!$TnJU&k6J~Km*`4EAuMHI<@zJYSK`p zn@h1k{#{D<#<6_mPkC>pVgiP?^cY*=_t#4-hmQgwX{Svyy3+@3fIr<7#waUIPJ6TU z1E|r?&!bdR5O*S@w>_3mavb=a4)|pIa*dK5ruZJFtk_k;s!JlD?_1I`z&O}5S#N(9 zW|)boS9<341HD^M^C?>U^|aa#%&Rrv#%Eyio}JSQ$r>neqmLi>o(KLwME=Ludyc6H zn9$g7)MvXv{ri;obI#{^xLX) zSARzaRvvFYIj0hsY>w&96MsMRp=XQg$OGzDZ(#L3;GIUd`jblMKFYKB{jA)5&kTKw zzPRUIH|U*%;h1MZo&pZ`$^>sQ(yR)e9N^SfQD<*lV9!{hmF|AyOj;#Z%t~i&%Aai9rfrgi zR;F^qcA6aTE|Y_pNx=U`Q}RoIx6No0`_5!e_Ehn1JxlB;PmGe}Osd)4@i8gj@+^u7 zi{ny5_xZe+#;{ks7ro}r-eh|>Do!+6u@V!A765!-Z!R&=)-&70Y{K2a2i)apFJ(foZ0<$nZBBVxFCbo z43ny~v;X7YrTN_|ksob4pi!*ixVs`^5*j#qn#mAE*aKieCUvTuBELVBG0{`$vf`!AJl~3 zuikR~YjVu`uhXno#0VJlWkwba`?~)t2^g+p^#;%Lc2}51Qs+2UAb-x~0OE1fd5a%$ zve`+)`kBUP=iOPE>2>_BE}|%q9zZH}PGY-%R%EVFn^W9t?xas&p^EQn513ILS1W`| zkR*@XfZNx>t1}@=64D=XT-0GbBErF0I|NVi9LdNp@tN^4!`%;!I&a*?OUOOaLw9wm zp=q92x-MbK;3>%3>oqu4CO?zsX5uI)sM@UCK6$zQec+<1bIWitWi4=Ey(fePGbnHF zmMt$I6-c{MXy}Wd*t%R%{$iLqY&A_B)B<)}xOI1~@#>iM9SH%OW>ZUmrR|A#`=#^i z%9Z0?%nU|AA5fJ5UB>Ub^uqb?omLZAhVgBmz59M&`}4m9{=AMi{djc`0K0@FcBEG_ z#y+F&JtkppU%jPTue!ac#W&wB{~v3C1N|(IzJVAnB;I3Y)q-EuzOc-8!Byu@i$!VV zvnC)7bX3LaDg#v0?Tln2++soF?P44)B7{xaO)D;{>U)(I? zt;$Bt4A_^SM%PNCH%@MjJv&tb$mh^)8H>9k2hcMcxp-flw7#;3MeKi`9Dn>oXD?Ew zP6C>1EsJNUm3ow_+O0%-wSq<&{0xu|H85~;KHHIuBl{ePMiDnmoU^|@4Lxa7y?v?C z@$ToDR$v*N2^`#>?zp{~GKQ4R6|^EQm$hlfNKQ&bU1}brujLlgq`(qBF>qCsAQ$3) zR4pl!WwFt@@Pp$@#k5~8G&93@W~tM?xvwjzzZ;3j9O>&(B;WBU2)=F>@Yx$xV-w`q zT!Jd7_y)t;{%lsMXb=5b?49wMe4e8_FZifEyYx0}k6Ms-VVB8djfVJNUgp(yGYrXgR zB}r9M2-GBox@`G1PhVjKlO+ZcL_MxG$PHw2v@tCQ2MSo9xe@LOPk0gS+?VwpE>Na= zUgdF}D{T?+ED}PzU+bNBh33$9$S&Vj%=kQtu0VB19qnn*D@@2uw!2VE;#ahbMgo37n3lus1D`7qUrb`{}`vO6ZSc4RRr6iPL`P z2ox(@*rZY*uv`3$Fs}8^S#s=28tJF+<=6U~ZIO;w-5FGm5@GLocpbz;_G+t@UFN2L?ugN%VaIQ`#nk8&p z4fFGML*_`=0t2K4&;)_7bofUGGk{f#8F3cr91?#c#oY_QXjbc>YH^QW=bOo4JMT_D zV4v##gryjYcWT;gGzJcog2uVW9@!b4&?$(+FyK}SV&ChL_BCYE`adCaa}x>#O~yg0 zEd2T>F>Fx^T9x*hPcERto!h7*Ko(^%nD0s3=<-`;-(Eiylc5xlo+-8fqH>4C8V0>K zt(>!sdL`7VB9%N{I@?FimD^>#h_o>&Ou62{j9~BzN(1@i9SfsDsF0&^F09vaDVBTC z9eLWKYQyQd&Shqm<>ybM4PjDX{|357vmGBTg=obB&EaR46Bg?zURK|UwvC@KXT&rD zMoZpPlBM}?y|fPPUtHq4usU|~BItX_C(6qE>y6K`$M>(30m#Dn&W%1N&?N46V>YDu z>nky{c?x73Y;~%u^^_entV}n^cF6qRe4Phvb>GjD}+hSvxA%XEX1Gk6X5MTe1rHuQ%T{mjBqQeT+XClP*=U7*_gq z56pP<&U%(rXMmVOioba|SezNHB1Mvx=|jVr77sV`{MuBz^Ypu)a_}Js*#)K~qAWaA zkD=n8>E!;bds#1$@3&Dc=la77)m`xd&&Al?Gy21G>|05t3_u1TP42%%9i-Qs8Ca4D z5P#>tX^;nQ@qqcsJO;c7pm@qy`)aHIY?`<2OAEpqmKZ#7m2>a01xr6S*l5XI=BYDa z*W&qZlQS}>!cb_aijHr;qrAQ!n%!5W>jr(H;~s@n+Ih0I1bLu-gyi#f92rt6wev9x^Gt_ys_xq4j;5%bB0@ce_jU zsT+&|ok#qLxEao)<%oUrC+{Uf@s$uw&Nn%EDwQY^e4p8~ zRm$5)C0I6qG(Wm(bZTuti(XWcAJ+@7EO4_+*@6UIfPLy8RjedareqXEl!l&KCnc@UeF7Gv8?72L!metVI=L& zjN>gKXKpFeVOZkYxVrWD+mk;Q4wRmLA&W>AZOZW@q9FZ%$JT^(>ZD|ZUOpsbTiKVi z>S$Kx20zY38!W9Zn<=m;QiYr9l_#or1|>d(jTdw6)8<}S(j)+E>#Pq;y3fWf;ii5L zn9%HPd0$q;nFG;qqc$_U6xS5MAs`5vhq-g)qVIr8&2%BltP2SYq(g6K?e7T>w>0a$ zY3ZK+Wmp|ZC$63qAA&K{reT7cL5bF0j@S8V7_N`*DmXEOAzY-%wf!iu=hu9cIx%6-_EmpZwi~FchzPB@r|`*?m1imC+s48k}Ysb@U8Ht#W#T~`=NR#jc^r-0_+8Mx=Q+mbtdwptZ)K@>}&h_{oQX8+Yf1c)g zlllE!&o?M~QHpXR8@HG(sM9(WRIMkYLXWgCJmI_p0dvQAIBU*w7 zpC96W=l48m(&UH3`$^tZfcP-^F6Ar9UGQ#51 zXv*eYeZnWxW7e#wUn%A*-B|&zsMAc?bH}k&%h~;+?}j`Nap&B?zM{Oi?y>lt9@ut1 z3wiUSi(MQTZE<6YiN>mqXUw4=gmp4Xau%9?SI`xI)E}wzHw*{53Fqe zl6b=>9f`La1H>lYt^&uUF{zSqivZI0%C{vap&3gY%8b)}xZ_*k8aWkNy7gB_)#MsP zeJZ>zRXXia5UzJ|-P4-;Z@V+3BlD|X?8z68g?qD?rJ$Hs)C*^-b4&GxTe7_boG+~N z>X^20#0<(BE}0!)Yd@i%qY3p9KRgnCB$ex=7|Za1x2<767SFvyl+YwQKDWzied6U4 z6X7>3PoZ9@Y@>w{%cs~l)@*L%e>>jaDBAlybA@7PrW7U0Prh_>XK66*4qNA_liQj7 zulgN+bjy_wxlP*9*NEq^`}JO4rmLh!3Ivqe&cMcRGsz#VcF>AE@Z_bYXX3X!^9Rth zMGACVWK@T}t!~LY^a&<87Ms_;24Oj)y#6a(x3m?tz-j-b{uR6tIexh?!~0I=PT~{O zH-GS4UStos0E|m+G@|(Vqy2GLxA3)Ss&~a2`4&yl=P@7K4fPMl!ca4n@v>yoeC41o z?M#GN{Za+i&$gBmiFl7p?AHaePe0;R26f%8T`xeTW_KPc-ae?6&-?Zq>(j}W3C5;% z>HX*hX1T7uu|k$P7jIebsUS?Xj8L^$y+*^rL6P^P4bE6ur>*1A?7YGw*YNqBZc*XF zI?x+=Uhk!4(dKWIu!eZch!EhA$1Sm@6Rs`*kSA=;)aRH;tBYZ^Z&uy|s@Inn!iZFf zCYDrPA?NFRxX>z@(I*3PS=n2prc#_4*@PBm+GJ=*yaGkhH7bj97Ks;-@@s4WLLj8|}PN%?h0IXGDlOzND8@IzU z{{0qW-Sy?wj%EJ%c<@-JjjgT_JB8@M`822J;7o}2cHG78dS-#bd36%5agv63sjQrgYn&4ty;Yj3d_^f882@P+iN-HbUV0yQwDJ; zlr42AQqB6dvC(_s{u9cD9SW+k=|PK7V(OSKUj`dToe%A(8tpSSThl<7(!)NjtVd_DHqB03z<1=PlG>pTJ63 zrq~{vmiNwycWo)rZ-6bArNc3dqEs))eTFyZynw8AijEE>&klhm;t$*t0Ma{3*CjNc zeQc4~YdPRd&7obo|H^-%JDdUHEcJ8Qu#OrFe073?JGxVqNSN>1_&Hc`$R+3!KfbZ) zgR_D7iloA3SMf-fk!QCQXpn)8*(glNp}(vyJ-5T&^TX|I=?-q4_3t6DoGi*E<}b@z z02sMCpm;SHj-rpXARMaM`S@=Zj5^V)wgYYsE#%_2m#eaEaD}`;J3AES$?&E&qqlM{ z(w3X%;JxNtJr=ebV(?K0cu%mT$;1`;4VKchGWVAzXJf_3L)>4f&`$IZ4WZKk?`#?!$gX9(Zt713U zTc}}X>qEMZqylx>eePD-mOl3#07i3Zz_^)j=An?mKG-6(z!RN)SZh6>Ni?W8PnX1F zZgbbXTG8M&b$|(0|V>AZK``RK2Vk)(3FeXpb`Cy*v zjJP11#u4(tohGg5V~++5ncNwMO}nhZkFfnEJd(PfU%Y)*I2O4rcy^9VX%UTz@eYzs z`Hjd&X7j#OS&N=R(Id4aLSlYmwHh)M!ZZ9yX#(gSYD({*V-eGt?IQL6xiieFiS zd+)Rd9*(weZO^*g(T0Ia(a8gYhcZH2Le|IJ)uN={LeJBHx5hjwv(U)$YuW%73b0)te5%UKdEy>7!X<-K!r*I^xEdV&XU_B?uGYno(msRo?|CF#F^%mlOCa6o zUV&fWS{12ZmDy0StcWOU46wbd2|3u136 ztKUQs>zZw#VBq|nQhM!AZ%qBQ$+QteoG5#g6mp+;7Zp@{*Mt@uViNrr)ksfO`>Pw} zOI+n{>g#D0oj#wxx7gg*UHZ`>R#ZsbSp?O*5p5+nDzEys@>j1k{bS^Lr}SJVOma$f z^gT-w+H+LRYffUoTnKe{*_Vv2Tkb#RFKrZe4uIsEF zRKP8AQud&~5R6yIf@~n0hY%q$BaVJ=j6&rB#`}P{(538^=eSdbsPCEwtDfUH-h%Bm z-cIJz(r-1+qrAh9)DPIxQdAeZS4@e=!hr2p&`q%AMXlZt!Q~ z0M5qEUoYpR{}d}A?mNKY8ngj6`d)5_5=#&G+4IRefdc&pkbO3G!DS@T_At$|cm4Nj zyr%X8n{?Vbh=q3q0*Dfq1!?)7HBNGC^Tm=s4o{J4H5|J^PV4PRP&^S_oyBw14^KUw z1|U;U&OY9of!mLTjXz!ukhj*HI3ZM%JeG89eNniaa7rvbrFN9luibLalUg+8xY19BM!-rA{H{(@Ef!>4+j=Jom7n6$vxN$7Vuw zTF{6K9N0eD+}@m;7(TRjmQZ6KI?!y06pD33=aIP-0%hj?v;K9#j7kA|3LrWam^A)P zuI6BQIAG_Q1pj!X@%(>PJoHaL_OQ+Ww;=idU321V@he+h)icwxL-evK39^??PSN51K-dbNW?W|{?##j(dLDi|^ z?mHFm0YMveav*mZR%&Y>J`nhfD%K5(&NJkoBob)xO9&&A7@i@e64Z_w;XMl*Imw1j zGag!sB>N8fEk?(0kgAsmsF}Yw9P{XAf<0Lek2!)@s~x3^HkK;^-abz2mH=7*ut5R6 z;o$koAkF2TGI)97mp>O>_B-cg2FJTE|D)t`S=(*sPZclidKHtIZ(qY@&Rt%uBL?T+ zj*T#0d8aKYlyS*owruVo_lYG=DT^Q4(dXZDT>;reD{a2DGFRzVtyMoCO95!FHrw_V z&{eHeEJy-P&r4tamJ!+pY2x8Ac-xI|JyMBdDW6kd&5bY~XFwJG1US59Lazw4p%Ez` z9sZA&?Hx6RSDZj8hAm;(Y++wrOqOkMM?5`4P2WrkoCsRJK_I^AlhpMd1lNpvqyjE6t^%_A8dche{ zF*ukHrOW}i=Kf#=D32NUIYuSKBjh4{Ako zCodh0%q+LNFhKWu&E{ZR35&U_o8nZy%}Ts~gY3%?1p1CMG3$ZZ+*rBfmIi2V*n2N& z4$^gqjwYainXeHaJzKt4thVdtXb|2R^j%(hxfw7NplIy5PMem8hP&74n)(+$RfBa|4sL?;o;K?Yd;wp z!g!~ivR>U(S>%QTHI}QH_Zht4@i{b#=+c_mnn1~@1&unJ=J*>NRX5|K8>~+hU1xMD zGXkA^CNkQyAgOWjm`&x4*4;~bZ3`4)sSoc03BA2l!`)JzB5oKBCp-PvNd&e@XwJKV zZ8T2tx&#nLzoNT$d&qwaw_^CZa^ao6(H0S&d4+Lc8xo)MqzOna4{gq~EDlzkv0^(B zIvEiKl;z&79cD3$HU~Y`NXJ@NN*VT3hR{%cUTybc%Hh`zSOR)~2|yS3l^yKN z11TCFQ@8l@j90`=jVCsX|JKMc^bE(~0}cmZrx);?YyuzDI#NLdfK#t!caHJG`|Dhe zRcnl?hd9vJ;Dj4d_XSOn{u7q~4-Xq5{L*Yxo3kQ)_nhAjV&Q zjq3kcG8$g^co2w2e+$&co(kQ*vY!7J?&P4V1H;ddIa=%%qWhN6-du402C(q<0) z44hMIEf1o}o}lwdsoa|(70>@`R8h4-)&%aLS(R(3gn30jcsn^ja=&KE{zXV-D8d4r zCc`cW*b}m*GC*I=qw|a7R@$V~?YJB4Q)NMGO;Hjvm67%hVTl8mcdy&E;ID%|hN>ykmO=(&_5(KYg+c;l4y$tJjFnz_I21GZWX;~h(r>?F? zX12O^TGoYdF*wDZtw}!HvJ4Ta@2p{))x1<-4^Wt{j{V9@xgJtB3G7r3AZVfAtv%q% z+Sh*<^C(nl@DUr4lb@mpv>ej(s%m&| zkyPbmCCUR3yiHbeAP$>hi3G}ft?5rFXV2O&aZGjRj#`p76I9~qTu->Hn5;qKGER5B zP6F9fa3Vz&KiR@U9{HK;(;ES>yN|E$Uc)bIpr5*RtJkJzT%zy>`zN)bfa1SXR>Jq& zk1hg>CM>oiouOR?{3lm&*z#3w#QNTbt&NxAy+C`)c*FL9zO5r5sX6sFMv3*%S8y#r z9&yciGJ$Ge{cI-f4u5|DBL@u#)14h*0w{*EEadq29@*cEP;e#Xx(tte8XpIezD;v_ z?SnoTl~B1Fgz|Tn&x?N|uS2a|U~} z5Z?k0_Wz2nneHj4ygpQg`7ce`+e%SJy4U}tMLQ>oh?vn;EUrELUxzymv@jmiJ(HD6 zGXJe9%X#n+*kal^o)`Sr*+NE}dZw_H|53pPl$^FY(7Zx0NdF&HVMps;n!dPy-Lbb3 z`#)#!oCA6q**xeM>t<8i?~47bH$bKB|GK_&d-b#LD>Cee&GFS;@xVXK2?W01#z7rCE(c8Ko_SseimPE(}Dom}HKrh2c=|Oj%`Tpf@)wF^XK6sefH(I=42kr{`d&!}m{+5|EieqA;JA=|(jZH(__0C~g}Sgvj&c zut_H>L$n4W#GM%uH5K|Ve+Hiv^K%8LWIqPnT`shTh~tefG6FED*{P8old~-E7c7LU zZf=^T-Mr_!TIfqYBP#kmKHe=rP_^rx-8P*HDJKWFsQe0$iP1Nei=mmh%C0I*{d1%M1dT5V( z7z3SXe5p$|ZE^F&=30}WV~y5eS+)hLYJm7#MtBTa+^d){$aS*j- zPahqyc7|YeKjMmpvSvwvyJ16+pE_@8iT|V!^?%T-eLPT?K zP|7BkdECe{?_i4n;n@KeOXC)~eoqbLt$kO|nlWs6FkkA-W=f9Uw{%BXEE<0-DwuMF`fKwV!^ zKDg4)cWy+gca>jx1|Xy~yX%5+JROO%;i@ipV3%xcUScUERLmWqTLZK6 z`0TV%U51!~RQX3U96Fbo;juzN-PMR;sKJhNci!Kd3s_4Bw>FvV(kwh+z>;P598`=s z7ig9^--X<{XZu$l#^Qb94D}aK(S6GiF#KN06_^;x+f@jPWy8%XL)g*-ID+aF;mjKP zJjf0)JDsipC`>?-zY}P4uhXmN+r!nSwl{VXnm~hRmzm`EII*oT)OY5kaH17?P_Hi& z#0Vk5`@^FE8(Pmk)wcrm^engz@1V_*k{nm!&_QmO>(JTIqK!*I#Z_(m!M5{@YBye? zTQ%10#2a(N_aX03y;7Vl?*JycMUNFux=W`XD8m+lB&GW(!uE^>!y70$7Z9dw?Kn4} z?EG;G3>xa`7uY}7u61VUB|j#VTbU_?&e|+i%3ZKKQTrdgpMNc>{li@KmYlRpC20<) zd(_d!Qpj;jI^SLL?@S`QaZBSZe-Lk%ijUryB#lHYbtH20ep5V2H)j{=u(>ncH6W=3 zO2h61N+<5UB*dx`t304Xg9?%lh7uRyIm+7Mw(eA-6AwGSwwI7oU=&6Q1SCIoM>#KJZ@k|C|R;nIM6YPjM6$9zNFIy zvz%}J;_!81!EQw2iN!JOD<`nNw)eyNPxVwqF(Sy0R11OxC|SK|x($%xp@|ZS`(ogJ zVcq%gFJ?+^?H0;bx@>`!0Ra;x_T72bPYF|t@U3#I@XCu#h_TAU&F?Z!kou_V+9n`neW2W<-8i~#-`-pXq znb~fjXBpGiRi~ogxS*>;@`kF^cm*KG^>-B}2h#V2d$o41ssEdh>rY5XRsjPv(zC!1 z5IC1JL%s?(8N)zIPe;J74bJJDd4L!V!(J&V1nL0tAfLl<3bMqy*$35~^1|#!ahP3@ zU~|s#E>{Kuh`}sfjLL;yk7U)nNPCSa@r#1{)y4uNk)5-X7gcTJvEx8R9pq`k;WhPY zwfW2$nxb_I)~UBEgiGRQG^qk*iWJ@eC@@1rCd4gs?Qa$3wMRor zT)TPWfxuyAAaeTgzABRr#b}yJwi}B)XVi<#_w?{kJ~dgF$75`Mn4nxCfGX4uzr#<$ zjT$Mg{mh-~!;tahwG&_~&eJnU#(ehqQFe>4@^!>q)rnl9;xaqy#wmfPP8a$FxuzCg zFP6&rbsQa>=_qM|>)^i|GeR=e9x{h=>*ss~3Q`0_VdHq0zVI>wLBg!pG!_c4dmSbc zXsIR}@O_~Hdxsk9a$jO!iev7T9J4A=Xf^4*>fK-N7Q?qB>ctNm15&~=nYM?7Y`Drt z1fS!^kMa^3m+k#A`vR3m_iiSy657{Gp&Tosebu{8r0BUEUL6|{W54tDOeX_1G&CBJz8B?5=}F+VZ2 zMve3Z0&oJY_A>)@b+3Dq-^S=6dx4&{+dF0Ua&W=Ds&!HMm&x2Z;AY=+vAP&Dq3B@Hu^74wk`TfOmCT8(WZIY9E-i|R{Qv% zX{@v`d}C^JaFG+`U_Ru-vsHa1!nPo>Fyl%669WM;6|9ASYfm{UrWvpzZ!lNcfZ;I+ zx|CBr2E)JK4GDV-Q{2p!AjT{7OGQg{<8(v^b}9I7l`E0U(Qy5vYqwJTMLV1_%i{u4 zEKTZIdSbmvyY~mz+?pG8i=+LDnO5COK)4v`!Ev)}PPA|=w&Q2FyqddR!6=CZb2(i* z+9l{6XsRBl3XX1F+*!ap>bE7W&R_)8tBZ^Zt}=~XGyyyK+@b7~Yo|_P_9~r(yvw>) zq)$__Q(IoyXR0>!l3U6i#0I~VbtbeywkEVN0e=?2DqC;~ZIby0r_GT;Vt$ZeXo-7v zv3C{7ej9+8nEylvMf2oqaQfkjjDuZJf~?2SAMTl3$Gl$WbSX5h5+6#_ex+|Eg3~VD zN$lC=Johs*xFi)XdpYe(9D3HtT8-aG^nhy>$@mDVZ$=(5Di&b0p4+++<(aZ<$c&ha_r>8qMiI2#AfI#n*4DFF zz5IHkf$$iu%xn@K{__0DwLkN z`!&bQx!1Bs9ZQegW?3J-I*JC6bIF?Vz&psh5;jH_pektX8P)}aTcm<8eposFtHzR? za#DNMpY$au&pcjV9TIe1U(rxW_u#LXzu0Onu$h~gu|&_IN1`zOlMfAs+;sMir#-%i z>+BcoJV$Wloxz@3-oR)R=~dKn@q$AK8ZBMsg_Vg{{STRZa(II3_G*sewlF%9er9HM^|Y zTfPM))T+!kOl-Sh=HQ)IeJAkR$dUM?T0wR*Pdt%)0l;NmUHl;fU%YG*oh- zP`3FZmv?6Fmq187q?#+8YBj&47sQJFX7E9_2nZ_Xjt*BDWlEYeIwlMt{bH@An~Zl zvz8#RckCt9$Vw{E-f|uFd*2XY1Djo;2mE^c8t@oK7ZIfH^5kVbpX+XaPxWt2na(X7 z&{j9XRLJ;q%jejlIzGP7y=VwdvL(1M#dW^tmtB#0x|K|nx@+f33?6?Xc-=~Uf@4u* zI8I!OHJ;;W0!NNX8~j7g)ju*?bM9ZA%+M~;V~K2u)u&#H%xH1n?4k*h!D>ER=Nx+c zScPCm@hyAd2%LY&Q?c0NUCP;p&)hv-Uy9vE85R5#3-yO2rzWY?h{V?O=aa7();+X+FG}kQ5jtAQ z?K5l7Z?AIx*txr&hA+|+>RlcG7=y7b3l52?Z4MB{HFzJ4^JcjX7e^|WNAoWno>`HJ zb5j%VEq8jVBS^0}xShoH`}ulpu$e1lT_(9dIB`JMDnOLo=pn`(UTB{Ww5j>>#V^IH z%`xVQ57+hD%^7Pzf5CQ}*v3AA^W3%fMGIWVvfS`#k+Rc!fLUVuU_Taq3_DtT>w(?47@34(kD{@dyAnHVD@o@|UMh>9E+4BSqv zT&!pD82r-On|il;sxoq^xL~+m;9v|#PK5zfnpfk@GRTjuE<*x`WWls@k9*6jKpX$u zu~4#%c+QXkvIGb1@Z!;?ln!q8`^qc1jZ3(8COr%LBc5X_PAf{J3RwDZGI~(!;jSzX zplGy_aWra$oX)--$|J9+fy}cN?8bhdp{l+a_WGSy)IZ*Z);*8@o+iBl;(c(Jq`HvM z3r1B&r#NAz6NXgzlxQnOU5S~`?c^<75t$nm`z-_`4y#7o%bu-&o6-DuR-phmnwl3VqDzeAWY}TY+x@)s_U02qZC`R%7{Kn zq5aAIe7P>phP8@v<?(y#TAPsK*vV_b`)ZUxjmu&sL}7R(Wi)9g58gFbbt zPXrQ8VBI<&KIRk%30v{bO3Gd4Q?r9jnOqEN-SCVRWSuHiB)sHQwY-hruLcs0jHuCa(zQ&wSa|oh6Wqa-me>Hu6(rGN=c5q(S zlc?D-C6K$x2{*jPu^HX{mnfOLTX!!@3 z)(}KJu=Y%34F6i0#kAZxEN9HiEyPN3M-?($>)eU_qq(?iuf8G>E~ALNq=oQG%@^}~it-*r*C%ft(NPQ??He*=&c^ZC zcc<7rRqhtX1KwgQYYRU3NE7z#-$QzXbJp~QT=-9PKt6RZFH+lvd_A&W7)PzOfnU^= zH+_4-^fOG>Il^P$$uS*MHjy}#O`hFwsX_-k({OaB2HCPsqj*sGboo$%A)M&K`pa+g ziyrrUhr;=d_s7}bEMN3X;cx!hM2uy^tp`UV_HK&t@`*(BuO{v&J&tmMprD(<-$16o ziuilZmGpc(8+zPIX3rZFyLkxYk2~+9eV}=(w>C2Z)>4ye6M$^Xj!_+}TwA6QKqL+x z=+LKsNtzx~;M3ms$9Nh;2WtrV(^l||io4BrvH{5Cxt=*|)Y53SPt}c6c`BH;E;8q4 zIOCj0-pepi>vntkPZYAK`QBv>W_+)L(`4*IRkOnyanR&NOk;^aT-pIl*@6yu~<_r$AQQ zxvaK`&L%4V`7+rMXYxokP5h%Ei$ zD*THI?Hk#nb%uzyoJy!!nOm^gu!*&)JuN|DxfZdA{PXG4ov%)Yv}$Ja>=^1j07P8K zLG942PdfflbMhKPI|KQHHs3jCI>58eDDxTx=Z@_scjxU%=KQ6P98MFx3>StL!?h+_ zJg`#-^M4pH>z%J=4nOdUJzY5tns+#W`RaM2km6Esi#oDZ@Db{8Pm1WO&|52cEXXmT(oXXSpUu zRJm<_TDo?WOVrkIBe_;@{uZrgaIsY!(1*Mdc%m*P9 zlO|2$w+8~0*2w3W4|z%CTcFk2=foP@>q^wi$66`Y z3hiV16)jTLQD4$TvytKvqMZf>ml&E_d6WH}Ok2;cr7=dAe#ve7*C@jDx>KAPW39>d z+1-}(8LPd7&wY6#ZQ;?@EH7;cZJfg&xj~mR@NQqZL$6**yi26qyx)8o+txVEyQ4Z3#f_USCYmrMN9Aj~ zsSTko-tR@Ab5pc!(|v7`b|2Hyx(sF9U92FI+cFRS4}0$!)#UcJ`(nWYqHC$hf(Y19 z1OY{gbX_#1NDW8{ph&L@p#_MF-~t3xnslTSAanwu1Peua?+GGJ2%(bzA>_>H!vFj3 zz0Vo@eBER7fiWm~o+mT2-S@oi-}Rm%Acs_taMZx@azPZgQk}w&^|Gk5TYVIg14pCt zS-c?c9wbIxC8n4vt6u}DfQiOG`OU7CSMw{t^t<`ND(w^m|51(=3W;gC^W#a(N~8H| zwZqrf#@BOR|11@3WmJY4P5jLaBbEkCj2EA6A3A0fT&|&{Sim23oJA?;&DX>N%Zqoaj^#lzO==raRA7C{)rE4Q^k|tA8wrCIpH#{L3R}x=^d+&aF&AvU(wkw3P zNc^$}7Q~4bhp#7d@xy@*Qq6>78`Wb9+^PAb`4yTLZg_BF>jWmHnsR9rxKCAEDYL7f5|0Tvq;=ZX&q}RvRJplsrXYs_DoK3fEppmw zw%XuWoR0P#s;H!^GyP06wLv|$+HY%{dLI3H?yR2Y?GKZ;avJ{rvGtA<|4{zv`a#dL z^Ns4$D(q39G`XVvIn6*)|AW=1?5CACU1>+Q>rKyDJ>yRV-@E?TW3TDUDouiZIFhM-!J&KPa8*@b;Y5;SZ$e=%q(O+1;iPrP=$- z8!%W<|A{EYa@)Rgm?dKBi}>|-cc(=Lh<0MLbw9Rqi202*+Ez7q{()67SJPLBcLk%y@S($^m5W2dN1@cT&}D9&a{zTc4yhK z9hU+5L*|8wty=uB1ozsnsAEb9(rZ4U)!ELaRYST~^sC*KABe~fPHx2PDP6j%HDB^L z-=|C?Tr8o)9LdYhA0X&N+YS?!Yt%}#o^FY`4}o01xl7Lkeo&R7r~x?Z8DTiR8s2e6 z$au&H?`4G*-glE~ekQkOb5O#M-p3{%3s-2ODxqBM{!~u}CvthRzVt~KgL7}P{o|FT zJi;Li7;n<*|Pig%LuQ&-y zG-3gt@Q7g{xdg*c{!KBvFN21ub2#cLKd$^}da(-Iq+qHXb4X$!!UK9YvFk&aOoc1s z3<#=pT0p<6e39W~YEY?tzM9g3RB?oLfk@Ys!v;tI;G;tvPhUA*bKfruguTudHc*ya zUB!=RaR<7`$6yD9*@94b&J{xI{Fq(zZ}u%KQ7S zrF_|%z?;8wFBqQKXh74n8%nj-BXxC#(K7s8Oy>&R?&q%FY|>g^^lL zLEl*$f&&>r`*z?XyB)ClO81X1OBe1%Pfz?XPP>t%pSv&{d}y&yuR5spRCKm>vA>FE zl)~<}q{W*4txQW^1-p20;8X(>5!K7oWtLp_diu0PFr~%C$#8Tqb?gJ!zIB^H0HD;~ zqy?lbcjOEB+CEesYE&7Xz6Jj-IDCA1}H*O0%! z1-ttcm=}T2Y6AVSbgt~qBX{0h4MamKToOiDy>RyYEX#rbsB69~8C5p@x`sr?wnxuxV`MnC_f z;D1tiOSR;(9>oWv7xls4UEPNPTZpKpBV_tBR#;JHn&Hp-7|<^limmx4Gl8+kIm_8s z{@&IR!nodTUqFRy$)P54nE5ryiPh&Fy2U1G#&~JChDhBu8tfFVEK*E}41gFJf6V~wgx ztZJ&d8E7v&?VFxKj`n%PR$Lu}VYBoLjRcEt{!yeu(5-5!VGb==iWC_}@UpGW{CqRuo9lWSbKChD z%rkEQ9n8O9Fi$WoC5?IxvC_ti0p;$2uC5uiGc>{k7{}Loo*Mse0%pI?#sAs+~(b#}XXqIsX6PJnG!c)aJ6F13h>3V(ZlGhtH%>f-X6sR^2fBiM|x*|ExtD ztu0(^QqrT}^bzS}$ff}*yo`a06iT1;Vpy2~CG>xwkW>DEQ`rVo)%Y^UxE^ONwFB$8 z?U}=N`$D6lPD`?7yES<@OFwP%l4P4LJgSFZe^IIh*PFx7-r%@9Tmnys7BRf+lphZq z3Wf?ilqfwBd{FcZQIKm!{6KkO_iPuqt2A(10wG?{02LUL46HR) zJNC{9EsF1bDplP3-XBb3`tlPbISMEySsxf`UYO6sFnOcNWr&i3b7Cm7315FK+`RA6 zYvgt&gEfA0_pHoE4-$dYm~@n9*}RiZ(=dmuPY@-5aGA_NW^*i2Jl8Nl2c2?!n_$wj zusDjwL=gPHcF1lhQH%jEQE_SO^sVjH1YW!}z`kmX_yB5UND`>=#}H!85Q8RM|32We zF(Jc)7UaXbW3D=Wv_mVUs~Dv;-@ha>7*GtqM7*u zL&y%O>dOQ<3&0^5$eJ!506K%u9?&x=04p0P)A6JD{@_Jo?TRKYHdWcho|3N2U0ON3 zSO(yXUWK}L2!N``BIIod`z6By_p1UKXu-IpA4B_080*_0Jf*Rt8`@re?frZxWUn=w zodCNsovDQ^2O)(XrHtYO=7$qLBSzMv6&=^mfKMPI1wSA0`+<9BPu=*#4Uy8+)2P;c zi(iC{Y^rd^TQjzqfGoWl)AA!9_>&|n&-O)Xfs$qCW(LV^KTjabnX;Q$kJTA#v@_-L_BB*n~q4_=uvkiZW{cf5o_2oGqzG8>-SK{Kz_T@4e==46&qUh4|U^bKDb zq~sxRVZ}$}mTOj$?9T0i7^isF+;4P|M12i=LQ5heDGC#{kOU*Qnd;pA^8Q^{*FR7m zQ;!?h@3qxa+(Cf3#3UgqhO&`(OP6D~9*HGWQhO(lpBb@xyNsZ8^pk8i1zlFGyY97| zY|@Km4b6B26qltxu2!a<3q9zmC^3b3>+A!-MU}Z)LY54>nd+%{g79YAxwaP#>Ue}E zmvtTT?dJ28Z~L|{%CVeoUW)m-PJu@_C#hblmNGs20J3nEWU}nYdp%b57gaI8efMxbg zD>T+ltMdb--n}o+x7>885<+-={2MliRO7pMt0Um(Z)S$MxAM9!0DDTZNjOeDSTcG{ z)zz)BIb3Ep+~(x+Q{Mc$EGXO^NH4onw^DZC5rE2JCsTZUK4lcT z%7@9Mlh}3^9R7=znSo5~&g*4^YenjWgzSG5Y&~Ffc(yAo75VkAceeo^Mp}$_}jzHhJvx# zyj6pK&cF4~WknQpRq>28( z-num!XJZYsna!0t#kH1{A^O2q|3P4Os{#FU37cN6O`Kk9EYgF^!h7wKx0`4W!dRu% zns4O405LC|-+z6S?6{n4bsryYb;ftaj#DTh+7|O44rl0>zg{BEf$@hM*BYO3_caK~ zNv(Yvd?Kp#i}j7t>v0 z6#PH@SKA7_5M1ARBc_Tx{^#Ihu9w~a>v!B9A=MjlntvLYalFhlAH6tUj`?$KTwSsw zG}$4U&?{>6-w~RvrSQ>k8o|v5sMvwWlKg13XCdDn+Hoq8_8cd2dCUdZ;nSWFxpv>q zJr6dveYN$}=5MX^KmGsltdwv4DPng!H}mEXA&b)orSgVr4N6@30GP7}NMwGRQ~qol z0OnL;Qt9IxvT{mUGn>BVbY(>NcXbQXqv-4V{wi0Is+f-(s3M5}%c(8%|NYrW@jcvs z{hf%5e|6EcOa6M>ByfC{VX8XV&7l)*glz# zkfo|~*Ipf#yN;7D1mw?P;GYIah<-a;o*pja{^%FVC!p`-*S;r6cHke7ofCE74Ging zP&?%57uU$Sb_#g_OWxr*n2h(*zl%q+-BGS*_W+h5^bEff2gbi88RwdeAKE(LU_7la zXq1!27x;QI?LQRkEhR2jb3Da&124j;eyyH}S0{l}no@$~hI@2+go4+r4MbW56tL`o zr^IBER*lxax4E)-TK!E>^V=T+b$~s?fP&N-DI*iCZ?r=orQcJrMymO$a>(fl8{XLpct7$eTt4J2%Sn5T-xcrJjOxM*(@shPRAmx)l@< zgd1nqF3-y_yiRL>)lNP(|NF3oFH7o_x`1s#UW!Yt7SH2Om{{ko+txVQAVSFQ#J@mo z-wVuUk6Q@K^l&Y@rpLo?UD>0q_Ki zcNHf4gc-G4KyV0*BVrPc{}dqq?0+CMUVLjqtl*~B&UP?z!fz~=2(>Xkt4{L2)dmFg zQ&wUbRW@Ws^|rgzsc>w47wr8ng>j_xp$0BlH+|oX3^Y0Xp#A zE@n_Rj71r;bx8%Tk@4p#egHw7&zkt^YK)|dnIMq(CV39z&KYYmsJoa&?T>S3=Db#? z)k_-Lh$C=0k??u1|1M}=qugnd+?-Wdh#glsgyyBfBySn%nE9UNPXM%V_3BY`yeM26 z9R>%Q)e-;NwOtMgyLk;F5CVbikrPl@Dd7fT(sP?TZc5gjFk9OAPFMI+SBr4 zzem|*597g83$zGa2{UVK>|EH|^P-Ti+}@y^BEOwdu#T0| z<1!=A&N`gDm7+N3b@-6{Y&NDN(-@R*Lu1X~Se-L|fibDl^#+cS*#K1ULFC-5!J59a zUAtO&78C_IeEaKA)tMu^{@iD*~&S#bn|-|r0u~+ev~6u#C}2Qj{uhLZ;Mizb7$o2?M@KvODV0VBY_)% z2f&m*6r_C0_0X_ao-1MJqy`yUeQCZi32d`31A0o{?L)I}0l!1HE;o^N6Tx%}0iVV}wHQ zc!lHeyg(}S4A^BZ3V2@8QpX*S{@Rr6-OsG+PCza2Yn^uYn%|NHu)a2H}?GiBw#yN@YX4bf!@v%T`f zO{n~Rxh*e_*E$We2}}O*=QYd5wdCl$p1W5`Q9)|0Qf?er-(|tu>BW|_!iM3{w}Mxn zms}qHdS$w`SEOd*g#f_#Ysp-Rs*C3ph*{Is-&e3Tx_`O=)F?XBSS%h#k9Q~b7DokY z1L*R%7b0m^_iv%g5%N2oxG}N!tJWPg%EHJ}mO8*!UPlORNLNa3NaxV(|G0%4Kr6V0 zLCtDbQz&@2VN*s8N~bmil$W+eN4iqETcsf3fW8U!x%yWsO*h`YmUw`E_{G(fXcqwo zHNB*~!2Q#I&uur3@*>nTTNXDyW)~C6c>S4_XY*3VKj_y1&%i5&Gi6$tYG*v{vUb|k zt~I5^6^vr4Wk-NQm+GG?JK&vB7A$6jdRL z_gzg(K z`Nj-R)FkR-u4Qy`GLLi}tErgo==V^{roF$FnZQjQCkp?Msig!_#EkD+K*G}dizndt zk{?5ITMMniYg8a^d>Uu!ov1d=f4$7E*P0T84XXCI z+ETwpQKjZe{!m}g8c@R&?C$bUKFEBqez{1k$<|zqKJj7gIx)`$zx|nloXIbQ1))V( zj}zUVvDLZW)}W%k4Q90udrWv|506L4e6s4ZmqSXepEFq-HBP`;ye(kmRtW1|=^AbK z39U99g0znqv}d<9w+|0Dp!2S}Xuvs}vr~K$A!gJjA5Yp&L>;U9$zM2IcmyC52m!g=T>7C3~4X4ETGPOH}{8U=5a5qc#3XerYG6M{R5~}?Mo^ZO31Un~YDNiD= z@JTh`MLyvsW3R0)@r5c5_9|#e4KSZCr5!c zyj<+Rwh)3PtM%6LlG0eqz^S2oI6EJ9QT^(pWG-6%~u zauEUdfLS>zpCYb654{n-W_4U8#!(l}=aVjJu!OvYhqLdjj)#!#Hiyz#^SoCgp2&iJ zH)9sdvN!pINT1AkVxHOg+{~9wJ63`A6z<>ngX%?t;ui06rdw*GbsZ?zp;CuO>S&G_o;Y<$19y0ngL%ZPV&vqu z*dg?9rzE~_Kk=9>pm^)4h0JaWD5_@0N4@3Le0(&$WCwe#*Xo#Rh1>Vug!K|JF>_h> z~JYRnR@7C71pi8y)&aqlof2c~acE41~lDx8u&nvx|IMEx>?+u-AHUh5t z2VYQVPHPjZ{h03^{qeF7!kE(q5fsg}JZGw$E;$bk`7B9qQby;Y?9;eeYgY>3N^Z7= z$!6w%mOG@rcFU}uyJ;PJThJo8Q(w<7maPxwPI zmUw&f&(L+*=mC!?Gy)bdLDhLnETNjg#(bJyBkF5E6uO;y*^Dj@J%keav)nComFmrP5F6mw{5^pfGtNmy7LQe}(FirRI>gbXcozR4(PwQYq z8garG4#=J)#j~x(ol71URPY*b8y`|T_cKrQ$7zs>`$v=?6s&DiE!%yeP?eK$Mmevu zTSlr)9v=FDQv1`X_rw|p7GtW;diiCqY`h^@PybNme9}_iQ{v};*}@LW8@&JENg+#I zNz|O2ZyzY`*#?KfjRR=fXD1AOz*(%A#~e96-ycd7`d;$GX}km#uyV8Hd;5^XP-^m^ zp#<*IYf(Fz&r-VIh0%j=ZTIE%Y`PT0MtA7$h`lweEIdqJSj3`qRZd^)d(!2laA2&{ zf=aI564uxm;#$~dGN6;-F+ zpD;Z&g{3|*%A9>vYptGcDgN}!IbtQ%nLPO-#c8be6lor^=o&Wis@L0KSXlEPh~YG|3QMs| zZ}e)_D>c}1de}VEK5S;b)pvU-h%I4Z$8GnaC*CJ4?5un`p6DxvDbl~({w)tnK;(jek#;wuD;|msU-l@SEhSli$L|5(p%mL*b0VAnP2T3A{rkEktXivvq z8qEBY^KcE7im8CszJ4Lw;;IjQ)RLidakaPyfC65N%v5TyLG8{MS+xsSFHB+0ktXXN z@Jm+PbCnA`F~x-^745Yya)}R|6^!ocF1c`X^TMc1&JnBSSSadVlTz4NlNx7o%RwQh z(Z1b)g^{e~_lGoRHL2-N=oSrBlBa-g=uVzgAobL}Cf!+0yVk-HwLXKu@CeZzePh9z zm!aDm)*HZq-PC9CY$h$%Ym@KNj5m~x`Cg{Hin(X5!+|@a5W*oXF?Kn#(F8h~YFgN* z3(fiAZ5&hei742CYdpP4hLW-R0W_9RIs4$^$-HJgm&~BiXLbbm6t)~=Mzv`24aNl) zZiOL5C5tO*?&#_HA=K2}%D_;TJcB%YpF6iRo!n`5NE;+fKQN0cV^IA_@s5Q4H0^^x zbUA(6Xxm|(+Lu^3i$!xyL?|n#9KFy$MNG%`TqBMA%r>W@{&+SVq#ylYDS+Y@=V}i* zXAE1gkFW%pv1;j=erF|$94jQWki~yP)c&z?oX5&Rb6?bVMb7a;oLoEfqucWH1_-8K zKF|F{jKW4hXHBuPK3mAV>(W5EUhzrRmTTRs7jWr8AHejP} zi=gNv+KN5XgDvWLfjguCl^j=ESHbx~EB~}@us-Jg!+!YHt5)Mdf<83@pOBNjq>*SOk*{<^HtmX%TP7QDT7XQUd9^L%ixKEyP(yTg;_ z69~1-%!tWP6V|mGbcbd#;}KBy_an=?mh&Sit6bxh+$aqridRZX$HfCg=`5GJo9z&m z-Jsr7kK{o zcZx#%BH9fX-wYlo?p(Z=e_>Q|E7s%FR%X-ps~=ey7YZ>qr1hBJBqc1(utR3`4)w&k)p?HhO7Sjto+|Jl858=3 z#9Rix0Po`0`WvbaCdzk0w6c+Ns4(5EzLIIdv4qc&bSf6&++7pQR=3>tDDF;syjTgy zBn^#uvpO#B1PWhV?Ux*PYsy!ppq)8e{@S=HuAaW-4~wzl^^@+k5GP%{&9Tb<=`oz@qlN(g!7nVcG6g(lI1s_n_ID6D}#^*V|t%mic^8W6#{K;=tF^e zXeiQXCOobuLSC9IQoD`rXUmLOu74%UWr8$b@o#z= z(=BUVPWM#pZk8HV$hu{U+dmlJ=7ztQ%yb=jmC{ybMJQ_~89}7OQ#4Yhx!w(k|8=kF zUjOP#q!wq7T7VkH+>ch9cSd_ON5dJ~-RIQVQK6TYR>9dKJ@8qT;9P2rB=)3*SA}Pz zGIZ_UH$OAZ2;nJQB};KdCu(o&m|VnW;n)fs)bFE5J4+V%($3|h&aP4vgoN6KwB~dN zgOJ=rE(0HfZK7YZzjJa)6o%l{5sB3BIFacFt-f`o%!%cQ?{c?0Vi)OBInM%@KR#5r zy!{sRbj&!dsFu2${lT)b&7fery`9<+JN_WDkquM9b}=(Et_M9Ak`efz_l}AWHt&p9 zW`O>PMkc2vJBg>z9j!8-?Z2E0(nQO$dF!34U8~VN`lx1w#ls|AM1q1ZMDS_5O8QAP zitP2T%(3p*;7G*Ev?P98Yk@LYV5bI){@z#XGGC?zgE-=7}lLdyA8yv<=mRGgGI+pTftNs#GUT zsN=qp<9<)w)=U+v;yuWmSE}rwnsB<{P}c3gW!ZA6>)g=H467*eK)EQP(G(fTDsZ(| zm9wZtR_{O?Dq`REr9iY)j>HfO5EYgfP|iy zS|QdNI^72nvSW3fTh?gS_iR-^u2C-gT0y5|!O=_`x@z@Pm*4p&r^rPdcE+8QyN`Bv z#VnR3W@>5%OH^G$eQB4+W0h(LmGuV1VNkm}eCME~I?`KxAeK{&>2&qH3fiVqwZYf^nF9VasA`m!t-sXcTGuHR>Ta%NWb*_WIyerw?mO0ZJ_ZN<@sN<$)W`cH) zxg4cE5pn!+TIMqJK!&7Ir`*~U3-r!q`@6pFF1XRkgjY>bcKew|1JpKh+(Sfb0$4sR z^6LloLI=ajRoEc<{9doQBT+P8`_XOv_JpUVhsWEGmg3ay}8Z! zp`G1aOnf}H{PgRHlh=_?Q3A>vm^`&NA=&{AsKVObMbeQvrrY9~0>k=FX(I%tlkFu| zMgv86M}Bv$O?}bKzdg(oYq4|n%2}|l*z;V1t2qhF2Aj-nCDC;F5t_F&WVX&u`N^)4phiKGfE^ zJsUh)9(LlKX?wi5>4?51y?U`E66Q9oj9&RA=s`iaCVrpE=P>=3ABKXC)c?F6LXtNfB*1*o8;fFar^(6&hT!aVEnB2W+}xPN zL`Sfw50svQyiF980A+t!XFjmg@Or zo&0A{O{33x(4t7QVARp0eaew)|D;a5Fy-;=#=TNAZgr7~)rlI}gdJ~m`|qUUVsyTb}7A^5X@F99f>~N8%kQQN9WB>^!+01pegeRl>??L9`5 z_<@4d6i25YqOkkwlv}?27<)s+C78?iZN$uU)kzT)wk`Wvs}t>}qhH1FCZ@v6a1}L}zkKF}bU5pIfR8OZfXmqk<=5JV2s8EHo;v zyvJ$W(`|MX=o!W;%gXc(1v2Tu$kNXU-XD#Df)3_ZU^7ixr1EYAwcY>W`I7By7f$JG ztgVmxlD(uEFdsfGBVLE|cY7}9;qO~8o!4@soc=xbO|U_aGBiPR`}&|fk5TWheFI~l zJW4&N@t$$UbU?WBlYGKTCTm@Dqh`Xw^I)wJORd@;^65?Cy2l0&RKo?mIsr$=D)05rfE!po#H7D z72%zZiTt4teXoZ7qV_y?#btJ=ds4!Qt?uqpc*AJKUe8O#Zuc@>iI7jH#AxwW0sg@td_>W*=Gq!*a2B}iVDX7<$I5Bisu*VUMwYev{Mbj_lH3;z?V z0->Vg?Uq_<0vn=RYoETwE=48hq9b$>_5(aagAkDzzjL^zYbBY9lMYsoF4wZ+!n z-dp5PtuB?jKt&aEWHl%LIvwFT=3Cy6hU()77@_)=l+M*4f&2X!yDe0UP$EjE*UL{p zm-c?CDc=_)W>LD=YWhM)Ug=Cy6(e2~ns;Bc4aNNK#22@_xBr24+xHybj z+YBzrkbl&fj5V8<;QWpb^Rv zZF@yYx8cj#tn~}sRRM#Bcb`YP3N)NV`_r&y<{$WQ*W6%G1;$7wazwwJ8$?j_k{YwG#7qeBf%u8^hMT z9fHS1qo*tMdYwK!J4Oi}m{GqaK0sgDktO2adRXjTvmX>>v7k({D+UeuYlNb0Q&caH z&CEEA<$NH}Z;vwsW+lwz3`KySy@MW`15g)jWPW zP7w5_&@&<%+Z9Pz@wW2GG%~F2n8ReIsQ$L{K5i(qLhGzk+upU`9BCd#zvRJJ`}hT- zD;EtCXzdiV-(SN;57TQY6E?tR7VrFEo5!apGvhQjSxY{}O60zGZ%HYp@}c+wJ;i31 zxb5dhJv+4#C+=igbFf{|MWeheKN^i}%r8{@yoBBD$;r5Xi#fb51yc_}-723=t1w1; z3y(5u2@vPM4x^1rKd5FPEcYHKM;^S@zv(!7!Gr5oc<0X85SbGigs@c4-jD=27l?qE;~TIvL0e}S z>ut@4@AiWzy94*B)sp&H%kW!mMAn!We2Nho7-l18kB-j?q$Z6(%Mhy9eGgA z&m|s?u~m3t3E&RGjaQ&ddR7>%$k>Jc|irErWUh1h|;jQk_NCT6aC}V{pYc&3T@?j zjV@0~%{f!8`zHgq*dbhkhV zEf&hymetCzABrS9M>;B4&s0m8_0eq2CS>hh&7JDBNxv^A{cog+zOD=kQu+AUr(I4x zyA!QD7dtpRg*_LFx*VDjL`8UN6q_aKI;KdRZr-c;U<7b)uJ;MIVHZAKQmx-BI?+yw zW`B16@Y&HQ6o=loz;An#o`tH4@U6X0_kYfQ`+qBlyk>{r4r4aM>1k_QY;A4DBqTUU zNtxs;uUQkKoJ0`n;Z7YL6+$LuLREwZsoKWIsLbqaIT}$g?05>21ZH#hC;@Q|7he6bzYFFk6 zi~`x8Unm2keeYl9y>R^8s9EvwvvuoT_0nxP@d0T>Tu4r+KY``64pw_xTUy6Q2dlHa zw}@LH)PX~RXeSi^UKCW}=0D8My&97krGM?w!ObY)DEX-SQD#xjQT|6h?cJvW0~`o) zMv4~}&gMb$f&_=(Bx-aq7wi4Jtd6v<&)(azK-_!J^m@csM@GahH#f@bP9Q&?pT^I9 zRc`O*MYRkOe^_qbN80Px?rL?Zx>5d7;Zey^=)Ic_@qqe=QYo3yp5C5oQhXocGwz6I zx@W9sxbOAKdh(k;{yZU`n4Fw!9p!iDkN?H%BO@b;BcxOk$H6;ucjxZS?S&rCNYABl zdv{{mufnvqp=3H|agR9Qa&37#>DO4qjE$MLejR=!6fe1!rJrOKmzNI>y-fH670NC+ z;N>@}QfeJmQ#bVH_j5z9-gF4e%*-^gw@2|^xx(RK52Px;Z?*5gn&VvG|KI));3OdE zVD+Q41@gNco0OOijkejOw3p=SDIE2aubAt_t^cR@Or8e;)ZZUtl|%hkg4+DI?T+5r zn*{2Q3;us}P*mwPw`hj=8iJ|>XQt#G^}MSGk&g}F&Vd9Sb&cNq(n znLh~zc2!Hxm3EOT9vyR6OqK!=*oRTh4I$!Y=EI)?M4Uz!9orKm@m#*cP8it2Gax#n zP1_CRza8XANbTt-lc(H7fTu&9J;HPJvon?~>T>PhHnBjo{?3cpfBpIu;I^kUho7s} zU!#flcGP*jZ_ObjCOK^o`{5~EoSYSprtMwO7g(-`RqlEutWU94IMcQZ)(TC_8=Y~K zhY27QaJjFq@_2c={s7`MD^~kt*0%Td)>RK6GN1(QeGc6VfACrOn^RxGuCE(|ffkw6 zwRA*=nu7G~&MJ{5_k}WciVyN)+DUbzg`Rv?Q&ex(g?WfGrl!W1u_6!$$|E5W?^*=+ z-E<-Roghwx3@#lu{}g!G+-H5LSK0$?=hWA1g!V<+Zg24Zz!u(5{(=4X-pe-SpJShK z(!Wib1c)3sye=ZSnf9$G&!x@=fZIK&KPJGhdonE%VBd(V+@*uohwI!hshFyCF8dbx zGWO-l>|X!3P}L?KxZWCLGyK}fjS-9qZ=MXbOKEfMkK!&`A`GPZ%egqdoeWo;G55C#%BP%xA-iI%t$VvVx@MNme*oE_pZ0 zZ@XK^jZ4jbe~6ZQk7x=n@o@57X}n;XAGUm$uRHIYNu_Nt8@K!j^8wyC*MwT}4MhY< zgfjXINHf?|7i(i-QeLToPok4*8!pT4y!4ZvR3BW@;`N`~;!|_ovKtebm}ccIw5Rm# zc1I0nkATQ#Y!&MQq2)WKL()}VhBRM(L7*1zlc&F+Z$__;<>RbB~lQp2}WdxyP90#GQJYnZ*@A(8b2%kXWC#-E=sm=N934N7A6=_;@oPyi>F?HCGUF=wxp(>u}LPwp?ZX}-VW}00%1@!^MM(XdO%Vxk*?yerWQg}iJaGDy|BiG z6wWg!EcPT&o1eS>~QtSQkUY5Rju-fYz=kIcO?OJ^z zSbh-wF`+15>~0Lgu_sdGftgtyVzkaVX#~x3Bl_>ZK#pe#5;%Z{&0?KuG$w65oME>} z9ED}a{t(RkxYj8J4mgETqM9^ST6qM~(DhNXvJFQ<9fDfn(X|`sH0>+nSx0PC8>}a# zzv9TV*Jza=aA>t1Sa31*1WtbQs>1J|0twwh#$@Kf~)d}iqBB3=0pcc zey*L5`U`XEAY-txH+O&!V_@I=2Ha`uv3Vh+_tO@NkAEe^}l_=fQ6t`v35ZY;qHbP z#}&ZwP7g<#0{g>hq~_12lDZVR>dM6kR-^|k7n+wvtOKz`)UAKZ=ZZe(kfCpa)y^g& z8n5zkQ3jSlihgn%N_wls`K{y&>o=uz%%;`sfDnvhg*ubKyD*n+Uh;GOh+6N}QXi9z z_f-8rR!?K5co1^03-#x`oxr}G@5?1^G-Q8v29ZodG_=7CYP9b5FyWqk(Rd-t^_@w{ zsU^b${5HuxFTfIqB`503C7@2~U;HI7VPeuwf)bfDyx1RQ);>X6bo!Y}I!p@;vMU^r z&3=s`t*x$_Vmu0r(V?4QGgO6sajpBs^@&NEx97pHUq{I$YWGuhjs53DnWb8(o5tmi z&U7ARD15H(BeXLMbO*W5U^!t{J^iR(8gKVF{`^_)wBLQS_D^xznTfjI{)SYT4_ zicg6>U01-{ezK4&2k(I&hX08R=N>g0tq5!q5j}EBKHpnRq#{hZJWn_$M}R){0nv2Y zAwyx+ZBS?syX9+NszMsls97?Q$sgP&{LjYlYZ0gAB1mq`zfsKXa(zyjmI@l71BVBSu#~U>1-^*51ZM#!O%e~)o=EiZ>EvHD; z;5Of*Buz1Cz@r^gzFi-khjfGed-Gm3qE@4g zGkU4KvtdGxZfPK;g02lAI%D%5sH{@f&J3-I)H;_t^p~C5=AH;s2BOf1FTb^tK^mEi zp06uM=9j9{*J>my-k{?K2|k^WkPeYMYg_qJXvqD+I5Y-WkB)2}<`wxf<7=C-ouMfr zR8s%P^dO;_4I<&A7`R@`Nm!N9llzzJ@ytGFHovtdxbTbetn~;BaR|sp^PA684D<2gGh~v zh=PEC^b!@35<*0J319;i0YL$krXXE{v>=2KLtxw*sm+DE2z6Dy~JKYqp2g;R=E31GV&@!8^)kAThvcP)l zg|i0MmanyHNxuAB%E_Y3a|Lmvbkynj_`NQi*ZQ+`zpMaAXyG}@{UV`? zZ(w2$nOIG`0hK~vsqc#8_$>OkEJSWB)~u^AzA*in72ZkiDK1ahew^!7c=@+npV_pD z`;2T_WJqU^0RPA4qY^OGoi#5C3r|TX_&=IwxIKfJx{JlnM&yv{fPe%AMh2J^>!HwD zC6lzkY6mab#aV~NO*JEarR9~9UhW7a!6-C`lBeqS5Xl?tyKCPOMzR{KTPZ8rbeaLG zDNq)W{^m`^%qDxQm`IJCbXuj=0)`5y%^{&mRQIbTD=D45*_ z={3I=Ef6bk@n702nQtFH@3UTM3$nHwKU?{4K4*>JuKl`0`S{kx082FhT5G9M{aNsJ zGCKcO&+i3>?a|RpoaUN8(0^oXPTik+DD}w7yKx~8ey?Z+fFT$Q6O$A>8Ma17@4vi% z=cps7K5uq*S{{Wb-8q(VI#udFj^p@%=$Rvq?GBIcvLfI6uZ_)RzJvSKxe!>u=FsM_=7{FV<{c|vilPHj5Z-y_yvFv1AQCh8clPhqv9&_-6<9 zB7EgN9f{jz`1aSR=33)}?S=KO{ik!=zM=> z<*z-q(RBSPiE_q6>z|F(Kd;`ubXfoQ1#k}kwdwr7r{q6Q$^X!Y^YLX>#)i%^`h9$u zwztYii7;laSoL^Wkudt^l_AjGnb_J3DCrH_*;nCU*f-cIpmT-*0!^uRN(6Piy(pZT@@ zKidPAurq7Ti#x|(fA3_r_4y-h;NR=%&u+9vsSsH7}j82;NTO*8kthRa_|aKvRAX^kjO&2n!A> zqd!8ew^s7v)u&EKD9$KC%^nQK-Q14uaL`w0MFBCn1t{7Hye4<3hk%LbtIop3{I{)F znD86fNJ`4!auy0)R5U4^#&`Bsyzt8h5W@cE#U&L0CcW^uCp0bl>QileMmFKWGx$x7C#moo~CZ}vYb2ciK z`p2^QyLW#&|G16Uxs+*>y4Ns@=bs8&j*{QO-+I{KVFv*{2oYJGJ%{p9%M>N7UkxTs zgC@P(!9c-|^{_lQtCk<0*SUTr$mGw&2eoy(L5n_7hl#$!SJ?(QjC!?xVI3VEkGn5F z`$}HhFiz@@djbk0dpypOv1A-gf_7%^d4-YXHI~`Cj6`mV#k;+x(+n~{VTyW_ovQcU zmxloHhK5H04QvOSM1jKd{MTLRN!RHG8mu41Pc~%y+V}npe&Dq30>dxkN#<=}DZ}j* zOSH3AnVcBA(&8z*;Ft%z>FjpfNi{~J29q_^<=Vu*IV(G#9JE-VAqY$yaypeKMs$oR;Js5Ozaw{>bgwDv}R#xktP`|LpXeEq~pVL0P7<-Q#{nxOxZvzc(W#yF> zwGyUnh1K=Bz3TlNZkjQkRyt;tj)y6I)%hMzmz|t{H2v$|#}OY$uW{oMlL}$f#R`cN z5JiSZcg<6;EEW<#C~FwUtHzR9n_G+OUJ`Wi2Pk}zOIsx{#CPSioqQN-QhFZMsH))e zBxjM~1uF-gzw@_;_Li~XjPBd-z#a<7P@+Rp05=txRAoxEu~uOW*yhj-Li}tuW$MQ9 zR9R8FoSx@76mtj{2&B1qw!?WYy5g`q{r)1dYj)(!eR^t+prq*Q;ZljWN?pUm6+Z;V zw>E?;^<9CD$0;+6@NBLYV3|R=dmU0%N~H6*Sb{!9h^A5%XW_jJGC-{T=IdC_gINkL z@!^U+UdVZg*rPL6#9q3iZL@A`rl9_2O4 zLru)V@x~(8NuJuRr22(sYYpXekeF6T$CiCTX`G@3H&+m){MuuVS`TF@Ty68nns{I6 zJ~i8y${ZMoWzf-qA0YdqD_3ox>m=K<7@N@b(K{0(W_&!YN85X&=+3$GIHWUT&1=i0 zbW4amu9_wu8J^RV-S$O^-CG%@u&LwMP0@kN(%kq`AD%QgFS1nqode)hRpwkEW5|_- zuUh0>_A*G_Q>K8$iAck5Mlv*v8@Um?RRWL~${pZRFBfh)EMurI zM@+C*jPSen1fpVNhf9;2b%q5?$p_UIE88#oH0AM}>b)j9j${l{^spK%iRe1B}NPWM-||7}5i+@xEHE5|qG`d)vhjt^`V8&S#-IOt<(qeX_5F?zZ3MTgtt*9IW|V) zVavB`K4RwJ4SpIAUtDKTRwo^a>9rBHyM|DhF`<0OJM0FFitzxhxR{az5e4q2>ay~v zTR&dgg2~s+VC~o3ucihpqn#ZZ!QBqoq~)Qo$9g+CHD6-XH;Cmby8!S75UWXb3(fQ+ zttvOT&4(SXkQW8go41xGl|IuBWotxik~oyH0#}-+4!+J zh7oyHM5X!t=!{0tJc2OMgi%3F7?ABi7&AV=8f_;@uQA*htE_MXouauaVh|C)&P|w^ ziR}Ni;(dt)4aHQ{revqMWktjd zz16^5GfFP?Gg8x~jxwzc`g!Vh7vZX-JHdTc&hAlz;XUYV5NeXA;A}>VbHZw;PVEWK zGH&)?+I*UE9{s+AFD%P@6GQ>whjEcE?7|2#^|qbeHzXeKNyX6f2um}eUEa~E7C^p0 zk_U(oMLB{=OP?f8%}8K*L7Y;&+qhBYo2jVZ5%r7p^ds&+5NvNusu6$bJ^o&Ie-6r^ zGy@=Zu&>TdeTebrj|@#k<_F`^gz|H}jy*$>v6j_a@IFR;rr@lKCI}hthfSATcIUUD zK&uQZy1m2$iK!A<9X?y4VzQk`?w6(5L`pX<#K^-W#i~lC*fSxo@0+ zoHksMb!^wDyn0qtPK|I=qis;BzjcSz=VhSnVW{5Bv9bdK{R9Q)D-Cfejmcki2<0PK zspDUqNZ7%(XT*e5yX}J5l@!@m%e*PoR`D#7hLPlJCLR`(p$9R7HH{U4C2 zmM*sbWUG3}P>UAI@I3#4dx`_e1vwlSlogR_z!sNNtq{J{79{<$r?{wB{!m%rlcAjo z{!{Hfg}ek6oEvAm&50X44Bij(@D&~5Z!G*}!DS-CCaF_SrC27ib9WfIWn;q`xHoV2 z#KICK+5Ig?h~;@c^YI&1pnx$&Mb{(2-r130i=9sUl6zwKy(;WMOk1*#5h-_~@lpTm z=jDesh_4N9SA@Nr6|lBhiczg5h9ASOlajNf1z^j~v&A^w6pre|NI4eat}72TT|i>i z7RFg-XdY$xT;uX4iKa^udR zjcCL^lbR`$I8hFOOb#v2o>Q5O+J@DAIm~6hhG{L%-SWQ=R1Fe#%=TP_u<$l`f#>z} zRV>;*@$(ULEe%9rfvp*?w-ui3=5EXlmMsg5eslQnHa)hujrbmL79At%@%a92dS_Fo za28k3?YomSRDY!Aix4ecJw!Oy1l^V_( zED4a3&9C=-D^^9Ol1$A?rMo^D*oLCAvjjJTXbAZF-$XvnOMlE_+Pd$aEJG)wGHyl( zbyL0sWOKlRi0K<47+SH9aai(%^F5_?g}h&U+n>n*CMfJIi6)tz-#MLUIBzrz0-cPj z2kgbOPhA341}axgxuo~a;R2I@Fo%d_y#%ri!kxHW+C|S!tjtcI(d1X_YXT|;)2PZ} zQ$exLMjv9z7S>XYXs6<(n;$NYwPFY7*VFI0aSf84jv3fa+D>>^U?nkHc{1%;aW(P7 zr~|4a&v%MGeH`6f^+8Aeu;_zr>phK=hn~*L%Nr=zs9Ln^KPh>qo$&Neu@6n@JnmpD z|1zlXqoaOZ>}O`s(*9!xhw@|wZ_?!=#t)e84qPHyp6rRfyVTPSqZsXJ@V*M|j1 zCaX5&n3(zPGqmCNV_1AW$@6oc93#gbX1Mh$#QM6K&-@g~-dBM$k&sgN@N#oQh_2LlzmEo^{F}uEEmg9Sq?Gw*r}yW(In4j83Zvqrhb6)z1lBA zFfZ!bTzU1gNhfI_Ls$E^cl)w+W?Q`N8fI~#0URCGwu;OI$s);9i_`4!M9KwGf$>a> z{3kK|WIX6)w@6kF?-y^67dEV<`TWsdtnQ0#DC0&TzOAtD0(tH+m&B2o6sacpX ziCK8nJsbGE>%)n>wl`(^uSPV2!{l&iVy?A4pn=`!UiTE4i6O-%4exB-Y9(3t0L0|! zwY$}$2R3?r^(Zc#?cWgF>KPpV`P*?XeD7_bnLKPF*a=Fq*`-Z7C!}@1WKF)^Af_Uf zUsgtn5;NWs#;$kkH1woi3`}RWD>FuX-%Z_`{^IjjP(;KJoSh#r6@nnzD<;UXb z@KecQaZj?IxE*wga2TlbLZK+knpfNTi4D5!=;z!@>r@jAtRlH zW&DZ3&k{t_@4pdxCyY|M)Qxk5%`weB_b&(|gRBnhT8`S`G>2f+ztG%C3h=m5GeEFi zCRzuYR}%LRqHG=a6%&p^pt{zC6uzh?H?u{(2tOIvI`urDG{+dV__ZS#xh@Ec0?Vu@a*^C~mP z&>8N=KJ}F?20p@@F$>h=)GJ^cQXQ@(CZ?8QnwSs(E+JE5lTd4>J-R@08(2y<_%QW2 zWMVG3FFojcrw|$^7$-2kxL3jY%E8xDQSwp|M{PtbKAzRTNg4mTs5pvHsL9D%;Yr$7 zlt`IReyUq!YO-}QNNL8H4j`Wz(GLC6KhPf`XR`Du-8DVIKOQEmYWKSohonJxJCk|! z%g*$~9zm2}Wa=OO%6c$sFQ13vnWjS?g;lk-9$+_gE2oCc%`M$XpLGS%7-espJ?P}` z7q&=%vtU^9)>Jz6lJLkMx5+fZ+lBe@CfT$eom0lH_3wa$A=Lzt#vx$lZlg1!L}_JEZO z7y=VPg|{m>P*ZK$+XaKNeGe5)zk&5}emL4~q4`lVZlK^9yrpd#C?bXl_=PYXu1B!$ zA71wO8*g$GR&r!&1xsQMQ@69D1kdh>SU+Ve7uyb{g1-T0jG+2Cu@#+)77jf@iuo|xE$^hi&g7)wg}f<G%|dxHKC3QW z$Fei>xZjh+mS<; z*}iAuigVviQPKsAk$<%wZYwPNY;^Sr8lYLI2 zSENgPeE$CqWj-O_PW$cGBL~#t|Ht@V{)H&w`+xa?|Dz5Mxk&b5F2VYpU4}N`ajOBYBp8;c~#^lQcqdk{*2Dk!# zN3WjEj0{lpzOS`m%p2!eOMt3;6DoT?*eFQjZumESUI9O)u73i`T=RBYJ@A+eAlufj z_pw2=DS75*qrUaZcU+fjU{yKC&Bvqx@rDV&-dLA(bcz5%1bI+O`09Y|+t=;aBL;kc zhrtnybw7z=#%`X%5#38WwmA4@!R**2J_91m)-U+(;Xr*g2Ou6ngGRUjQeE+SY;n#$ zF|b1`CnUqgbAj)vlz(J2Js{t-yu2+<-nU-xP!uq^c4qY6&jG^-b+*;y_X(B0QpZqT;7n1q6Rca7oHEg<}HDS_}spry(yY&|9Bzv%Pb5RL7#!O$_Rgd!x!xC>{< z0#KrTnTeP9Sz7*m`kMc|$(QEotD)jJ+2nbdbcAp`FT4IzEaVUYl6KFfhz%1ZsCPvU?X7VIkM7Aus7}X&MgL2p&zub;<6(Ba zn{H3>GlgMhcs8pN0lq7xV3hIAckQlgUVK)ub~xlNC1ScYt&|@DMC=`YQUSNbtkr82 zox29^N&dvfEnEXO#_HjV3l4@!lmMk&H@RbXf(ocq6z%OPnSqn`YJTH`VbbqK8TZ`u z+&DS`=C|lDXLruZrP}lJ^M>yX(&{7Abl|4Q&D?;K z?P))D_6tT!J;)3{fEa7fgk*-@OG;oTWhXuv2dr@Ic zCkjk_jZ%!BrRp&%D|Fut3_L)c_-U~PUq9$U)CZ-pJpSuhwo{reyL}$2DNIk~B+;>@ zUrIfx-ErdafSmaNDJJe6g0x_edVs4iAkOx2o#S8Fn7?ucuJ~+BpxD^_Jjs2=7LQ+; zWt^(3Si@m-YE@H|?Bkt*`n&*$!kkAQH9_PLT5jc?Ti-p9pSWVNb*N#x|285cy7|lY zi{HOpEPfuYQj@sMvi9^&x_=ZP#t=30w~Bb{J0}C$)xteLk`65F(-jxvzb3j|*m1|r z%{uTSBsrP?I<#QR?JGqFSkhM?nmuMv>b$o0^pdvN&Ige-{D>Ro=zSe2Mt<3mk=Kzt zGy4ecun*e#Ezl)?_^APraasD&Dd(``66(`MHV$R=tDXWz-Xma5@Hi>%hp`h7s{GAh z=0N+r3)-oA5Srh?F`~Y7g1`%nkO&;4=jflnbnqv@D|AEW7+s5=qmSaoq5Hy3Zuc!n z>QT-Hl1gACSAgQ<{Qh3L_8d6Rmj>2-Lix<%*_V5=Btz{96iecMp@L6hn{P8dId>I) z7nQTP;pph72!vg9%J3fWP%iE2YAJPho?J4;TG-MWEU!UQ%{c_SV~0@psQAE!l@tF- z2h#E1B~1zo3!4Q5lp~RU9nO!pi#l*G@11Z9XYv6+aDQoqydXfUF?u zxuJ7MB-+?#>jj`sDO6win4qj@ARgWEYIafgol26iiR7!8Y_R*Ryv%2OU@yqBxga=8 zzi(9;#Q)?qh#;T&V$D^VQ-@9C}rFZpRQMuKS?J&FgF#VSH{=&izMZRD7GLU$D z`?U+M9#>`Uze=4~|8(oWX`ugCz3^{WdvIvTVx>K_qgW=E)QHMkyOKV)^`)^VU!HVTl|A!d(WO}2gu-R-{*n9JlmMl#pw9|Nu z9kx*92+7Q354;=Vv zcurz>Zdqf%z~EqKRal($6|FU|+GXP`hr?07GR~nx$fNbasdDLu7M+K}&&!_4-8 zV(a$-fZk4wF?rh)I^wrf9+NWYSYlD$zIw^77;itwm$F?(W-;Fnuh{U;n9KEw= z?+y+RTe`Sl2UqMhS@pHKf!ElKf)E9C`^QSbiR%6Gg@MpD`yo#(=#Nlpm9Q+r5(jt3 zDX=Zk8UBanR4Vzmj7$oymNMs`zbdM1Zf=%UP-u&K{ybFV#HB~uk7c(nPmt|8ML&r( zfyXb$%QDllIJ_;_w7BC?UA7BAy$+RgbRc4TPKN2`a4^Eh*XlS|wU1D9=iJXZgdXhE{7?wao<-jy zbU&<=Fi=&fwToJ-u&`QHXYB^lpgaKf-*H!sH68pU9?XIwSx>dxAkAZVpCc5#sOPc) zHxh<-d|-F;ouAQ<==hy?dd=Ixc$9xs!rH%G%X-yKDfZ|F(nU9G8eYnOtTa%qELPy- z`Po-4UG5p2iT5bK|sZChA12ZEO-rtAC9X1M-b;=mxtlc4DQ$3!f!g5ya~$ zBvUI8-fHDFQMMi{Q3tL|+3I$1B^o?FEnr!)j45fJnVBUV|GAfdaYBWzEeA!B6O3t-U6A6Wv;iyqYTN>@$In3#~7S;?szt*MA#joCQE# z;n-4|YL{bWD*417T^=Q206^WJ{~gMm<<vFV9FeDV;TTtWc3*B`XC9Y1DOn{aN?>aDN+TIvuRN5MH0Cst*dr=KAC<0rGY)GUGeDN-W*Fsz?h5S_grGe#8+ei?x;{z))bToT<1?> zuQ+v9Bot&?Ufr0C_g`Oo3=9#nM7Dp7Jn}ZbC;b4988Ht;jn&ZYqSTi%Im)&Ok4cBt z?uMkgNhI$BMC30;oL=7g&%?Z3dn~!FA3ktgcM!OAvz@1#2j!mS zJJn56J315`TPt3}kj^NJ;>#WUtoyB?+a=Y3$`>*|zz-cFDGbO6QDvOqm@>R+n|@Io1= zhJnsUOA|Nvcu{(P0N3`%w7D`%8};|L26_+X5OI|x|Z-Voxo5D!(FL;;o;uS<(y1`Uy{~n6Y|dlr<>* z`7~!ZnB;(iJkR>Ti;4nmPFllq&3cFJgsV?*B$_7%td)@HiV6BAN~f4m0RR(v>mFaM zJ!#sJ075j5d#Uz>t^CUINB<3aLF>aJ$|`^Qgq9~WH$YkmAUSf0iH$|~OZoqRL>)ty zRs9%Ej&vM-7K|LDWb|sh2Lfm?JJ1);z-}NYZ5xG*c0i~@iIIIF{A;lclI+|f8FZ-? z;P(I*$v61C0hFr@tF1%xUTHo?Ss{sP%>2D#35+EoczU6Jb;UNp7kEL%nJ-OwJ))8` z*m&QX6`KlnWo0Em+5;lL50OPD5rclF(+GFT za$>sb#Q-drsFp+f&_q88YWT;1Ar_p=<~--x3sOr7Vm6)$bs$g#rgbTjrUXhZ)W}p5 z6R00jcgNQ3mXD_T%#_5A7rKSGB%mwSo05Tes;AB%ig}iu%xGCYlo;@qQvWbC=Hn<= z5yZ@=xOfAVOtG9LgS&E7J&ytwKQn>as7LlIlx&&TMqeJ!a+}g@y@)^M(%R^e{oIu1 z-{9c|xNE4YoM*QlBZ`lhvJXK{LQ)V9as>d$N$$)xNA5jMMIegm@&eX__dr4S-Y)bO z?&jzT3FRAwvS4R~+20oS-+98hP>tP}4K4Ig49;ss$D2sr!sp#UF4g)b9B0jb<3`H3 zzK)f!ie14X!b6zFV8?ekEi2n5$X)?7E5Z--u06Ih)5D5ya7s^%ys=yBtH^`QiBDqd zrEPp{v*@Pxm)joR6P1yi`5|BgdX!E%!pJVP_Fi2nMW^@3H@x_hdbsZqH2Y%OsY-<& zII!tsr@65<7(b-rwk9u^-7v8Kcin^v!o)!TduraSx`|o9LgdU&Fi`a{H$usMw-&|@ zs~|19ze}?>-fR4D+*}0%3a)t%z#;5F%};1Dj&ciyXP%vPu)%1ty&F*bb2JOmT*@K& zA7gU;aNr8v=3t~u^#;^*F_~9LdE`xQYGA%&$>k?2*C?N<)jAJZh^Mvbxit% zuC6K~kaa&neJVdEX$RNm?GZ`CVm(RxeDHOg9~%c~b!z-lq^xD);63p}l3p)hxJE3> z!V+XS)XfutjsUB2^7U0f@G>;r;~vTP3z5)a|$l?U-0ZL z;kk3r{-%6W;!dQ|(9`MQ8llRo)jgr) z4bv1pC7}9cfRu=j+xJPTjNjTH0_NdrUsh5o0lUA4CA_(y+J@P|>z>FG4L!x^uXL*B zdJbI2N@PMw>a6OAa6EQ_rZgrG{9jS`_J{2HkP8!j>IFZ1w9}BR%o@do(B+m&j*aXq zLW-CaF@aeMTG+5FcTCU&)B||?p35Gxi{KP7ZlHp8eV|c2DPf<->yMMpqaMK{Gal4u zKR;9&k=1GFr{MI!rp-&Uf5Xwr`+B`nVX=@b5qs3qrbDzo(OS9G<aLU*%jO51`7YE5R9*$RZI|lIlN?mg zh+DUDtQn~u?`M=PWL)4e*%65qeDRHG;2%)2PqpVNxq3MEy<>Y}9^FMCfbZ~$)1r(W zE?v6&#~%b}nSm4rNFXf%A~e{fXUOs4ubKz!R_>udIZ%2;Hs3qernIm6n_rRMp zYCEp39?J9agQS190-zyo^&oNrfP*p_n2WLOZXp2>lMgzw*`+7hBhyaZSr6&;38qWR zwNW4;3A$+^CD{0s`UZ2L2`m*H<$V= zgDUSOiE7Din*pv`LOBE3W1e0*fkYG0z}H+7Fxp;JKrcT%C`bx>$V>QXhThL9X9~qB z(Sf}4BM4^2lzMq|lQbxZ$S7EEIDAMRiyta3!b(WPKTH~%TuuLFsgrZK1H!n>fvO&@{T7lbLn$j@ zz4x~Lk=78;SgRJdh1YWHh9j*;z+}} z`d102cx$gbghs9DwN$YB;?NE%X=TS1#+X;yiW_Vn)dXgScb8{8qOg3e1eCJZwum z@UZ#wx5~#W_n*`Lzj`7(t`cNI$O8N}E^5z#YvG-7hb$xq0i^HGJ zZH6+&EOXatk(t0h-2qa()HkpSQifIu5Y3ka*R1udjKkn?tV)E2oUU9G%8Nj)R@ z>xW&djsi&r16(2Qb*OX}G$y#@MC9pgNxeHa_Cp?HX!3a1$~u#!T^Sn`8M>ru7v?lM zE@&+KA8_0yJ?*^fTII%rXaA5z{0FA|&LF4Vvvwl_KlUl>-oL}fP=6OC?G!gyWou97 z;+e(13a`x#*Xv}jB84wj2zEX`W7+E<&9hH)|MJS^VPpabd1J-OSLM5U=C4GPRhIHi z>HiR%u~NkG{ck{%|1W6#|6|ZNbVe7fF!OYHqsL0Gb7m3j9nS$&0hE9lHCeku-$4lU zB+e70BFeqowg{E`jJdn9olw-^dblj}Zv?f?01)sdIg8yzwZLwMQq%&^R3Vj-`WHjq zos$H3ZA*5wGP@^b^e2PWr4vj6n@Cy7>W6zo0hKyD1)zP`^>xeq=)-N_cQC#O(oj(H z0;E@Z5}nP6I)eS_gP^TGKW*y)ZrJ=Lz*=SWW6C%n3@t&H2@1pmVYN@J{LvM{)}Tvg zcJ3U7LPsD#&Jw3u3(?PiOHDGifK59C$b>rcv{)XTllFD4-537?W+HGq^oflM1Gy7G z?5BlNxz)GhIY_&x0j?=Icr{Se)%k&Xwhu#Xp((L~1wPyz<&Q6MOK!U)5A(Gz`CpUM4fmkECs0h&S& z73pj$O*&v_r1GF)3m@Myvx)(`TZ+Y-DiXve&JBSXS{eG6s zy4~$46*y5EnT9bu&HYB4^IY-m^Fd#%tuck?LtSqUvbwiZK!gR_d9Okr?QJ&}z-z{> z+YdT*@Y3jV^3#OG7U3t}cXL;DrK>o zH*oY|NPGm1a{!KLl`M2GbLDJY>E0TYdFyJ_0HtI$2NZ_wK=2I80Y7(Yx5se3Wlw3Z z@YYTO2CyZk;m2lx&>d?j8mJxY7SHPC0O!ea#Z&Tq z=?J1EzL1*vuWBdF#( zK~UwLPtSgaE+|lPz`cqe8BWDY?DBwf-P7p7ldE*v&jsuCDW_|-CrmAD0?J`&PL2?l7WW9MVuBIy z_Ibpqsks}*k2AI9*Ppz4X8@!%OjlJ+P$q{v0roo;{A8A5JKBWNC&}u7q{VKWgNhBL z`*yy>J;B~}Cx{-b0>Bq+)+u9+A=ntLXm-LNTW@9iexrN|WCPCL3PXLZQ2?mXa9F0r zU)Xz;)Q~)cKwSgW{w>gjdV&;rOHhpY7=^~WcNt*WBhMQsPd_ML^@of_6N|)4)GL=h zUkH;GePFOL1{9?(Zo{&LKnfGwZuxO}X7fTd&6@Q}EUhEd=*fobm9d>!c0k-baGm<1 zZwr|iBGA{xYV3De=&)S^MvGtn+RXnI3$^C=T_Jl@$3UxPhX~}QFlZ^+faR5-{p?OG>uR24rWlH|0+-koD~Tqd<(34bm+S91^P{3OjE^>u3s&BYdYz+J}28 zWlEEGg4~<9~)Y0qw}~&$EUTC2d%`Dp)tjCq#rqy>2D7#bp*>Ffw@mICl$&A%_i4v zEMNK7p1*H2SbITOcrk#g-(KYAhirfMHWds|H@erKwcBz&4rGSh^%(sa$7sDn8MoYb zI9s@u={YTu;{08{cAT1*VzqTehWQr@`)`!WF0sv61t$i^QKL_QlQeL?)KL+wJ_^ zh1KM~jBqFgVpDjA?+3eAN31m#X}qcDzzfdM4O@M)&eQ?djPBP^)F@cLih(uYZwC1a z=fGu&V@=Ra8yYL;b@zoaGJsW8g}s!*-(F^Ji)<+!^hDi;Z~N0w;uypdw>^Z+)-h30 z&iyW>$`e(*mGY#6TI00tAduAkuD5UfwQxAYzqYovI7asMPp7K2GLE&1{9nOr{Ra(V z29@{7b*o(S|2gIT|K~Qv)hyq=M6k5)f?sbcjBtD~`ACN)E=; z{Mj7O(WyAFB)3stGKL%6C8gJmb&4Shl!44L(Qn*keynXijjtknue^N2MB=gU0X8$) z4C>pQA~fmXDLGo)lbVi?uFnOfJn-z1)9cRe!>r*8I&YGrUE%&aXQN@7{y;il0H~l# zeIrx0I1v&9!W>BmwGJ?iH5qK-gOHG(O;RQY}QD%vz zXwU*gZb6OwmlaqXApvJlY?kc>5f*v?e9F!B2T~E2&;T1Ju&+`7c;o!;6$(?Jx{u9DZX?CWqhND2vXWRw*8Y_{2$r62=U$|74%y{ z{P^-6`t|aF9|Wvle~|_wnnWvrLIcs)GpS1$7PUoBZS>{#uTjJD3!Pk*L0N!|?j%pD zLS&t_SLgS7rT#yW9UsbJrq{R4QzipCwlIo_*`7mr={D}@(Ge93u8p62;Yod!w;eN| ziEc9+wR~&^P@Pe>`ud4C5P`6U`Si532jN~uAc~!ccQLo|9@Pc?PXpm?-&M(QeY6{a z+kT2YQXp?Nzs@k_La+y;>l3$=ce=QH`XzIEvmfieKBE|@B(7tKI@L_Ysd280namy4 zh!MX>YTP-Vb1#^L>jgshkcZ~jp$w9(JSfL+bZ%+#N9%LE>2X&rc#$DeH$rw5=1MRh zrpL`>>>W!#H_Vu8oTeADU7)aZYulVs7k6hi(ENp~4c!Lsm&sSlOS64!6#!}z2Esnc zNxpnJ1|MA6a$zB0*GC@J#Y(f`Qej~irlEeq_YdXqTlB8H1nWE8ozyP7PzBBdbRfmr zG6Y-ABST}ld>R9iJZtiRqDqn4rTOAk;$}<(O8Em=x+ zP$n_EEWGZ9Nx|;WU5}!OpNaJBZ`?0&dfTVtL!?4;i3#=%gawPdIX0_5yin~NEBkg+ zIAS5-i*F#)kpT9NaJ!tt&aDWvI!pOBZ9B=;XSfcYw!IaMTv4mkuMQ31ew7TgKBOCW zsxXx2ap7{?ovK;Nv5_Ydgz~<9EF~*P+H`Jiescn@{{fMc`bAx*&|Qo^nI<1&o8EuY zgKW=iN=FE@6PgHpUu=06V;*gVj{E(F7EP@znsFexjan~p`$-&Pm>CVDx{dC+WAP5m zuQI=(WC9i}xfk5P4*=utWR8}HfRF?B447&hsv9v6MvkGSW$Eq_54h zd0J8~m@T8D!5B&(t4KA{@rrx+h6fV{l4KEM%%Btoacm5;g|{<(HyRRv)EOUMrZ(nl8u>Xi7Xbc}Ut+5T zT7S~&i?3Srfje=9fxQi1^5T)vd>|KpQdsA?c0VX+?mXsff{R5wOuS2spCzd1f#iv! ztmWW9l4<0y)MHN@A>cpvpk&XsBj3LF3kj?{-_I+LE<%-J!2{5-z2We7o!3Wn%18zB zF>`a@`Wq;wh(PpxxzjD2h>c#e455$1=maSq>q@{&-g8~=5xD2n8urK8ZRHr{DnvcE zemAE<0B1_l^W-X}`_g3k8W3dn$Ad(ac>{I3Eap;SzajM`@(N9w;VZ{bHdOH|_fA}& zoLcf^nHcFkD^%GK8X!dV9@Z$XBlA4pB3Y1&wNGU`eHI4v4w`?l`a&H3v{K&TpCd&I zULdh0O#a-!Bkw5P@B@+5m`ShuH3 zce4rB#uhHS^ff=cs?c6-7 z`YZKXPe6TUAM$39J=$gG_M{Ewav5Gg@0P2mGIxf;?n#ETxn9ul20PpW*Q}W8Qqs>G z9|nW3SkaD2V#-6I8lP*XI#X&V>_A%Tyu`U-X&Pto2Q~k|TnHg7I}Q;83qzmj1YOIkzd>>6X z?0g#{oe*aO{GvnI-=>|(?;;6PM3_}&>vGMN#?Qp8V-6zZ^r;Q)X2lwF8#H!0cxX79 zv8h>hvyDkvto`=+r&e- z-nVkh>}JJ|=BL)4$f>4UgE4to-fTMz@o=`*)=EJhfFTo7! zUbD$nT zR%3}#=>mgQBzOO9Azhne3m=hmVAuYVc zpL+)!(cVGNYv!D1iRy+f*F~i##`T@Bu3xC0b~&Bswsn$_T6W4P2GBHBU&;{k4MQc-7;8+*Y}V69vi_ zYBsx23m;STQ22>3!WMFIWy96HU6W>$5v7y$3B<+#tB)PlrZtbmQ0&>asHSQ7;Fpwc zb$WTSpRSEfz=&^0caG7{Wor$`^rKuKBg?C$G45NK6YXE^e$dU$NaXaSKu2q3ua4LJ zn$-pkBBfqP$`+;D2uh((f$Z-ndU^|SvmontHT^Uc2HQUQ@x(69@YocprD&0CIf-{F zn`0-_POIfQbZhgLBxf6v7FhhKlzXov%AWqfCU|+xu6NZp@@*E_knHwua3DA_+9Q71 zo@`b>uK=U&TVfA z_bz?l#m(aGn(-}gb?uY6<3sL`*g?F^g9Gi!s!;2EYD|G|Ryr1yVC8B);TB=QR)*kac?ZaU> zepL@WC$y_q2=4o`Y2D54(jo>qTW$;I?AX8w)ww;%AxXd+(oK2By`Q^#Pjn=FAbHJ% zZnEdw4R!?CWVm$AF~_bCcl{pC47VvRZ})vRvTex?3kxZ9#%!S%1&*wtlN#4G=1$x- z5t8YpJ@y}YwXkqA_LV~4jKKJ#&qA*BHpQ{)V+A`4G$yYArr{h#e_JNngHM4+1kZ8od9%i^dTChaxk zm22(HMm}lN1%!OB4tS60o=`iT{osB~X8)TIUBYzc<<==isE5j2$W^qaB&!%OUABzk z`j+0eAr^KPhiCVxN}l(-CLhMLzZ`g8PkG{E?D5n=q~#n(e%OC_Ex#nWxcjw|c_icU zAxR`x2>xocxnZid-s_bXx1|04Ts%79_H1;ls}-~a;`Yr|3 z=hs^n@?BOPKA7nDAb@?<@bd83gMh$p-|{VBLvH<@vzHlb{@OcG!acA}i{72XsP}BD zXz9M~2*l~`cA_Kk4+5(j#s&1fYT^xFM_l$Q^^%rckYVGc^LDG)neF!d#`SbM9L63! zM^vd%Z7H1Ed=M^pm;vS`b;@xThOxJ~mt&v|cZLJ+R;)l*kO?pp8Y&tQrFzP#XlKjG^ zu)cOf68!`n8ZX)Y_RM#Xs)=fSbk^l#8E`GAE;HFu6Rg{FMX{xvX6|T;ZFj z`vRtCf_Or*%64n!e2l=O#^B76d13>g5}MjE;Y3E-o4LC!wi+f?<^dUlU%4Z z+;fpARG{IwmyE`q*c+#S8o-@Jd$Na>9{Ii2mK^E4Ha?P#OS6*{B4i>8ZVAHleTFSw z^k%;1FNAYF-=(Kh!0??eDJ|aaJ<6g>Ngo$t5gMc8H&upzJhv)+G`Kv5-yWd5R4x5z zSP64gSte$<#Nus#3Pb0To-3VnvNoti&%J-yU9uciT0O^OA3uQ8l@F0#7zl+Huzg?w zOFN{NG-|GUmNs?SmBSq=hv*h^B6 zGsMi)>D*8GT*^|z^`@U|SJt)Yh$w1#sg=R74b%VxtKt5&Qlv&eY9NtbLo7(|Es#J^T4*8EP(s3u-}&%6=ls0SbN}7^U2Cp2 zv*ui5yko5KzQa41Q^U*X4Q$JsvnTCP*m@*}{(&@590u+mh;P;drWeb3?luhqs@(TL zL5yPaA>Q&}CXPb#av5J5gK>cskEQP}i<@)3=YaV=+43HKk!rH~D^F^Rsm^=gys6fs ze3ol2nWJSvRZ5Nnj|!qn-01DJIOD{b;<+VNKxUN5a;!A^`BJo#!j?X-M?Fr0b{8n$ z4^Qpvx9Cn(|5DvkvZ1C7zmEsy=i)itpk=r$gbN8pPhEj1I-rd__ndi1pSaLp?e$8fEuM# zPKi-}!xR#z7or&vhapJ(UAXxvhBr%=CK#`-xI+wl2+OVR+4sBJp)w!LiITEYl3ky; zo-}^FGv@C?h(T!aZB@F=NmUr~I-+H5XtFcet?BMpnrCb9O56%w%wPOspTJPPegn3C z7ZlXtX5a$EPY)eT?kuhBC;xNdeh&(xY{-{LTa@t1o(?H2y?pdXX+}rb0XRVJ>XKf z<=5slpE~u@KI$Z>X$GybB<|ywy%=cT_LLtTliTfo6)&(bmTUq+G6a^8;M8nxbqrPh zaG*x@AN4E+W(WJ62l<0vgPf8}W%QSUi&`FV6MxbF20GsFT;# z)R%BGvHh$l%f5Uo&2`1!Tf3m5?``6uH6HOGL0FE6zu3q4ta>Bel`HiAdfjyfTUAet za(@YhMi;AZg&|d5B`#qlZ&MKRhTj*z8miZiq_k!2DA`>{@;h`}D2F{5ya3 zIc$j}oV#50*HU(Y=y|}@2Oo|)*?CZ}sMh6nJw51;R+Zh?U`oUKD78ss;3^LBl7SJuPF#(^V5aei*C+m`>xUML<|Ya1s&|sr^yN2fLJT5VA%T6qS|y9wB~yPh z^L#s@z_z-KW8bhoyIffdvz!ikQPv$O>Z_#L7&jes@zh3e(aOEt5|!vr?`(2iEg?YK z0Xw5zW(kAS_iQmo+N9*(c9feZ=tnpZTf77s#j7}?fqB7B+ML$>t}X{EUBMRjD%A9L z3#AS~MK2*P2QfJtQhris+0p~nq6!AQ+P};<7YR~0kTu;Fx{veOR?$gULxstih^GS> zZP22-KNTG;*Jv!zlKQ_avIn29BtI`5~ zfJ<{7(~Ct#94{6}aoVW&sg~}fbiVYS9$K{&wJo6OYamMw489Ww+)-1eXwsFg2AV9s zOLQP*+NLn*$Gz=WjNO4&DZ%leW6PF?hP{IlhRsFWmZLBoS`+@-<$ZD@^5OF>{<1_5-e5FlIHqoBF-xf+oPgGp6Wa-I;8v{xN~D#%|VA6 zZ(SbX&`K#Rfn$y_Jyuh2V7kS}$f)%yJuYenJyPq&fFpM%$MBfIcK@TXU8`|Te01U9SAwTLM$9NJq z0_-PFaMNoXu7*5#uJGhg zcHIU0%*TvjMaEKI9ZcRPj}=2u#S9J}fq+>abz7<7MKS99&wPeaRAlC#)&&%1$$ipC)7y07ZJnfGWNzfZr5NpQ#9ixcc7~^I zR`x{623a8oEN$##v|ojOe0A;B+alqp(+D-QaMdr*ZCMJO8oUm5P1%)n0`&ro?hT!o z>Qme{27z{rK_kT_MnoH8X3N8SfRRFbMrK$efhzFWwM1Q~yhwbHl^jWyEQ?5IU7pQC zZE$UE1Fz9KQNtf%>6X1u-v+JK;yjyLaxkc?kA^qQ^Fw#Bc zQ&XF5rGxQBmE>4nx0RAE*lcgmA+;9U;0O<~+lQX34EkAGFKr5yIHj6jZ#kEqofJ62 zs8dfCDw)g0rcbS9V~x|5^KdrfvwIqFnQ6iwQ0ZqPza9uUWbE_`^`-X(ZYX6N zUDd3gXMUx~cQ7?D5!CXq19pO`|6RZWQw&?@_Hb(U!7!&-3X zOq?K_Y4MI-GykMG_^IrDiyaC2D7~}4a7*pbrdrc*^0srDd4S)-s5t%85OI^c(MJko znO-)ptAY-0^>S9G-3DcRvw5j^jOD8ri}qE+TSLm`&DZ#hougk(5F-t%W5uDIm%rcDnT9k^d=E_;dPe0% z`!A$`NTU2tF9}sEv5j$)M=bmk`pyO4ZURzsh4eYA)d)BFp``rhLVTo}=eb=VCQ{5Y5I`37M8N-OJ<`YNn)UD=e`-&^ak`XVh3< zjvE)S=o+w#SEF{J3>LA9CRe#?)yO)$i8DU>l&bK{nI?`!fS&EKtRI5 ze13W^sbDJg;Ip=y4e!w6(ze&o`Mr8e=Hz+bWW8WRjH7%((xHiXatn_{`sj%}t~dki z>ti}whtoslxwdt^C-w=NekxOw{Wg^wV))ZvP$n=NGus}+P7&AsdcKUu;MUiTntV(rMYtLPb_5x5|FtvkATJ+4GI){{OZ_<|E z`*azG+3Wed>#zG{<+`AasM=@AwYb0unScW!i_4oOL>qj z`{G4gAb^wrW51^WDG9~EIx4&5f&H|}o3~H`VC4O*&fX!6w{fIg5T{~}YJvLsPntrX z;_u$a+?o+;UK~~64d$_Eo440fPTd#_p=OP*?v$`Rka;DaZMbbelJD0vUec1Dmqw}H z&;atv$n0CC)4|z6LmuOpak<6a9G6W$Twnb>@jz%#OssZm@&ig>$WmhCiC)AN#V@gK zdLi}*d#C)W%QuVuR`Tsq(lKJ;hkoYOgMd>k;Fe*Mi>n@+iF(-pIQb+5(tT6% z>?}=3d+yw6kwXTs(H3dm9>uS&74WL%83Yc*t1a=CRM*^cG&eqLSiWzuoZAhPiJHj)fe22{666H~fcQ_=Jdq>SL*uC+@`<)+{7sJ@Eq zD|v4O(hyEA&qxV;0a?I>nkFyRm&c^BMbpSd`^{{(<2K~0xDFK}4>gA`u9of)8$_p; zhHLG%d9dqso+VRRG=r6JSSTqi_g<$%1EUB(9pfF@=%e2jB6J1(39R>q<#$zNmwtiQ zk50B7hu+QdjOXapaeLWD&#iokq0uDcLv6ff7JEr?3PVjmicCst@(97D0stBAEo<+a z?vIy66wRpR$HE|$*J@CNTF0)g$veMBWIa}1i;NcAM`+0Mqz&pw(fE~UpSme6*n)9} zy{pf7TK2sQ)pSn5GnexHbZ-?DLVY=PDgg3ssC=QAo>ob$+rv@J`SS~%Y%YsAp56LJ=#-eGscIfD+(QDJJw**FN%Q?^}4|ZIni?HNe;@12f8`gY+Vyi0 zr+!wKf4Be2vlm$U^q@wM^d}r;FB4wPZoH|{Hpe^kqLrceCtI^T=`|4K>$fsypc*eZ z;yXmDwcOE>Af76N%kO4k7Q|A+r=Ua#ugW5Opm@_(8?j#K^u3N9+(+pTBq&$D=~Xw} z3oRk@IJQswWUM60pSuNgFTE;!yhvj zp~IRsTUplG*|~xqs}Gzji5lCXjun6BVYR)HdYI9t+?(`bP((!B2QcB^jj%Oh)|H19 z-4`7xc&dz@4|bpTgXn1XOclFui#y?B#%pZX2gCj4o)2b>N(5vL`hr%9^X$2%MJFNW zwQc4Q%^uH?=`4n2U-;t{@zlPrUS4IIHAGFWv&skUu*O4})k?_Z-4xwzUVlXqrR9d~ z51zoV-Hfqj!()XtMBX8SM@9YRG8lCXWIHr(&Yg)WdNzZ6#AE$7YX)drxm||auR~(fc$02luyAQK}Af50sCR)B?l%mf!-7~f?K?_d9^EIq4jt!&V zr;9#ai4YvBSA8W{I7$6EBjdQ#{S0UGd@U zd69m2WjLq{(33xS9{V`o%L9`vCW|?0#V>*Q5Ke%9a+w`Y5{OX$*K3ws` z9>&sYI4q3x^K=wXP&}^kHMMHqU80WTF%} zc**E;Npvr*nZ3jNdYxw9YQQGDO0BotN^>4a|Amo<5aM39yD+COu?*YjxV#8({FY>3 zDjsT}qA0t3T*6UTy2#3%7QeJ4?olJ^2g82g^;mlzX8F8E>To|sUPgu3ZL~7wd1Z3# zlb4YpO_CPiShDpgK@v_%i)P>>%rYed=JH+dK7p%LgcH$M7B%@Ag(iFZVIT&Lstv2 z-@~9O`swK*3ci*Ary6M4r1hU}t6P4(Z;d8=N&=F(TRd-7A%mq%sq1f_rL(;o3}sUp z7Wtf#-<#8gtF6s|(Kc_niCkz9*r_L{BQ)wCWOxoHL4me8GnR`D#jm2&pXLYlvu4vj;8SSG--lmbno5y>nmdq3TY7E7Vm`^P&Ee+LR z`HcxT-&+pF#Erl$Lz)#(%Lh3RzxQS-jH6I!#RNZ(eyr)XPTpo>uXg03{u^g%E9Dq%;9IMWIL;lxFV){V;cNB%{tXM&D|&41MQcDJ8|=^-V(1a=Pu(xflkmpcWD%>* z$j8MgxPI0~?6n6T&R;Wv>SAjw85m|~>q`W*@pyJ8YEG2)aEa5kChjS1f+1N9N^I=me@9a^LpR7X#cC$ts5HB;!0Q84mjncxK zZ>h`5heI=cW89nEcz!bfOixFAcEZs6FAXkzwfzijv?>qRTTgVPW94WqRe+oQO~b?K z<}AD8`P|j!hmzy%MCCVNUWRm(?p_I-n7D`2&6_vbt8GJuf1T`iA3jK#-8UA-Nl@-H zF*%F7#_8{GPj1VJHPt7 z{hUq$U|v=*pOJUio|x=0A`%;X43Zn+*1oE$vMQky%=LXP47pLJ*@s!a2$bA*WiAx0 zmeql{?#&g4fc@nvTy?5*>~wON6y3q8yNogs+#y8N5|x@>x7q+Tqfq`(`bAHBMk8M zVpM2vls})**kOv|4|($U7ybWKZVGVtfBPfD)Boz!m!nc!rjs%MT_WTEA7DI~ledkl zbL5wF6b77!uO+@685uE?vvgx9T<#EDAm*|k@4tB{_=kNH+TCdieCFb!ASNPGo|~Ji z;n>Y=aYEy3%Iq;`&rb^fe$EfhvLRVwY<{9Ee4EkIGf?W!q1v)syV#M^LV+vdd8K~s z4T0nrVI1;bB@|aRmPhh28G3&@#Xrb>3b19n#Wcfey>uN!`Pr2^UbSOg`Pkjsj5yYR z)Aee=O{TCE1GIz#Ai4ZGq&>=xwJY*b1Rm7~!9_)DO;AtT9WA%v+ObP2yA=U5QjMhI zb2aYcQet?3>(xe$vQJjS57o=L#K&3(KcgcxrXN{(w96pb&3YOVwpSX=OMN#qKv9H`!H}Ylk74lW`ALVQ2Yv=3b z8?6s9Dk1;tSA0Ru`O%wk*MO%0n})5Jx?62gTrYFp9WzfHgb(Hn<_+c#77mIWX*e@I zFfs=)<-KxepIat2D%%XNjOk`g>%<*<^Kj8%(Qwgd(Rgu0ukq;OpA66D#HALf{FI+C zg-fdcAUypTDr_YR5zP`sAL;reJV7wq9`KyxQU0(~lMJHBPZW;dy&&*k6V1oAZ2jS% zRG6TS2=A7D9e^ttKrJHqZ-aIHcu)X`iV z21^7v(!C#AsN;@U>kbdIIFAnhPtloYh?BO?4S(S|2alAf1TF(?kIwzS=|opEdD1qV za@D2wZ@3-Dp?AHKvMZXG5ABdO2^+BE1#AhDjhuDCfeI5Ihnf=B_TTqy=Kl1Tv~8=j zI%$hkUPlG|DA#+2nT&Ww9n`H6v78If)h`FRVj8dFs87l7+tu)ktwXo!9+=2qkFUe8 zqP?51PLl1s&Kynr@#y@CJJ(sK>=~cd@z(}|!G3i6fG!ml+%{}#h&>(p>$?T1G2NFu z)b22~s%de^C-lt6N5QLiG<*e;NHQGl0*{Oh0{kWdF#F@4G9dcQpWehw0g4{VOn#5a z=R6ht)@?}jJ1~1UL~1=Ycd^6fV1RyS{pEkA@nF+!^VkQ^tJJ#nZ&7KUN1K?bANLT* zTarhp;*8Z0KOgzb$|~#4_iBcgQ6M?%r}O39IcGT!e?2_x*;r3kvi!KIisZeEN*;QB z4Wk+Os_d+t+96hJuM<0Rak%kjR}suH+>dGMF7i zX7Td0$J~d!BVlRJsQ!D)6u6P(#(Zn4Uq?TyJJ~bLqww7s&urKErxt5Y8Pa6vj=Y7H z!dA`cGnk<>giR_E#XD|k>d}SmsRUaqjG%RsNEIUyap^wVj*uSF#>ITv%DTZaBf|ow zZAOrO+^=nPIrKAC8XAvuK#qhHhsn9ex#Gy;rF2@uYR+8tuNKg+g{7MyP%=qb123`@qyfMcaxQ<{0mO!2M2ak z5(<4QZC#6Xpj8u5QBe~DIr{B?1ZWiEHh>Hdh3nPQ(y|Qlu`~0@Kpm^}@6q%O=~hl1 zTl)v&J2YN5T_?0s2a&9lAc4mU)>tge_VUFtr_e?=jRzmvctBDZ+mXLz2`K7a&&*E3 zWSsZRVl;iaH8(Wo)rloj^{SX9oEG=v`-lB^CDszfA;c82Ub!In@C&nmi7CVpm|o#JKZ)SW0vTuId26$S_^eQgAsD*Id zF{_5=SiESM#Nt8H&);nTfoNbb^IiYdvO-2M})m5V%>qf+>DD&9EQ6WQUU1GSAb&Wa~ z8TVR`yguJDDKqUswZ=Xo*|@1N#B*E2xPQN$o=P*~vNZnpy1rRGLJS%z%rETt3H#Qz zFhS@ShtxA*cc6l1^?eO?$k>Qhkn8+HsjJ;?wQ-eod=tp$k&Uc*?;AyQU(s zx_uEo>qB-c#2)~?8nIxIQj4dYW9g(+NR-g9H6S-KAuzmj3OmS0teK3#W1eiTnIC%62Jb|!Q^*$jcQr*3SYu3>9MSMH`Y zh5ez_Ipp=Q+N!C(r3%3vInX}YWxK1VW%YV|WA86pDUkc8>apYL^YFWQaqYJe9P9=v4eQa07UVBLzr3OrfSzBTaMz%+p$eiV9-Yl!t!{D^(xnU;1E zy&}+KL2r<)enWvDznS|bQ4bJ*;jsZJHC2UxVBst6Ee(f77V)og_$Kpi2n|5WJ15vDiUB6fDiJLHM#f96)G0gA2MEC*BzT7 zwHK{Y-)y$O68w46hXM{5H-J60_%5{I$m-IIooOm=y*BVxmQi=v$UoQWCIcOE#@~uA z*j*Ka6Wq9f(UZ*sbo6@FU&yp0|HWkfEr2U@y?DNj+{#{4%dNa<4VVAPqfpgn=7}p* z23}~F+eyH?_wyA3q|N4J0Vz+9F)^FnD8F36FsO_+N-xkMqPyIfy#1;$Q=>c)e%QUQ zbiXAIOLjOVKWjqXnPvp2zQ|bkB$0%7-6(b=D{2-map|89C%ooVOyDsd&={)u1;Zmj z5z^=*64O|@d+M=E@O>VG2l>LrEApRrVtMuxz*ZKf9y9awh|{B%G}ahIfVAd?)I8(b~6z^1i%E zH>cVZ#<>mOHuJmP2;h3Np1t@hIc zd+d_IJ>$VW?GjtTZlW5io5DVCXqeS`4tY^RL|1B;!5y{ zOxnf|_(YT1RA~mW^%14HJvQU}x2Qn(_1elw|3XS*W4ZfsMP;#1E*+GPZ`95P(N>d^ z19b86eeGX&q^0XqVgpkZiLF=hq@~uQ`$|X1@Q2n@n}U$nX=ISna0X`~)L^(TdOzT| z!>hyu6TofmevnvR4myF^bA?xV%`{*|IW-t%n9;l-={XTt`*k#L6I#Q7*Wy<9+IqCN z7$&RXXN+stgm>qdhR*9q`PYX#e#&ds0G*zKn}-^-zUIm4p10zguO!})E4r|f{`MY? zv*cY-*&l9L;oaf$%4RYhv3e7STCz9f?fYW`d=G7Y&wZgg%rlPEWk5iPpCS1b@S3{s zcK-2q&S(A|mq%*kU5r#KMIw8@{W4!3&uiS#^{)DRz*jm`rlF9ea(iWdZfV`XLjD~p z{8qKo}^$n_jhx1o!QzpT6VBI11B?Bw>LCU+SHqtErQ^|Y0INtxj*^-F2J zo|!AFn<|yRvCQH+e1a5iZ0t5Od<VU(kNwf8Xzem>D&J}?-Hp^1fNg0#mKc&s``Hew#|f4MZCGtc03lOW;Y0U(5F%PO?U{>3{ z%Qzp&9fjczx^g4C55{eu!ktH0D0t#Ih)?eebgvnV&3%r z^qC@W>#LuISZvhZZ1D^~X=IxP8mXzW^?>bK`!FVY9UY zmRZpl;jp6%5$DM;5!z=v?yx-Lh^pK6;I^=#ae!{2K6Yko^5aE!ukA@tF$FfODS0o@ zTYI<$S8`Sz1`T`PW4-?hPjID_4(T@5lln7PGrg0R)olK`z}!)Vkr_pTsM=X8)B_&H zjgAUa568JwPxIws@aTHdH{P+kot$9t7a1@&|RVnX>s;U|#%zajNYFuQ%DcKZCzJi58(HOIh_1=~> z?_tLzL7^vJ+4ktB5BcvnSJL+evM2+xGi9zruH62M{m5uu*X0rqLR1H3ErYwpdF?3V z33ad1V!yPWn)fR+18i0ceJ-|qzWS`7;DsXRmeK+#2e*_YTpid{W;is5auj&2d|+#4 zdAhSYY5BE=t?r+PbF8*W)<@2e5px~CqxrWy!F4pE6e;6iy>sV*szHPCze2O4y9&HF zVgFJj8W+A9*ZeigZYI|4(Z%8&!b!Hb{|YaQ2NCdqqYFOH7jXTuwbF#ix-;vKFypT1 z0ZOZff6Lt}@-N;h_Al8wvd|B1mGOnHyPdZToPR&s80dw#E$K^hAIAR3fE+iE{_oLi z^`8~eaj9mCv3X14V91FDv=ya#^kt(-jgIOy%}wp!0D{rNXCK90suK8L@$%4Y)zPzf zQ1Qz7Rkvh2q569^)}tpfkTtwR5zf6e$w|ItH8 zh}9nnUt&N*^*n=UwQDA(rcS@S%NTu@7*HIgG{AihAzE5hm6e>7B%Q=hWxK{S z6Hjxb4n>~me|J9YHa+1|$hykWwjA@}@@LXGVA8hxa?@vR>V)}2yU?2>KQTvwtz+d} zAxs+YPKfge^_?)+vio@R{=&PLOh?NUVCliQyf&A=AS2%~x*#Cwk2UQxCt6{)gl&?BG$s@+TU6V4==*^w<7Z(;toh zM+bCRY_BC2{YNyH$wd_UPKJq-?ajpJ`&TIQM}LRu!3C9ddy(Q#e}CEKkAw8cc;Nm6 z51Gyu?nX`vzY{$*b>%z}!4_w7^UO&!XN7Tj$nAP74(umu!wX_F;P3PBy891#MkkkvZRfG^;OXG}q7l zcyd9~V4@{H=hNvguS;Z%HPMS2xdTPK|4zC=AdFC)=NrTFyI&1lb#Qbfc@z#Biiv8` z`i^!46E64h4cCnC&k@Dr4!p9)W>!|{vVwnsz0 z1bk(-wS#%$PJeT@_AN{G|H|zm#n{PbT6O_8A^+_>ioo5^xh^V9?{$9uNCh!z3^H5( z>6*nz5I^xf+nTDgrtZs7GQPI(XK?~fjlgTvYv6%jPHQx@yRWwy*vV Dr6u7X literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-2.5/20-usage/repo-list.png b/docs/versioned_docs/version-2.5/20-usage/repo-list.png new file mode 100644 index 0000000000000000000000000000000000000000..b47380087602395973f45c929893e066e56016ab GIT binary patch literal 21355 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 c`1~wn@lQUX), add the root path to [`WOODPECKER_HOST`](../10-server-config.md#woodpecker_host). + +## Third-party installation methods + +:::info +These installation methods are not officially supported. If you experience issues with them, please open issues in the specific repositories. +::: + +- Using [NixOS](./30-nixos.md) via the [NixOS module](https://search.nixos.org/options?channel=unstable&size=200&sort=relevance&query=woodpecker) +- [Using YunoHost](https://apps.yunohost.org/app/woodpecker) +- [On Cloudron](https://www.cloudron.io/store/org.woodpecker_ci.cloudronapp.html) diff --git a/docs/versioned_docs/version-2.5/30-administration/00-deployment/10-docker-compose.md b/docs/versioned_docs/version-2.5/30-administration/00-deployment/10-docker-compose.md new file mode 100644 index 0000000000..a9c2bb6abe --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/00-deployment/10-docker-compose.md @@ -0,0 +1,147 @@ +# docker-compose + +The below [docker-compose](https://docs.docker.com/compose/) configuration can be used to start a Woodpecker server with a single agent. + +It relies on a number of environment variables that you must set before running `docker-compose up`. The variables are described below. + +```yaml title="docker-compose.yaml" +version: '3' + +services: + woodpecker-server: + image: woodpeckerci/woodpecker-server:latest + ports: + - 8000:8000 + volumes: + - woodpecker-server-data:/var/lib/woodpecker/ + environment: + - WOODPECKER_OPEN=true + - WOODPECKER_HOST=${WOODPECKER_HOST} + - WOODPECKER_GITHUB=true + - WOODPECKER_GITHUB_CLIENT=${WOODPECKER_GITHUB_CLIENT} + - WOODPECKER_GITHUB_SECRET=${WOODPECKER_GITHUB_SECRET} + - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET} + + woodpecker-agent: + image: woodpeckerci/woodpecker-agent:latest + command: agent + restart: always + depends_on: + - woodpecker-server + volumes: + - woodpecker-agent-config:/etc/woodpecker + - /var/run/docker.sock:/var/run/docker.sock + environment: + - WOODPECKER_SERVER=woodpecker-server:9000 + - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET} + +volumes: + woodpecker-server-data: + woodpecker-agent-config: +``` + +Woodpecker needs to know its own address. You must therefore provide the public address of it in `://` format. Please omit trailing slashes: + +```diff title="docker-compose.yaml" + version: '3' + + services: + woodpecker-server: + [...] + environment: + - [...] ++ - WOODPECKER_HOST=${WOODPECKER_HOST} +``` + +Woodpecker can also have its port's configured. It uses a separate port for gRPC and for HTTP. The agent performs gRPC calls and connects to the gRPC port. +They can be configured with `*_ADDR` variables: + +```diff title="docker-compose.yaml" + version: '3' + services: + woodpecker-server: + [...] + environment: + - [...] ++ - WOODPECKER_GRPC_ADDR=${WOODPECKER_GRPC_ADDR} ++ - WOODPECKER_SERVER_ADDR=${WOODPECKER_HTTP_ADDR} +``` + +Reverse proxying can also be [configured for gRPC](../70-proxy.md#caddy). If the agents are connecting over the internet, it should also be SSL encrypted. The agent then needs to be configured to be secure: + +```diff title="docker-compose.yaml" + version: '3' + services: + woodpecker-server: + [...] + environment: + - [...] ++ - WOODPECKER_GRPC_SECURE=true # defaults to false ++ - WOODPECKER_GRPC_VERIFY=true # default +``` + +As agents run pipeline steps as docker containers they require access to the host machine's Docker daemon: + +```diff title="docker-compose.yaml" + version: '3' + + services: + [...] + woodpecker-agent: + [...] ++ volumes: ++ - /var/run/docker.sock:/var/run/docker.sock +``` + +Agents require the server address for agent-to-server communication. The agent connects to the server's gRPC port: + +```diff title="docker-compose.yaml" + version: '3' + + services: + woodpecker-agent: + [...] + environment: ++ - WOODPECKER_SERVER=woodpecker-server:9000 +``` + +The server and agents use a shared secret to authenticate communication. This should be a random string of your choosing and should be kept private. You can generate such string with `openssl rand -hex 32`: + +```diff title="docker-compose.yaml" + version: '3' + + services: + woodpecker-server: + [...] + environment: + - [...] ++ - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET} + woodpecker-agent: + [...] + environment: + - [...] ++ - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET} +``` + +## Docker images + +Image variants: + +- The `latest` image is the latest stable release +- The `vX.X.X` images are stable releases +- The `vX.X` images are based on the current release branch (e.g. `release/v1.0`) and can be used to get bugfixes asap +- The `next` images are based on the current `main` branch + +```bash +# server +docker pull woodpeckerci/woodpecker-server:latest +docker pull woodpeckerci/woodpecker-server:latest-alpine + +# agent +docker pull woodpeckerci/woodpecker-agent:latest +docker pull woodpeckerci/woodpecker-agent:latest-alpine + +# cli +docker pull woodpeckerci/woodpecker-cli:latest +docker pull woodpeckerci/woodpecker-cli:latest-alpine +``` diff --git a/docs/versioned_docs/version-2.5/30-administration/00-deployment/20-kubernetes.md b/docs/versioned_docs/version-2.5/30-administration/00-deployment/20-kubernetes.md new file mode 100644 index 0000000000..f931c3e785 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/00-deployment/20-kubernetes.md @@ -0,0 +1,9 @@ +# Kubernetes + +We recommended to deploy Woodpecker using the [Woodpecker helm chart](https://github.com/woodpecker-ci/helm). +Have a look at the [`values.yaml`](https://github.com/woodpecker-ci/helm/blob/main/charts/woodpecker/values.yaml) config files for all available settings. + +The chart contains two subcharts, `server` and `agent` which are automatically configured as needed. +The chart started off with two independent charts but was merged into one to simplify the deployment at start of 2023. + +A couple of backend-specific config env vars exists which are described in the [kubernetes backend docs](../22-backends/40-kubernetes.md). diff --git a/docs/versioned_docs/version-2.5/30-administration/00-deployment/30-nixos.md b/docs/versioned_docs/version-2.5/30-administration/00-deployment/30-nixos.md new file mode 100644 index 0000000000..ce490ab4e5 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/00-deployment/30-nixos.md @@ -0,0 +1,88 @@ +# NixOS + +:::info +Note that this module is not maintained by the Woodpecker developers. +If you experience issues please open a bug report in the [nixpkgs repo](https://github.com/NixOS/nixpkgs/issues/new/choose) where the module is maintained. +::: + +The NixOS install is in theory quite similar to the binary install and supports multiple backends. +In practice, the settings are specified declaratively in the NixOS configuration and no manual steps need to be taken. + +## General Configuration + +```nix +{ config +, ... +}: +let + domain = "woodpecker.example.org"; +in +{ + # This automatically sets up certificates via let's encrypt + security.acme.defaults.email = "acme@example.com"; + security.acme.acceptTerms = true; + security.acme.certs."${domain}" = { }; + + # Setting up a nginx proxy that handles tls for us + networking.firewall.allowedTCPPorts = [ 80 443 ]; + services.nginx = { + enable = true; + recommendedTlsSettings = true; + recommendedOptimisation = true; + recommendedProxySettings = true; + virtualHosts."${domain}" = { + enableACME = true; + forceSSL = true; + locations."/" = { + proxyPass = "http://localhost:3007"; + }; + }; + }; + + services.woodpecker-server = { + enable = true; + environment = { + WOODPECKER_HOST = "https://${domain}"; + WOODPECKER_SERVER_ADDR = ":3007"; + WOODPECKER_OPEN = "true"; + }; + # You can pass a file with env vars to the system it could look like: + # WOODPECKER_AGENT_SECRET=XXXXXXXXXXXXXXXXXXXXXX + environmentFile = "/path/to/my/secrets/file"; + }; + + # This sets up a woodpecker agent + services.woodpecker-agents.agents."docker" = { + enable = true; + # We need this to talk to the podman socket + extraGroups = [ "podman" ]; + environment = { + WOODPECKER_SERVER = "localhost:9000"; + WOODPECKER_MAX_WORKFLOWS = "4"; + DOCKER_HOST = "unix:///run/podman/podman.sock"; + WOODPECKER_BACKEND = "docker"; + }; + # Same as with woodpecker-server + environmentFile = [ "/var/lib/secrets/woodpecker.env" ]; + }; + + # Here we setup podman and enable dns + virtualisation.podman = { + enable = true; + defaultNetwork.settings = { + dns_enabled = true; + }; + }; + # This is needed for podman to be able to talk over dns + networking.firewall.interfaces."podman0" = { + allowedUDPPorts = [ 53 ]; + allowedTCPPorts = [ 53 ]; + }; +} +``` + +All configuration options can be found via [NixOS Search](https://search.nixos.org/options?channel=unstable&size=200&sort=relevance&query=woodpecker) + +## Tips and tricks + +There are some resources on how to utilize Woodpecker more effectively with NixOS on the [Awesome Woodpecker](../../92-awesome.md) page, like using the runners nix-store in the pipeline. diff --git a/docs/versioned_docs/version-2.5/30-administration/00-deployment/_category_.yaml b/docs/versioned_docs/version-2.5/30-administration/00-deployment/_category_.yaml new file mode 100644 index 0000000000..7284349698 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/00-deployment/_category_.yaml @@ -0,0 +1,6 @@ +label: 'Deployment' +collapsible: true +collapsed: true +link: + type: 'doc' + id: 'overview' diff --git a/docs/versioned_docs/version-2.5/30-administration/10-server-config.md b/docs/versioned_docs/version-2.5/30-administration/10-server-config.md new file mode 100644 index 0000000000..8bd7d49c25 --- /dev/null +++ b/docs/versioned_docs/version-2.5/30-administration/10-server-config.md @@ -0,0 +1,566 @@ +--- +toc_max_heading_level: 2 +--- + +# Server configuration + +## User registration + +Woodpecker does not have its own user registry; users are provided from your [forge](./11-forges/11-overview.md) (using OAuth2). + +Registration is closed by default (`WOODPECKER_OPEN=false`). If registration is open (`WOODPECKER_OPEN=true`) then every user with an account at the configured forge can login to Woodpecker. + +To open registration: + +```ini +WOODPECKER_OPEN=true +``` + +You can **also restrict** registration, by keep registration closed and: + +- **adding** new **users manually** via the CLI: `woodpecker-cli user add` +- allowing specific **admin users** via the `WOODPECKER_ADMIN` setting +- by open registration and **filter by organization** membership through the `WOODPECKER_ORGS` setting + +### Close registration, but allow specific admin users + +```ini +WOODPECKER_OPEN=false +WOODPECKER_ADMIN=johnsmith,janedoe +``` + +### Only allow registration of users, who are members of approved organizations + +```ini +WOODPECKER_OPEN=true +WOODPECKER_ORGS=dolores,dogpatch +``` + +## Administrators + +Administrators should also be enumerated in your configuration. + +```ini +WOODPECKER_ADMIN=johnsmith,janedoe +``` + +## Filtering repositories + +Woodpecker operates with the user's OAuth permission. Due to the coarse permission handling of GitHub, you may end up syncing more repos into Woodpecker than preferred. + +Use the `WOODPECKER_REPO_OWNERS` variable to filter which GitHub user's repos should be synced only. You typically want to put here your company's GitHub name. + +```ini +WOODPECKER_REPO_OWNERS=mycompany,mycompanyossgithubuser +``` + +## Global registry setting + +If you want to make available a specific private registry to all pipelines, use the `WOODPECKER_DOCKER_CONFIG` server configuration. +Point it to your server's docker config. + +```ini +WOODPECKER_DOCKER_CONFIG=/root/.docker/config.json +``` + +## Handling sensitive data in docker-compose and docker-swarm + +To handle sensitive data in docker-compose or docker-swarm configurations there are several options: + +For docker-compose you can use a `.env` file next to your compose configuration to store the secrets outside of the compose file. While this separates configuration from secrets it is still not very secure. + +Alternatively use docker-secrets. As it may be difficult to use docker secrets for environment variables Woodpecker allows to read sensible data from files by providing a `*_FILE` option of all sensible configuration variables. Woodpecker will try to read the value directly from this file. Keep in mind that when the original environment variable gets specified at the same time it will override the value read from the file. + +```diff title="docker-compose.yaml" + version: '3' + + services: + woodpecker-server: + [...] + environment: + - [...] ++ - WOODPECKER_AGENT_SECRET_FILE=/run/secrets/woodpecker-agent-secret ++ secrets: ++ - woodpecker-agent-secret ++ ++ secrets: ++ woodpecker-agent-secret: ++ external: true +``` + +Store a value to a docker secret like this: + +```bash +echo "my_agent_secret_key" | docker secret create woodpecker-agent-secret - +``` + +or generate a random one like this: + +```bash +openssl rand -hex 32 | docker secret create woodpecker-agent-secret - +``` + +## Custom JavaScript and CSS + +Woodpecker supports custom JS and CSS files. +These files must be present in the server's filesystem. +They can be backed in a Docker image or mounted from a ConfigMap inside a Kubernetes environment. +The configuration variables are independent of each other, which means it can be just one file present, or both. + +```ini +WOODPECKER_CUSTOM_CSS_FILE=/usr/local/www/woodpecker.css +WOODPECKER_CUSTOM_JS_FILE=/usr/local/www/woodpecker.js +``` + +The examples below show how to place a banner message in the top navigation bar of Woodpecker. + +### `woodpecker.css` + +```css +.banner-message { + position: absolute; + width: 280px; + height: 40px; + margin-left: 240px; + margin-top: 5px; + padding-top: 5px; + font-weight: bold; + background: red no-repeat; + text-align: center; +} +``` + +### `woodpecker.js` + +```javascript +// place/copy a minified version of jQuery or ZeptoJS here ... +!(function () { + 'use strict'; + function e() {} /*...*/ +})(); + +$().ready(function () { + $('.app nav img').first().htmlAfter("