From 87c5e71c67983136f41abfa0d2db17740192673b Mon Sep 17 00:00:00 2001 From: nscuro Date: Fri, 24 Apr 2026 20:03:53 +0200 Subject: [PATCH] Migrate reference documentation Migrates the existing reference documentation from https://github.com/DependencyTrack/hyades/tree/0.7.0-alpha.3/docs/, adjusting it for the new Diataxis structure. Signed-off-by: nscuro --- .markdownlint-cli2.yaml | 2 + .vale.ini | 6 + .../vocabularies/DependencyTrack/accept.txt | 58 + .yamllint.yml | 1 + docs/concepts/.pages | 2 + docs/concepts/access-control.md | 67 + docs/concepts/vulnerability-policies.md | 83 + docs/guides/administration/.pages | 3 +- .../administration/configuring-database.md | 256 + .../guides/administration/configuring-ldap.md | 9 - .../configuring-observability.md | 110 +- .../guides/administration/configuring-oidc.md | 11 - .../configuring-secret-management.md | 38 +- docs/guides/administration/scaling.md | 109 +- docs/guides/upgrading/v0.7.0.md | 4 +- docs/guides/user/.pages | 2 + .../vuln-policies_bundles-modal.png | Bin 0 -> 25483 bytes .../vuln-policies_editor_analysis.png | Bin 0 -> 33465 bytes .../vuln-policies_editor_condition.png | Bin 0 -> 34909 bytes .../vuln-policies_editor_general.png | Bin 0 -> 39909 bytes .../vuln-policies_editor_ratings.png | Bin 0 -> 36407 bytes .../vuln-policies_list.png | Bin 0 -> 41728 bytes .../user/managing-private-vulnerabilities.md | 13 + .../user/managing-vulnerability-policies.md | 48 + docs/images/operations_database_pgtune.png | Bin 0 -> 223878 bytes .../images/reference/expression-condition.png | Bin 0 -> 42350 bytes docs/reference/.pages | 16 +- docs/reference/analyzers.md | 151 + docs/reference/api/.pages | 3 + docs/reference/api/openapi-v1.yaml | 12377 ++++++++++++++++ docs/reference/api/openapi-v2.yaml | 3813 +++++ docs/reference/api/v1.md | 8 + docs/reference/api/v2.md | 8 + docs/reference/badges.md | 95 + docs/reference/cel-expressions.md | 533 + docs/reference/community-integrations.md | 68 + docs/reference/configuration/.pages | 7 + docs/reference/configuration/application.md | 72 +- docs/reference/configuration/database.md | 124 +- docs/reference/configuration/datasources.md | 77 +- docs/reference/configuration/dex-engine.md | 53 + docs/reference/configuration/file-storage.md | 61 +- docs/reference/configuration/properties.md | 2315 ++- docs/reference/datasources/.pages | 8 + .../datasources/github-advisories.md | 40 + docs/reference/datasources/index.md | 34 + .../datasources/internal-components.md | 48 + docs/reference/datasources/nvd.md | 51 + docs/reference/datasources/osv.md | 53 + .../private-vulnerability-repository.md | 68 + docs/reference/datasources/repositories.md | 74 + docs/reference/file-formats.md | 63 + .../analyzers/analyzer-config_internal.png | Bin 0 -> 39973 bytes .../analyzers/analyzer-config_oss-index.png | Bin 0 -> 79626 bytes .../images/analyzers/analyzer-config_snyk.png | Bin 0 -> 81434 bytes .../analyzers/analyzer-config_trivy.png | Bin 0 -> 81663 bytes .../analyzers/analyzer-config_vulndb.png | Bin 0 -> 83897 bytes docs/reference/index.md | 67 +- docs/reference/notifications/.pages | 3 + .../notifications/filter-expressions.md | 183 + .../images/email-publisher-alert-config.png | Bin 0 -> 81502 bytes .../images/email-publisher-global-config.png | Bin 0 -> 44674 bytes .../images/filter-expression-editor-error.png | Bin 0 -> 30539 bytes .../images/filter-expression-editor.png | Bin 0 -> 25865 bytes .../images/jira-publisher-alert-config.png | Bin 0 -> 66928 bytes .../images/jira-publisher-global-config.png | Bin 0 -> 22231 bytes .../images/kafka-publisher-alert-config.png | Bin 0 -> 71691 bytes .../images/kafka-publisher-global-config.png | Bin 0 -> 48065 bytes docs/reference/notifications/publishers.md | 178 +- docs/reference/permissions.md | 110 +- docs/reference/schemas/.pages | 3 + docs/reference/schemas/notification.md | 1182 ++ docs/reference/schemas/policy.md | 235 + docs/reference/vulnerability-policies.md | 159 + 74 files changed, 22965 insertions(+), 197 deletions(-) create mode 100644 docs/concepts/access-control.md create mode 100644 docs/concepts/vulnerability-policies.md create mode 100644 docs/guides/administration/configuring-database.md create mode 100644 docs/guides/user/images/managing-vulnerability-policies/vuln-policies_bundles-modal.png create mode 100644 docs/guides/user/images/managing-vulnerability-policies/vuln-policies_editor_analysis.png create mode 100644 docs/guides/user/images/managing-vulnerability-policies/vuln-policies_editor_condition.png create mode 100644 docs/guides/user/images/managing-vulnerability-policies/vuln-policies_editor_general.png create mode 100644 docs/guides/user/images/managing-vulnerability-policies/vuln-policies_editor_ratings.png create mode 100644 docs/guides/user/images/managing-vulnerability-policies/vuln-policies_list.png create mode 100644 docs/guides/user/managing-private-vulnerabilities.md create mode 100644 docs/guides/user/managing-vulnerability-policies.md create mode 100644 docs/images/operations_database_pgtune.png create mode 100644 docs/images/reference/expression-condition.png create mode 100644 docs/reference/analyzers.md create mode 100644 docs/reference/api/.pages create mode 100644 docs/reference/api/openapi-v1.yaml create mode 100644 docs/reference/api/openapi-v2.yaml create mode 100644 docs/reference/api/v1.md create mode 100644 docs/reference/api/v2.md create mode 100644 docs/reference/badges.md create mode 100644 docs/reference/cel-expressions.md create mode 100644 docs/reference/community-integrations.md create mode 100644 docs/reference/configuration/.pages create mode 100644 docs/reference/configuration/dex-engine.md create mode 100644 docs/reference/datasources/.pages create mode 100644 docs/reference/datasources/github-advisories.md create mode 100644 docs/reference/datasources/index.md create mode 100644 docs/reference/datasources/internal-components.md create mode 100644 docs/reference/datasources/nvd.md create mode 100644 docs/reference/datasources/osv.md create mode 100644 docs/reference/datasources/private-vulnerability-repository.md create mode 100644 docs/reference/datasources/repositories.md create mode 100644 docs/reference/file-formats.md create mode 100644 docs/reference/images/analyzers/analyzer-config_internal.png create mode 100644 docs/reference/images/analyzers/analyzer-config_oss-index.png create mode 100644 docs/reference/images/analyzers/analyzer-config_snyk.png create mode 100644 docs/reference/images/analyzers/analyzer-config_trivy.png create mode 100644 docs/reference/images/analyzers/analyzer-config_vulndb.png create mode 100644 docs/reference/notifications/.pages create mode 100644 docs/reference/notifications/filter-expressions.md create mode 100644 docs/reference/notifications/images/email-publisher-alert-config.png create mode 100644 docs/reference/notifications/images/email-publisher-global-config.png create mode 100644 docs/reference/notifications/images/filter-expression-editor-error.png create mode 100644 docs/reference/notifications/images/filter-expression-editor.png create mode 100644 docs/reference/notifications/images/jira-publisher-alert-config.png create mode 100644 docs/reference/notifications/images/jira-publisher-global-config.png create mode 100644 docs/reference/notifications/images/kafka-publisher-alert-config.png create mode 100644 docs/reference/notifications/images/kafka-publisher-global-config.png create mode 100644 docs/reference/schemas/.pages create mode 100644 docs/reference/schemas/notification.md create mode 100644 docs/reference/schemas/policy.md create mode 100644 docs/reference/vulnerability-policies.md diff --git a/.markdownlint-cli2.yaml b/.markdownlint-cli2.yaml index 444a8262..d6a0e2c5 100644 --- a/.markdownlint-cli2.yaml +++ b/.markdownlint-cli2.yaml @@ -31,6 +31,8 @@ globs: ignores: - "docs/includes/**" +- "docs/reference/configuration/properties.md" +- "docs/reference/schemas/**" - "existing-docs/**" - "site/**" - "node_modules/**" diff --git a/.vale.ini b/.vale.ini index 13c058eb..2183c1f7 100644 --- a/.vale.ini +++ b/.vale.ini @@ -27,6 +27,12 @@ BasedOnStyles = Vale, Google, write-good, DependencyTrack [docs/**/*.md] BasedOnStyles = Vale, Google, write-good, DependencyTrack +# Ignore generated reference files. +[docs/reference/configuration/properties.md] +BasedOnStyles = +[docs/reference/schemas/*.md] +BasedOnStyles = + # MkDocs abbreviation syntax (*[ABBR]: Definition) triggers false positives # for the colon capitalization rule, since `: ` is a syntax delimiter. [docs/includes/abbreviations.md] diff --git a/.vale/styles/config/vocabularies/DependencyTrack/accept.txt b/.vale/styles/config/vocabularies/DependencyTrack/accept.txt index 22fefcf1..4a3eeaab 100644 --- a/.vale/styles/config/vocabularies/DependencyTrack/accept.txt +++ b/.vale/styles/config/vocabularies/DependencyTrack/accept.txt @@ -1,7 +1,14 @@ +(?i)superset +ACLs APIs +Aiven +Artifactory +Atlassian BOM BOMs Bento +CPEs +CWEs Cognito CycloneDX DEKs @@ -10,27 +17,59 @@ Dependency-Track Diataxis Entra Exploitability +Flashpoint GUIDs +HDDs +Hackage IdP IdP's IdPs +JFrog JWTs +Jira KEKs Keycloak LDAPS +Liquibase Mattermost MkDocs +Modus +ModusCreate +Modus[Cc]reate +NVME +Nixpkgs +Nixpkgs Novell OAuth OWASP OneLogin +Operandi +PGTune +Packagist +Percona PgBouncer +Postgres +Protobuf SBOM SBOMs +SSDs +Snyk +Sonatype +Timescale Tink +Trivy URIs +VDR VEX +VulnDB +Webex +[Aa]llowlist +[Aa]llowlists +[Aa]utodetect [Bb]ackpressure +[Bb]locklist +[Bb]locklists +[Bb]ooleans [Cc]onfig [Cc]onfigs [Cc]ron @@ -38,18 +77,35 @@ VEX [Dd]atasource [Dd]atasources [Dd]efault[Mm]ode +[Dd]eloyments +[Dd]eployments [Dd]ex +[Dd]tapac +[Ee]num +[Ff]ileset +[Jj]etstack [Kk]enna [Ll]iveness [Mm]icroservices +[Mm]ixeway +[Nn]amespace +[Nn]amespaces [Oo]utbox [Pp]luggable +[Pp]ooler [Rr]eadiness +[Rr]ollouts +[Ss]bomify [Ss]ubdomain +[Ss]uppressions [Tt]imespan [Tt]inkey +[Tt]riaged [Tt]ruststores +[Uu]nmanaged [Uu]nprefixed +[Vv]ers +[Vv]ulns apiserver autovacuum crypto @@ -57,7 +113,9 @@ eDirectory keyset keysets keytool +npm sAMAccountName truststore truststore walkthroughs +zstd diff --git a/.yamllint.yml b/.yamllint.yml index d0054466..8f8bb76a 100644 --- a/.yamllint.yml +++ b/.yamllint.yml @@ -22,6 +22,7 @@ ignore: - node_modules/ - .vale/styles/Google/ - .vale/styles/write-good/ +- docs/reference/api/*.yaml rules: document-start: disable diff --git a/docs/concepts/.pages b/docs/concepts/.pages index ba540a3d..a0c5ace1 100644 --- a/docs/concepts/.pages +++ b/docs/concepts/.pages @@ -1,4 +1,6 @@ title: Concepts nav: - index.md + - access-control.md + - vulnerability-policies.md - ... diff --git a/docs/concepts/access-control.md b/docs/concepts/access-control.md new file mode 100644 index 00000000..fe11b11d --- /dev/null +++ b/docs/concepts/access-control.md @@ -0,0 +1,67 @@ +# Access control + +Dependency-Track uses a role-based access control model built around **permissions**, +**teams**, and **users**. Teams hold permissions, and users inherit the +permissions of every team they belong to. + +## Users + +Three types of users exist: + +| Type | Description | +|:--------------|:--------------------------------------------------------------------------------------------------| +| Managed User | A local account created and managed within Dependency-Track. | +| LDAP User | Authenticated via an external LDAP directory. See [Configuring LDAP](../guides/administration/configuring-ldap.md). | +| OIDC User | Authenticated via an OpenID Connect identity provider. See [Configuring OIDC](../guides/administration/configuring-oidc.md). | + +All user types share the same permission model. The authentication mechanism determines +how the system verifies a user's identity, not what they can access. + +### LDAP authentication flow + +With LDAP, Dependency-Track authenticates users by performing a service-account +bind to locate the user's directory entry, then attempting a bind with the user's +own credentials to verify their password. On success, the system grants access. +With user provisioning turned on, Dependency-Track creates the account +automatically on first login. + +### OIDC authentication flow + +With OIDC, the frontend redirects the user to the identity provider's authorization +endpoint. After the user authenticates, the IdP returns an ID token to the frontend, +which forwards it to the API server for validation. The API server verifies the token +against the IdP's discovery endpoint and extracts the username from the configured +claim. With user provisioning turned on, Dependency-Track creates accounts on +first login. + +## Teams + +A team is a named collection of users and API keys. Teams hold permissions directly; +individual users do not. This makes it straightforward to manage access for groups of +people (for example, *Security Engineers*, *Developers*, *CI/CD Pipelines*) or automated systems. + +A user can belong to more than one team and inherits the union of all permissions from +every team they are a member of. + +API keys belong to a team and carry the same permissions as that team. They authenticate +automated access (CI/CD pipelines, integrations) without associating requests with a +specific human user. + +## Portfolio access control + +By default, all teams with `VIEW_PORTFOLIO` can see every project. Access Control Lists +(ACLs) restrict portfolio visibility so that a team can only see the projects explicitly +assigned to it. + +Enable ACLs in **Administration > Access Management > Portfolio Access Control**. +Once active, every project must be explicitly assigned to at least one team for it to +be visible to non-administrator users. + +ACLs are most useful in multi-tenant scenarios where different teams should not see +each other's projects. For single-team or open environments, ACLs add management +overhead without security benefit. + +## Further reading + +* [Permissions reference](../reference/permissions.md) for the full permissions table + and default teams. diff --git a/docs/concepts/vulnerability-policies.md b/docs/concepts/vulnerability-policies.md new file mode 100644 index 00000000..27f404bf --- /dev/null +++ b/docs/concepts/vulnerability-policies.md @@ -0,0 +1,83 @@ +# Vulnerability policies + +Vulnerability policies let organisations encode how specific vulnerabilities should be triaged across +the portfolio. Where a [standard policy](../reference/vulnerability-policies.md) raises violations, a vulnerability policy acts +on the finding itself. It applies an analysis (state, justification, vendor response, details), +optionally overrides the vulnerability's ratings, and can suppress the finding altogether. + +Typical use cases include: + +* Suppress a CVE that has been assessed as not applicable to a given component or project. +* Downgrade or upgrade a vulnerability's severity based on organisational context. +* Centralise triage decisions so that every project benefits from them automatically, including + projects imported in the future. + +Policies are evaluated every time a project's vulnerabilities are analysed. Analyses applied by a +policy populate the finding's audit trail in the same way as a manual analysis. + +## Why Not VEX? + +[CycloneDX VEX] and [VDR] can also communicate triage decisions. Vulnerability policies complement them +rather than replace them. The important differences are: + +* **VEX analyses are static.** A VEX statement records a decision for a specific finding at a specific + point in time. Vulnerability policies are rules. A single policy can match many findings now and in + the future, based on conditions such as component version ranges, project tags, or dependency graph + relationships. +* **VEX cannot express constraints.** A policy condition can say "apply this decision only while the + affected component is reached through Spring Cloud" or "only for projects tagged `3rd-party`". VEX + cannot do this. +* **VEX has no built-in expiration or scope change.** A policy has a validity window and can be edited + or removed centrally. When it stops matching, the analyses it applied are automatically reverted. + +## Policy Sources + +A vulnerability policy originates from one of two sources: + +* **User-managed** policies are created and edited directly in Dependency-Track. They can be modified + or deleted at any time. +* **Bundle-managed** policies are synchronised from a remote ZIP archive of YAML files. They appear + with a lock icon and cannot be edited or deleted in the UI. To change a bundle policy, edit it in + its source repository and re-sync the bundle. + +Both sources share a single namespace. Policy names are globally unique across user-managed and +bundle-managed policies. If a bundle sync encounters a policy whose name is already taken by a +user-managed policy, the sync fails rather than silently overwriting either side. + +## Evaluation + +Each policy is evaluated once per `(component, vulnerability)` pair. When multiple policies match the +same finding, the policy with the highest `priority` value wins, and only its analysis and ratings are +applied. When two or more matching policies have the same priority, the policy that was created first +wins. + +### Validity Window + +A policy is evaluated only while the current time falls within its *Valid From* and *Valid Until* +timestamps. Both bounds are optional. A policy with neither bound is always active. + +When a policy leaves its validity window (for example because *Valid Until* has elapsed, or because the +policy is deleted), any analyses and rating overrides that were applied by it are automatically +reverted on the next evaluation. The finding returns to whatever state it would have without the policy, +or to the decision of the next-highest-priority policy that still matches. This makes it safe to use +time-bounded policies for temporary suppressions, embargoes, or phased rollouts. + +### Operation Modes + +Every policy has an operation mode that determines what happens when its condition matches. +Refer to the [operation modes reference](../reference/vulnerability-policies.md#operation-modes) +for the full list. + +*Log* mode is particularly useful when introducing a new policy. It lets you observe how often a +policy would match without risking unintended suppression of real findings. Once confident, switch +to *Apply*. + +## Further Reading + +* [Vulnerability policies reference](../reference/vulnerability-policies.md) for field + definitions, condition variables, the bundle YAML schema, and sync rules. +* [Managing vulnerability policies](../guides/user/managing-vulnerability-policies.md) + for step-by-step procedures. + +[CycloneDX VEX]: https://cyclonedx.org/capabilities/vex/ +[VDR]: https://cyclonedx.org/capabilities/vdr/ diff --git a/docs/guides/administration/.pages b/docs/guides/administration/.pages index 969861f0..0bc4e770 100644 --- a/docs/guides/administration/.pages +++ b/docs/guides/administration/.pages @@ -1,10 +1,11 @@ title: Administration Guides nav: - index.md - - scaling.md + - configuring-database.md - configuring-observability.md - configuring-ldap.md - configuring-oidc.md - configuring-internal-ca.md - configuring-secret-management.md + - scaling.md - migrating-from-v4.md diff --git a/docs/guides/administration/configuring-database.md b/docs/guides/administration/configuring-database.md new file mode 100644 index 00000000..8735d2e3 --- /dev/null +++ b/docs/guides/administration/configuring-database.md @@ -0,0 +1,256 @@ +# Configuring the database + +This guide covers choosing, deploying, and tuning a PostgreSQL database for +Dependency-Track. For the technical specification (version requirements, required +extensions, tuning parameters), see the +[database reference](../../reference/configuration/database.md). + +## Choosing a hosting solution + +Depending on available resources, individual preferences, or organizational policies, +you will have to choose between a managed or self-hosted solution. + +### Managed solutions + +The official PostgreSQL website hosts a [list of well-known commercial hosting providers]. + +Popular choices include: + +* [Amazon RDS for PostgreSQL](https://aws.amazon.com/rds/postgresql/) +* [Aiven for PostgreSQL](https://aiven.io/postgresql) +* [Azure Database for PostgreSQL](https://azure.microsoft.com/en-us/products/postgresql/) +* [Google Cloud SQL for PostgreSQL](https://cloud.google.com/sql/docs/postgres/) + +We are not actively testing against cloud offerings. But as a rule of thumb, solutions offering "vanilla" PostgreSQL, +or extensions of it (for example [Neon] or [Timescale]), will most definitely work with Dependency-Track. + +The same is not necessarily true for platforms based on heavily modified PostgreSQL, or even entire re-implementations +such as [CockroachDB] or [YugabyteDB]. Such solutions make certain trade-offs to achieve higher levels of scalability, +which might impact functionality that Dependency-Track relies on. If you'd like to see support for those, please [let us know]. + +### Self-hosting + +#### Bare Metal / Docker + +For Docker deployments, use the official [`postgres`](https://hub.docker.com/_/postgres) image. + +!!! warning + Do **not** use the `latest` tag. You may end up doing a major version upgrade without knowing it, + ultimately breaking your database. Pin the tag to at least the major version (for example, `16`), or better + yet the minor version (for example, `16.2`). Refer to [Upgrades](#upgrades) for upgrade instructions. + +For bare metal deployments, it's usually best to install PostgreSQL from your distribution's package repository. +See for example: + +* [PostgreSQL instructions for Debian](https://wiki.debian.org/PostgreSql) +* [Install and configure PostgreSQL on Ubuntu](https://ubuntu.com/server/docs/databases-postgresql) +* [Using PostgreSQL with Red Hat Enterprise Linux](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/configuring_and_using_database_servers/using-postgresql_configuring-and-using-database-servers) + +To get the most out of your Dependency-Track installation, we recommend to run PostgreSQL on a separate machine +than the application containers. You want PostgreSQL to be able to leverage the entire machine's resources, +without being impacted by other applications. + +For smaller and non-critical deployments, it is totally fine to run everything on a single machine. + +#### Upgrades + +Follow the [official upgrading guide]. Be sure to select the version of the documentation that corresponds to the +PostgreSQL version you are running. + +!!! warning + Pay attention to the fact that **major version upgrades usually require a backup-and-restore cycle**, due to potentially + breaking changes in the underlying data storage format. Minor version upgrades are usually safe to perform in a + rolling manner. + +#### Kubernetes + +We generally advise **against** running PostgreSQL on Kubernetes, unless you *really* know what you're doing. +Wielding heavy machinery such as [Postgres Operator] is not something to do lightheartedly. + +If you know what you're doing, you definitely don't need advice from us. + +## Basic tuning + +You should be aware that the default PostgreSQL configuration is *extremely* conservative. +It is intended to make PostgreSQL usable on minimal hardware, which is great for testing, +but can seriously cripple performance in production environments. +Not adjusting it to your specific setup will most certainly leave performance on the table. + +If you're lucky enough to have access to professional database administrators, ask them for help. +They will know your organisation's best practices and can guide you in adjusting it for Dependency-Track. + +If you're not as lucky, we can wholeheartedly recommend [PGTune]. Given a bit of basic info about your system, +it will provide a sensible baseline configuration. For the *DB Type* option, select `Online transaction processing system`. + +![Example output of PGTune](../../images/operations_database_pgtune.png) + +The `postgresql.conf` is usually located at `/var/lib/postgresql/data/postgresql.conf`. +Most of these settings require a restart of the application. + +In a Docker Compose setup, you can alternatively apply the desired configuration via command line flags. +For example: + +```yaml +services: + postgres: + image: postgres:17 + command: >- + -c 'shared_buffers=2GB' + -c 'effective_cache_size=6GB' +``` + +## Advanced tuning + +For larger deployments, you may eventually run into situations where database performance degrades +with just the basic configuration applied. Oftentimes, tweaking advanced settings can resolve +such problems. But knowing which knobs to turn is a challenge in itself. + +If you happen to be in this situation, make sure you have database monitoring set up. +Changing advanced configuration options blindly can potentially cause more damage than it helps. + +Below, you'll find a few options that, based on our observations with large-scale deployments, +make sense to tweak. Refer to the +[database reference](../../reference/configuration/database.md#tuning-parameters) for the parameter +specifications. + +!!! note + Got more tips to configure or tune PostgreSQL, that may be helpful to others? + We'd love to include it in the docs. Please raise a PR. + +### `autovacuum_vacuum_scale_factor` + +The default causes [autovacuum][Autovacuum] to start way too late on large tables with lots of churn, +yielding long execution times. Reduction in scale factor causes autovacuum to happen more often, +making each execution less time-intensive. + +The `COMPONENT` table is very frequently inserted into, updated, and deleted from. +This causes lots of dead tuples that PostgreSQL needs to clean up. Because autovacuum also performs +[`ANALYZE`](https://www.postgresql.org/docs/current/sql-analyze.html), slow vacuuming can cause the +query planner to choose inefficient execution plans. + +```sql +ALTER TABLE "COMPONENT" SET (AUTOVACUUM_VACUUM_SCALE_FACTOR = 0.02); +``` + +### `default_toast_compression` + +`lz4` compression is faster and more efficient than `pglz`, +at the expense of slightly worse compression ratios. + +Consider switching to lz4 if you're more likely to be limited +by CPU utilisation than storage space. + +```sql +ALTER SYSTEM SET (DEFAULT_TOAST_COMPRESSION = 'lz4'); +``` + +### `wal_compression` + +Enabling WAL compression significantly reduces I/O on write-heavy systems. +The cost of slightly increased CPU utilisation is more than worth it. + +If your instance is importing BOMs in large volumes and / or high frequency, +the WAL will fill up fast, and you'll find yourself limited by I/O. +This is particularly true when using HDDs instead of SSDs or NVME storage. + +```sql +ALTER SYSTEM SET (WAL_COMPRESSION = 'zstd'); +``` + +## Centralised connection pooling + +For large deployments (that is, upwards of 5 instances), it can become undesirable for +each instance to maintain its own connection pool. In this case, you can leverage +centralised connection pools such as [PgBouncer]. + +!!! warning + When using a central connection pooler, you **must** disable local connection pooling + for all data sources, using [`dt.datasource..pool.enabled=false`](../../reference/configuration/properties.md#dtdatasourcepoolenabled). + +### Constraints + +Before proceeding, take note of the following constraints: + +* Only `session` and `transaction` pooling modes are supported. `transaction` is recommended. +* Initialisation tasks, which include database migrations, **must** connect to the + database directly, bypassing the connection pooler, when using pooling mode `transaction`. + * To prevent concurrent initialisation, session-level PostgreSQL advisory locks are used, + which are not supported with the `transaction` pooling mode. + * To facilitate this, initialisation tasks can be executed in dedicated containers, + and / or using separate data sources. + +### Example + +```yaml linenums="1" +services: + postgres: + image: postgres + environment: + POSTGRES_DB: "dtrack" + POSTGRES_USER: "dtrack" + POSTGRES_PASSWORD: "dtrack" + + pgbouncer: + image: bitnami/pgbouncer + environment: + POSTGRESQL_HOST: "postgres" + POSTGRESQL_PORT: "5432" + POSTGRESQL_USERNAME: "dtrack" + POSTGRESQL_PASSWORD: "dtrack" + POSTGRESQL_DATABASE: "dtrack" + PGBOUNCER_DATABASE: "dtrack" + PGBOUNCER_PORT: "6432" + PGBOUNCER_POOL_MODE: "transaction" + PGBOUNCER_DEFAULT_POOL_SIZE: "30" + + apiserver: + image: ghcr.io/dependencytrack/hyades-apiserver + environment: + # Configure the default data source: + # - Points to PgBouncer, NOT Postgres directly. + # - Pooling is DISABLED. + DT_DATASOURCE_URL: "jdbc:postgresql://pgbouncer:6432/dtrack" + DT_DATASOURCE_USERNAME: "dtrack" + DT_DATASOURCE_PASSWORD: "dtrack" + DT_DATASOURCE_POOL_ENABLED: "false" + # Configure the data source for initialisation tasks: + # - Points to Postgres directly, NOT PgBouncer. + # - Pooling is DISABLED. + DT_DATASOURCE_INIT_URL: "jdbc:postgresql://postgres:5432/dtrack" + DT_DATASOURCE_INIT_USERNAME: "dtrack" + DT_DATASOURCE_INIT_PASSWORD: "dtrack" + DT_DATASOURCE_INIT_POOL_ENABLED: "false" + # Configure initialisation tasks to use the above data source. + DT_INIT_TASKS_DATASOURCE_NAME: "init" +``` + +## Schema migration credentials + +It is possible to use different credentials for migrations than for the application itself. +This can be achieved by configuring a separate data source, and instructing the init tasks to use it: + +```ini linenums="1" +# Configure a data source named "init-tasks". +dt.datasource.init-tasks.url=jdbc:postgresql://localhost:5432/dtrack +dt.datasource.init-tasks.username=my-init-task-user +dt.datasource.init-tasks.password=my-init-task-pass + +# Configure init tasks to use the data source. +init.tasks.datasource.name=init-tasks + +# If the data source is only meant for init tasks, there is no need to +# keep it around after the tasks completed. +init.tasks.datasource.close-after-use=true +``` + +[Autovacuum]: https://www.postgresql.org/docs/current/routine-vacuuming.html +[CockroachDB]: https://www.cockroachlabs.com/ +[Neon]: https://neon.tech/ +[PGTune]: https://pgtune.leopard.in.ua/ +[PgBouncer]: https://www.pgbouncer.org/ +[Postgres Operator]: https://github.com/zalando/postgres-operator +[Timescale]: https://www.timescale.com/ +[YugabyteDB]: https://www.yugabyte.com/ +[let us know]: https://github.com/DependencyTrack/hyades/issues/new?assignees=&labels=enhancement&projects=&template=enhancement-request.yml +[list of well-known commercial hosting providers]: https://www.postgresql.org/support/professional_hosting/ +[official upgrading guide]: https://www.postgresql.org/docs/current/upgrading.html diff --git a/docs/guides/administration/configuring-ldap.md b/docs/guides/administration/configuring-ldap.md index 847cdcb3..5fd9aac5 100644 --- a/docs/guides/administration/configuring-ldap.md +++ b/docs/guides/administration/configuring-ldap.md @@ -4,15 +4,6 @@ Dependency-Track can authenticate users against an LDAP directory such as Micros Active Directory, ApacheDS, or any other LDAP-compatible server. Once enabled, users log in with their directory credentials rather than a locally managed password. -## How LDAP authentication works - -1. The user enters their credentials on the Dependency-Track login page. -2. Dependency-Track binds to the LDAP server using the configured service account. -3. The user's entry is located in the directory using the configured username format. -4. A bind attempt is made with the user's credentials to verify their password. -5. If successful, the user is granted access. If [user provisioning](#user-provisioning) - is enabled, their account is created automatically on first login. - ## Prerequisites - A service account in the LDAP directory with read access to users and groups. diff --git a/docs/guides/administration/configuring-observability.md b/docs/guides/administration/configuring-observability.md index 1d7ca42d..b5a1e2d4 100644 --- a/docs/guides/administration/configuring-observability.md +++ b/docs/guides/administration/configuring-observability.md @@ -1,66 +1,94 @@ # Configuring observability -Dependency-Track exposes health check and metrics endpoints via a dedicated management server. -It runs on a separate port, and potentially different bind address, independently of the main app server. - -The management server's bind address and port are configurable: - -- [`dt.management.host`](../../reference/configuration/properties.md#dtmanagementhost) (default: `0.0.0.0`) -- [`dt.management.port`](../../reference/configuration/properties.md#dtmanagementport) (default: `9000`) +Dependency-Track exposes health check and metrics endpoints via a dedicated management server, +running on a separate port independently of the main app server. !!! tip All observability-related configuration properties are documented in the [configuration reference](../../reference/configuration/properties.md), under the *Observability* category. -## Health checks - -Health check endpoints follow the [MicroProfile Health] specification. -They return JSON responses with an overall `status` (`UP` or `DOWN`) -and individual check results. The HTTP status code is `200` when healthy, `503` otherwise. - -The following endpoints are available on the management server: - -| Endpoint | Description | -|:------------------|:--------------------------------------| -| `/health` | Aggregate status of all health checks | -| `/health/live` | Liveness checks | -| `/health/ready` | Readiness checks | -| `/health/started` | Startup checks | - -These endpoints map directly to Kubernetes [probe types] and can be used as-is -in `livenessProbe`, `readinessProbe`, and `startupProbe` configurations. +## Configuring Kubernetes health probes + +The management server exposes health check endpoints that follow the [MicroProfile Health] +specification and map directly to Kubernetes [probe types]. + +Add the following probes to your Deployment manifest, adjusting the port if you changed +[`dt.management.port`](../../reference/configuration/properties.md#dtmanagementport) +(default: `9000`): + +```yaml linenums="1" +containers: + - name: apiserver + livenessProbe: + httpGet: + path: /health/live + port: 9000 + initialDelaySeconds: 15 + periodSeconds: 10 + readinessProbe: + httpGet: + path: /health/ready + port: 9000 + initialDelaySeconds: 15 + periodSeconds: 10 + startupProbe: + httpGet: + path: /health/started + port: 9000 + initialDelaySeconds: 10 + failureThreshold: 30 + periodSeconds: 5 +``` -## Metrics +The aggregate endpoint `/health` returns the combined status of all checks. -When enabled, Prometheus metrics are served at the `/metrics` endpoint of the management server, -using the [Prometheus text exposition format]. +## Enabling Prometheus metrics scraping -Metrics are off by default. Enable them via -[`dt.metrics.enabled`](../../reference/configuration/properties.md#dtmetricsenabled). +Metrics are disabled by default. Enable them via +[`dt.metrics.enabled`](../../reference/configuration/properties.md#dtmetricsenabled): -Access to the metrics endpoint can optionally be protected with HTTP Basic authentication: +```ini +dt.metrics.enabled=true +``` -- [`dt.metrics.auth.username`](../../reference/configuration/properties.md#dtmetricsauthusername) -- [`dt.metrics.auth.password`](../../reference/configuration/properties.md#dtmetricsauthpassword) +Once enabled, metrics are served at `/metrics` on the management port in the +[Prometheus text exposition format]. + +If you want to protect the endpoint with HTTP Basic authentication, set both +[`dt.metrics.auth.username`](../../reference/configuration/properties.md#dtmetricsauthusername) and +[`dt.metrics.auth.password`](../../reference/configuration/properties.md#dtmetricsauthpassword). + +Add a scrape target to your Prometheus configuration: + +```yaml linenums="1" +scrape_configs: + - job_name: dependency-track + metrics_path: /metrics + static_configs: + - targets: + - "apiserver:9000" + # Uncomment if you enabled authentication: + # basic_auth: + # username: "metrics" + # password: "changeme" +``` -Both must be set for authentication to take effect. +## Adjusting log levels -## Logging +By default, Dependency-Track logs at `INFO` level for application loggers and `WARN` for all others. +To troubleshoot a specific area, raise the log level for the relevant logger: -By default, Dependency-Track logs at `INFO` level for app loggers (`alpine`, `org.dependencytrack`, -`org.eclipse.jetty`) and `WARN` for all others. +```properties +dt.logging.level."org.dependencytrack"=DEBUG +``` -Log levels can be configured per logger as follows: +The special logger name `ROOT` applies to all loggers that are not explicitly configured: ```properties -dt.logging.level."org.dependencytrack"=DEBUG -dt.logging.level."org.eclipse.jetty"=WARN dt.logging.level."ROOT"=ERROR ``` -The special logger name `ROOT` applies to all loggers that are not explicitly configured. - Refer to the [environment variable mapping](../../reference/configuration/application.md#environment-variable-mapping) documentation for how to express these properties as environment variables. diff --git a/docs/guides/administration/configuring-oidc.md b/docs/guides/administration/configuring-oidc.md index c7334c85..659fbea5 100644 --- a/docs/guides/administration/configuring-oidc.md +++ b/docs/guides/administration/configuring-oidc.md @@ -9,17 +9,6 @@ locally managed password. The API server validates tokens; the frontend initiates the OIDC flow. Both must be configured with the same issuer and client ID. -## How OIDC authentication works - -1. The user clicks the **Login with SSO** button on the Dependency-Track frontend. -2. The frontend redirects to the IdP's authorization endpoint. -3. The user authenticates with the IdP and is redirected back with an ID token. -4. The frontend passes the ID token to the API server for validation. -5. The API server verifies the token against the IdP's discovery endpoint and extracts - the username from the configured claim. -6. If [user provisioning](#user-provisioning) is enabled, the account is created on - first login. Otherwise the account must exist in advance. - ## Prerequisites - An OIDC-compatible identity provider with a configured client (app). diff --git a/docs/guides/administration/configuring-secret-management.md b/docs/guides/administration/configuring-secret-management.md index ff7621a8..7780d37a 100644 --- a/docs/guides/administration/configuring-secret-management.md +++ b/docs/guides/administration/configuring-secret-management.md @@ -40,41 +40,15 @@ The provider may be configured using the following properties: #### Key management -Encryption of secrets involves two types of keys: +Secrets are encrypted using [envelope encryption]: each secret gets its own +data encryption key (DEK), which is itself encrypted by a key encryption key (KEK). +The KEK is stored in a [keyset][keysets] file managed by [Google Tink]. -* The key encryption key (KEK) -* Data encryption keys (DEKs) - -When creating a secret, Dependency-Track generates a new DEK, -and encrypts the secret value with it. It then encrypts the DEK -with the KEK. Both the encrypted DEK and the encrypted secret value -are then stored in the database. - -!!! info - The encrypted DEK is [tagged](https://developers.google.com/tink/design/keysets#keyids) - with the ID of the KEK that encrypted it. - -When reading a secret, the encrypted DEK and encrypted secret value -are read from the database. The DEK is then decrypted with the KEK, -which then allows the secret value to be decrypted using the DEK. - -Dependency-Track uses [Google Tink]'s concept of [keysets] -to enable rotation of KEKs. A KEK keyset is created automatically -on startup. Or, a [manually created keyset](#creating-kek-keysets) -may be provided. - -The KEK keyset uses [Google Tink]'s JSON serialization, -and is not encrypted itself. For production deployments, -**mount the KEK keyset at runtime** using +A KEK keyset is created automatically on startup, or a +[manually created keyset](#creating-kek-keysets) may be provided. +For production deployments, **mount the KEK keyset at runtime** using [Kubernetes secrets] or similar mechanisms, and ensure that the keyset file is only readable by the app user. -Refer to [Creating KEK keysets](#creating-kek-keysets) for an example. - -!!! note - [Google Tink] [supports](https://developers.google.com/tink/key-management-overview#create_kek) - a small selection of key management systems (KMS), which may be used to manage the KEK keyset. - Dependency-Track does not yet use this capability. If this is important to you, - please raise an enhancement request. #### Config-based KEK diff --git a/docs/guides/administration/scaling.md b/docs/guides/administration/scaling.md index 9f1d8aee..d021b60d 100644 --- a/docs/guides/administration/scaling.md +++ b/docs/guides/administration/scaling.md @@ -8,9 +8,10 @@ adding instances, splitting workloads, and tuning concurrency. Deploy multiple instances pointing at the same database. No additional infrastructure (message brokers, caches, etc.) is needed. -Work distribution is handled by the embedded [durable execution engine](../../concepts/architecture/design/durable-execution.md). -Lease-based leader election ensures single-instance operations (scheduling, maintenance) -run on exactly one node. All other work is distributed across the cluster automatically. +Work distribution is handled by the embedded +[durable execution engine](../../concepts/architecture/design/durable-execution.md). +All work is distributed across the cluster automatically; single-instance +operations (scheduling, maintenance) are handled via leader election. ### File storage @@ -62,68 +63,34 @@ services: ## Concurrency control Task execution concurrency can be controlled at two levels: -local (per-instance) and global (cluster-wide). Both complement each other: -queue capacity controls how much work is queued, while worker concurrency -controls how fast that work is processed. +local (per-instance) and global (cluster-wide). For a detailed explanation, refer to the [durable execution design doc](../../concepts/architecture/design/durable-execution.md#concurrency-control). ### Local (worker concurrency) -Each worker limits how many tasks it processes concurrently, per instance. +Each worker limits how many tasks it processes concurrently per instance. Isolated task queues prevent one workload from starving others. -Workers are configured via: - -```ini -dt.dex-engine...max-concurrency= -``` - -Where `` is either `workflow-worker` or `activity-worker`. - -| Worker Type | Worker Name | Queue | Default Concurrency | -|-------------------|--------------------------------|---------------------------------|--------------------:| -| `workflow-worker` | `default` | `default` | 100 | -| `activity-worker` | `default` | `default` | 25 | -| `activity-worker` | `vuln-analysis` | `vuln-analyses` | 10 | -| `activity-worker` | `artifact-import` | `artifact-imports` | 10 | -| `activity-worker` | `package-metadata-resolution` | `package-metadata-resolutions` | 10 | -| `activity-worker` | `notification` | `notifications` | 5 | -| `activity-worker` | `vuln-analysis-reconciliation` | `vuln-analysis-reconciliations` | 5 | -| `activity-worker` | `policy-evaluation` | `policy-evaluations` | 5 | -| `activity-worker` | `metrics-update` | `metrics-updates` | 5 | - For example, to increase vulnerability analysis concurrency to 20: ```ini dt.dex-engine.activity-worker.vuln-analysis.max-concurrency=20 ``` +For all available workers, queues, and their defaults, see the +[dex engine reference](../../reference/configuration/dex-engine.md#workers). + ### Global (queue capacity) Task queue capacity limits how many tasks can be pending across the entire cluster. -When a queue reaches capacity, the scheduler stops creating new tasks for that queue, -providing backpressure. Workflow runs remain in their current state until capacity -becomes available. - -The default capacities are: - -| Type | Queue | Default Capacity | -|------------|---------------------------------|-----------------:| -| `workflow` | `default` | 1000 | -| `activity` | `default` | 1000 | -| `activity` | `artifact-imports` | 25 | -| `activity` | `metrics-updates` | 25 | -| `activity` | `notifications` | 25 | -| `activity` | `package-metadata-resolutions` | 25 | -| `activity` | `policy-evaluations` | 25 | -| `activity` | `vuln-analyses` | 25 | -| `activity` | `vuln-analysis-reconciliations` | 25 | +When a queue reaches capacity, the scheduler provides backpressure by pausing +new task creation. Queue capacity is modifiable at runtime in the administrator panel under *Workflows* -> *Task Queues*, -or via REST API. As last resort, it can be controlled by directly modifying the -`dex_workflow_task_queue` and `dex_activity_task_queue` database tables. +or via REST API. For default capacities, see the +[dex engine reference](../../reference/configuration/dex-engine.md#task-queues). ## Vertical scaling @@ -153,56 +120,37 @@ More CPU benefits worker throughput; more memory benefits caching and large BOM ### Buffers -The durable execution engine batches certain write operations to reduce database -round-trips. Each buffer has a configurable flush interval and max batch size. - +The durable execution engine batches write operations to reduce database round-trips. Increasing flush intervals and batch sizes improves throughput at the cost of -higher end-to-end latency. Decreasing them reduces latency but increases -database load. Should generally not be modified unless evidence suggests +higher end-to-end latency. Should generally not be modified unless evidence suggests that the defaults are problematic. -Configuration: - -- [`dt.dex-engine.task-event-buffer.flush-interval-ms`](../../reference/configuration/properties.md#dtdex-enginetask-event-bufferflush-interval-ms) -- [`dt.dex-engine.task-event-buffer.max-batch-size`](../../reference/configuration/properties.md#dtdex-enginetask-event-buffermax-batch-size) -- [`dt.dex-engine.external-event-buffer.flush-interval-ms`](../../reference/configuration/properties.md#dtdex-engineexternal-event-bufferflush-interval-ms) -- [`dt.dex-engine.external-event-buffer.max-batch-size`](../../reference/configuration/properties.md#dtdex-engineexternal-event-buffermax-batch-size) -- [`dt.dex-engine.activity-task-heartbeat-buffer.flush-interval-ms`](../../reference/configuration/properties.md#dtdex-engineactivity-task-heartbeat-bufferflush-interval-ms) -- [`dt.dex-engine.activity-task-heartbeat-buffer.max-batch-size`](../../reference/configuration/properties.md#dtdex-engineactivity-task-heartbeat-buffermax-batch-size) +Refer to the buffer properties in the +[configuration reference](../../reference/configuration/properties.md#dtdex-enginetask-event-bufferflush-interval-ms). ### Run history cache Workflow run event histories are cached in memory to avoid redundant database reads -during replay. Increase `max-size` on worker nodes with high workflow concurrency. -This trades memory for reduced database load. +during replay. Increase `max-size` on worker nodes with high workflow concurrency +to trade memory for reduced database load. -Configuration: - -- [`dt.dex-engine.run-history-cache.max-size`](../../reference/configuration/properties.md#dtdex-enginerun-history-cachemax-size) -- [`dt.dex-engine.run-history-cache.evict-after-access-ms`](../../reference/configuration/properties.md#dtdex-enginerun-history-cacheevict-after-access-ms) +Refer to [`dt.dex-engine.run-history-cache.*`](../../reference/configuration/properties.md#dtdex-enginerun-history-cachemax-size). ### Maintenance The maintenance worker periodically deletes completed workflow runs. At high volume, completed runs accumulate and can increase vacuum and WAL pressure. -Shortening retention or increasing batch size can help keep the database lean, -but larger deletion batches cause more I/O per maintenance cycle. - -Configuration: +Shortening retention or increasing batch size can help keep the database lean. -- [`dt.dex-engine.maintenance.run-retention-duration`](../../reference/configuration/properties.md#dtdex-enginemaintenancerun-retention-duration) -- [`dt.dex-engine.maintenance.run-deletion-batch-size`](../../reference/configuration/properties.md#dtdex-enginemaintenancerun-deletion-batch-size) +Refer to [`dt.dex-engine.maintenance.*`](../../reference/configuration/properties.md#dtdex-enginemaintenancerun-retention-duration). ### Notification outbox relay The outbox relay polls for pending notifications and submits them for publishing. -Increase `batch-size` for environments with high notification volume. -Decrease `poll-interval-ms` for lower notification latency. - -Configuration: +Increase `batch-size` for high notification volume, or decrease `poll-interval-ms` +for lower latency. -- [`notification.outbox-relay.poll-interval-ms`](../../reference/configuration/properties.md#dtnotificationoutbox-relaypoll-interval-ms) -- [`notification.outbox-relay.batch-size`](../../reference/configuration/properties.md#dtnotificationoutbox-relaybatch-size) +Refer to [`notification.outbox-relay.*`](../../reference/configuration/properties.md#dtnotificationoutbox-relaypoll-interval-ms). ## Separate database for dex @@ -240,10 +188,11 @@ and background processing. - **5+ instances**: Consider centralised pooling (for example, PgBouncer) and turn off local pooling. - Ensure PostgreSQL's `max_connections` accounts for the sum of all pools. -Refer to [Data Sources - Connection Pooling](../../reference/configuration/datasources.md#connection-pooling) for details. +Refer to [Data Sources](../../reference/configuration/datasources.md#connection-pool-properties) for pool properties, +and [Centralised connection pooling](configuring-database.md#centralised-connection-pooling) for PgBouncer setup. ## Database tuning PostgreSQL tuning (autovacuum, WAL compression, `shared_buffers`, etc.) can -impact performance at scale. Refer to [Database](../../reference/configuration/database.md) -for recommendations. +impact performance at scale. Refer to [Configuring the database](configuring-database.md) +for tuning recommendations. diff --git a/docs/guides/upgrading/v0.7.0.md b/docs/guides/upgrading/v0.7.0.md index b73ebc00..7a8fa459 100644 --- a/docs/guides/upgrading/v0.7.0.md +++ b/docs/guides/upgrading/v0.7.0.md @@ -156,12 +156,12 @@ * **The `LOGGING_LEVEL` environment variable has been removed**. Log levels are now configured via `dt.logging.level.""` per-logger properties. - Refer to the [logging documentation](../administration/configuring-observability.md#logging) for details. + Refer to the [logging documentation](../administration/configuring-observability.md#adjusting-log-levels) for details. * The following init task configurations have been removed and replaced with `init.tasks.datasource.name`: * `init.tasks.database.url` * `init.tasks.database.username` * `init.tasks.database.password` -* Refer to the [schema migrations](../../reference/configuration/database.md#schema-migrations) documentation +* Refer to [schema migration credentials](../administration/configuring-database.md#schema-migration-credentials) for an example of how to run init tasks with separate database credentials. [hyades/#1910]: https://github.com/DependencyTrack/hyades/issues/1910 diff --git a/docs/guides/user/.pages b/docs/guides/user/.pages index 50b8575f..23a47a5f 100644 --- a/docs/guides/user/.pages +++ b/docs/guides/user/.pages @@ -2,3 +2,5 @@ title: User Guides nav: - index.md - managing-secrets.md + - managing-vulnerability-policies.md + - managing-private-vulnerabilities.md diff --git a/docs/guides/user/images/managing-vulnerability-policies/vuln-policies_bundles-modal.png b/docs/guides/user/images/managing-vulnerability-policies/vuln-policies_bundles-modal.png new file mode 100644 index 0000000000000000000000000000000000000000..1a6c32ed008a02776f0b2b90da7019bee41529cb GIT binary patch literal 25483 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 BA-Mnm literal 0 HcmV?d00001 diff --git a/docs/guides/user/images/managing-vulnerability-policies/vuln-policies_editor_analysis.png b/docs/guides/user/images/managing-vulnerability-policies/vuln-policies_editor_analysis.png new file mode 100644 index 0000000000000000000000000000000000000000..5242e417890f798579a835aac823f8aa06f52066 GIT binary patch literal 33465 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¥465Yd_JhAsf{#8Vuap~)`IHiA8 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 literal 0 HcmV?d00001 diff --git a/docs/guides/user/images/managing-vulnerability-policies/vuln-policies_editor_general.png b/docs/guides/user/images/managing-vulnerability-policies/vuln-policies_editor_general.png new file mode 100644 index 0000000000000000000000000000000000000000..6b0be768b0a22effd8b90d42a7a68735bcaa00a7 GIT binary patch literal 39909 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 A2LJ#7 literal 0 HcmV?d00001 diff --git a/docs/guides/user/images/managing-vulnerability-policies/vuln-policies_list.png b/docs/guides/user/images/managing-vulnerability-policies/vuln-policies_list.png new file mode 100644 index 0000000000000000000000000000000000000000..cc5c961d654be237496e5606d0b6516914f2a061 GIT binary patch literal 41728 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%0DWaJz_G* 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 literal 0 HcmV?d00001 diff --git a/docs/guides/user/managing-private-vulnerabilities.md b/docs/guides/user/managing-private-vulnerabilities.md new file mode 100644 index 00000000..e017208e --- /dev/null +++ b/docs/guides/user/managing-private-vulnerabilities.md @@ -0,0 +1,13 @@ +# Managing private vulnerabilities + +Dependency-Track includes a built-in private vulnerability repository for managing +vulnerabilities that are not (yet) publicly documented. For field definitions and +matching behaviour, see the +[private vulnerability repository reference](../../reference/datasources/private-vulnerability-repository.md). + +## Creating a vulnerability + +Navigate to **Vulnerabilities** in the sidebar and click **Create Vulnerability**. + +The `VULNERABILITY_MANAGEMENT` permission is required to create and modify internal +vulnerabilities. diff --git a/docs/guides/user/managing-vulnerability-policies.md b/docs/guides/user/managing-vulnerability-policies.md new file mode 100644 index 00000000..c600f150 --- /dev/null +++ b/docs/guides/user/managing-vulnerability-policies.md @@ -0,0 +1,48 @@ +# Managing vulnerability policies + +Vulnerability policies are managed under *Policy Management* > *Vulnerability Policies*. The required +permission is `POLICY_MANAGEMENT`, or one of the finer-grained `POLICY_MANAGEMENT_CREATE`, +`POLICY_MANAGEMENT_READ`, `POLICY_MANAGEMENT_UPDATE`, `POLICY_MANAGEMENT_DELETE`. + +For background on what vulnerability policies are and how they work, see the +[concepts page](../../concepts/vulnerability-policies.md). For field definitions and the bundle YAML +schema, see the [reference page](../../reference/vulnerability-policies.md). + +![Vulnerability policy list](./images/managing-vulnerability-policies/vuln-policies_list.png) + +## Creating a Policy + +1. Click *Create Policy* to open the editor. +2. On the *General* tab, provide a name, optional description and author, an operation mode, and a + priority between `0` and `100`. Higher values are evaluated first. Optionally set a validity window. +3. On the *Condition* tab, write a CEL expression. The editor offers autocompletion for the available + variables and functions, and a template dropdown with common patterns. +4. On the *Analysis* tab, pick the state and any additional analysis fields to apply when the policy + matches. +5. On the *Ratings* tab, optionally add up to three rating overrides. +6. Click *Create*. + +![Policy editor - General tab](./images/managing-vulnerability-policies/vuln-policies_editor_general.png) + +![Policy editor - Condition tab](./images/managing-vulnerability-policies/vuln-policies_editor_condition.png) + +![Policy editor - Analysis tab](./images/managing-vulnerability-policies/vuln-policies_editor_analysis.png) + +![Policy editor - Ratings tab](./images/managing-vulnerability-policies/vuln-policies_editor_ratings.png) + +## Editing and Deleting + +User-managed policies can be edited or deleted from the list view. Bundle-managed policies appear +read-only and must be changed at the bundle source. + +## Configuring the Bundle Source + +Configure the bundle URL and (optionally) credentials on the API server. Refer to the +[bundle configuration properties](../../reference/vulnerability-policies.md#bundle-configuration) +for the full list. + +Once the URL is configured, Dependency-Track fetches the bundle on the configured schedule. A bundle +whose digest matches the last successful sync is skipped. An administrator may also trigger an immediate +sync from *Policy Management* > *Vulnerability Policies* > *Bundles* > *Sync*. + +![Bundles management modal](./images/managing-vulnerability-policies/vuln-policies_bundles-modal.png) diff --git a/docs/images/operations_database_pgtune.png b/docs/images/operations_database_pgtune.png new file mode 100644 index 0000000000000000000000000000000000000000..6d41d466cbedec4da02f2cd02d8529047e0f2b20 GIT binary patch literal 223878 zcmdpeWmr^O+%MqJpaY0B3@zPAH`3kR(jXw+H6YU6NGXkUhjgcOH_{T4;vEFf@jd6f z_sjiupJy}7>^*z!wf_10$C|hDvSO%6xJXb?P^c2(B8pH@fFLNSM=J<$kTXW^!;lkD z&<=`XLQo|`_+KF(L`>8rUdhNnQA6G%KtTtYLjmr-0{O#*{6TJg4-NGQ@*n!{+3Z#B=G`SK(hfSP zWVyM?0tAGR=Lzs%zj=JHc5uOQ5$?~;5f0SMGtc2@;+`mr;W!XISco^)>WnsV{OX>e zF=*k$I_I2AH;lZScAVjTIcSmXdKw=)fSm9hDGVU)^Ir#u3NeRbqoB?V9R&TKhd)#& zu@~@vx%n-kJig>=%5ZKB6k_Cm9FSY#{{Oi(2fq9}=DQ)}9GtoTTI?MKI)J_^hc-vt zDLx&WhSB20_T2|kd&0vHr(0Yj~gnn;dC!i*%@M$kkM(vFX5xQ4kt`FNKdcT#-Jp? zh0HF~ZcT+u0OlWuguwgqM(JnL8MGCYGO?$Xl>wSeBE_KwUln6BEE_+BG9*Z01;250 z?*INH$auWO(|*~-QK&fSogIaMT~88nMD)Mpij2uu!l=8)1bI_@W4b&i8w$RRS#~arjD=*A}6x z*PuICO`*JqH)&GB?s?Jy`;_EAmqWH3*IFB`P`=tHWvpz_JjLGY24gtWQI4*0c7@BS z=}xV|M7CG2QA}%KONaIHUv~qa`{H1(ZKPxNQ=wc!!HuGXwuZ#31D-!7pZu|I@o!!6 zBZDei8`_PRv`AGYK(?Ot6|3#oCqsJ z&(83k<7vuyUY zQFXYA?;_?>cFz?K$fo|9_cDciomnCerMq!Glm6EUAv{PD>CKa8j|Ig?-k2X73*0@7mAsRPy6CO(Kxx6F^Dx23=oh=c37(c=)Ej zX6bqR*w{u@*xb7R!gbSkhxXMIo;sZNa|1wHeDQ6%rmYH9tmiegSN{eZBkYvS%LS zz-a#7Cqaytd44{#`&dUX9loxRuez3)sdD36h_GlrlU~wCs;;~sYvsnuI1j6!_|4cO zq2w0Q(afeNOqHb*KVZSYaDhx*7OD*U2*>rU-%}rI=$OSQ3aU+L!4W)i7 z?c|ozjOVv2voVTuuV2Du!$!xAde1L_I>LCxvJX-52C$=y@kr2hpOHXs;v=DHm+P@B zIiL-u@F?`Xe1=`%zL4~4#=S^$ai&?SzTrB?M3=|3o;FdDnB(Uy#GH2CXeg#;&@Axs z+MgPy-JG3OUA=QJ)%LvAPSRmoyvVY$K8z%-`e-sScZk}`^PyIpKABUrD}tVVc9Ja( z(?g?prdrCaQV#c?U{=6H&3O`|~;)K&UMFX15STe6Sq_*;+5%LWYIp&ze0RVAdp#t}8~N;swACd%bK|0wKL zL~Q(Nn4edRkLzbGEzS}s$-LyJ>;Qvh^tGBz)Xt{#3Ef z!aKuto9`YGrFcunt4>NR)EOK*4w@QQ{Va41?>m`YkMqo4&n%{oARpMM)|e>QmyU@w zOVo96uUGz>no&X>ML_AWkl;U6LqGTNr>At(p=J6>E-wBF3RN$dBv!iac+a4XjkA=Trg4?0(D^(zn)c1oN)gH4>UK@^6SN&wx-n> zjYN`**8*G^sUe0=6xPzv*=;}YWCKPErlve9koqZRAHK??f8NGh=2SH)^@*K%3vO*1_ZNlODaO7K@;aZl$mYEjyne#a zG~E;tHkJjm#^$i9UU!(Ez&m6Y^a~y8n;~ekRx8{N$GM+!w|L)_Q711~Ssj~S7KIQ1 zX+YS5jGvMHq=gH28S-lnZjN8Bxgp@I+HIG=J!7V*ky!@5$zf{nhU!;sR;3co_*7)T zOD&(~c(|qx4iVuvEKbJR^gXIj#(Zy+=%#qv=t@h^vZtBG4tgfvwAC>zed#>vfanJ-%S+bjmqs#s4j^cV(=v``6=VJ~ z$fOq|r<6TOT&f zRLSDEYbu!RP5kJD`G&x9+1CjVNauI*H>;|#spTnJ6g#)Yw&l0p8^-rk^>W##uVFm> zs&ay2S1eRGkkkg`iMd@#nmIPY%(VC-g#@R7B!vGfM2SvnMfhR#hIJ33E=^9?lko() z!+{Q2RfjWFseCs&5L-BExN95EL&OK|_Be2u(Z-#_)*^QqGn6iwZNhAEafa&Wb;rrr z%*K`F_O*)pMs`1a3{u#V=(gGiBsnvqDlyg4s2`NtEjPBa?()rNqnIznH6yMXejZ{l z)Xv#1c&j%%bq{vso>0idzF= zB6j&AoFwo)AqcSk3@Q*15p&(?X~CzG2&W0~ZQU`xU0kzLWG7^Fw_4XrhawgQSvl`JZx4?|_={QG4ks4jWcM zyK40*rnR@+bK@x_OCymS(}FtJ4Pr>^YCD|(yMsn1Q4eHrv5dWo*w}1A@+Z5&$-+r?#TNlB2 zH-T`kDb0PMEpq1cv)U5-3%16A6NWUMg#{af9;+`NLubg&YctOx7{;o@9}Bu;8@@5< zQ37x~6)e)B;J}||m`-3If+MS<+dPa?e%?o8B48-5jnnV;xCR~>i7>-hO4!VEyqQ@D z9Vm$!hF(o>Pd@|gU(M$5L7Oc^39SKz2Bc{QoLmn?xSfYExcfti(a>LkGm>CN;5{Aa z$B)>@BUun$ZK5&rhHFkV^gaa-R09jDCu?sTz(CH1AFdTNJOf_%*Vz;AkPS?M;K;(S zN^%1Z$if`n0!>-^2yd^wr}mh6nm;Yg#!)!)v+EtW7!wB)LuE!m!Wn@?00=IOfr?#s zx|$-x=>XSTcjUF{oa2!7BmQKIu$9L*K+Iy=+t5}A&+SFWecNXr@^4M&E;2ynX06?rBD>E~?bFCF{iyW%`hsYYU zYKN(>FQFUXVr)QmT=FNJ6(f$v!}0hFFKcnyMkB@RjRT~Bnye+C5f*k-OR<%d z%fktJtpf}M<$XEcWS3wdexS7Id4^&*TonDvD7}ZJGM{USpde6WoH4-p^Ul@ra~$q? z@9(LE#Nwg6B<&kI#+>A0!!A#p)$?@uKX^KyRYGSvG8_=lIS+BuBU}pi%o5ow&;s)w zTY7zfXQLd2lhKqRy+hl^ls=|0p$03wNTlaqA((Z=7yT>OP-SiNPhQ#Wp-MZWP+{4r znK`(MjI<;wI_pP2M}X2qx3h+!0)t=c7)C5-Y|J1~*39g(dt&>doTWIw^GvF#&bB!l z35Pa%17|cNsRwrs7{14V-#wk5PcKS%{h<4wDWM`T6TcE0X9%Vs(K7}MFp_z{WHy<$ zNA0Y4jHiis0zf|<&0#owo64v5JuoG+Z(2X`Yv7~dT&A6w*tkW~p6q~BQFqyfj#9jj z8BfWUyYPw4lG25fW}i(i*63b);7#npgZVE=YLuRT_cv(>oqsuLi8l7#{ER}#OjAqG z&&s%jzqK^_!Ah_}% zXSO>tGfssFvb`x^D4_~*VT5ehy2ui(7|}q=Bjjqd;J~zAwAg+ zyTdcVFZHf&#k9pd*7I1(bnR6w*R3o!b8{{{vUicqTk-b?(lJlZa*KmIu4cKoHeT;b zWNY&lL=#`0uHdSz;Jcs*Vz&_uD{Oi#t|LZak1ce&6hHRNVaSNO)(?2W`0_p6U8Er} zoO#h`E6i+Ji;$&=ZFL(P0_~vwzFYc9hBbUR3J1{;bgWN67y}O5dpxp&X1m@?`+jmP zafQWT=q=a#6rBDM!k1J>M6x4gK}UwdxXpUW$u;$f{M*A_weyDNIpVfhb3E;{FS2Sb zlj9BAhvP4+#1-^o!`Q->AARpO zc8TgbT^5RlpMPKsU_OV0Pke?(+1dG?D;8+`UnVsmfHu0=8h1X784@Zfz@?fkq>%6S zSCPy(V$r>RCz$uN+GAA6sE&XdlxDR({1%7^$30<*2%Z;q)^iSwnnJk7`Kp<_0WLJY zU4NSlaBuS=n=uo zB3fqrm=6gpjmPmG1{-J5A1{N3GT0@CQZ&tPqHSM&5~F|5-+biO;aW7KNp3WeW>*fG z7Jt2Zv+EX;FoL9*yLX*J?HL0w4XDQ?@qxN~uWe=_&B z)bQZ3>(}^X9#S&oFxkTAfsH~Rn!GFJy9z!&M!AeCa*dB1x!O8Z?ZHyc@!fV@qMHk~ z9RHHiw`Z^hi4Dg;l)Z8mY%x0Uz8ZNY=#^cnTdwD1NtkoZw!YUrb;v406>KN|GK`Z{ z`^g$f(hGE@@n0w;32~3xZ9XqNHT{{FggaT{ZCi0a{JQp!{(f7W&NoF8g)5=}gXd$H z8VLi*xK$&}rv!PKtE|&wt1(c#L8~XtqQ;ZFyqilzX$|dqJUW|;BQ1X4`#j~Ete!7k ztcYRb1Q6rfDjIB-mX=Of82r!`=6K9P6H|A!dtFniRS`DMX*p3Iq*fZ$)LpPJF({9T zy5{VB-UC6NN$+|dft-I$(F5kk((RC^>-BKYlciLvbripZCn#;eDon4F;Q^nzsmCiTUh?wnlL}uq>!>57+jmIO4}Dt@b+@7 zU&#z;_AVlnXkgVo%+O6gptrSE^=%gbF7s7blmrEDq(i;tBM9V3!!<`2N>Vj{C+0IZEm)85v81pce^%clR7Ter$Ra*B_0dP@J(afZm z$8Itt1k$S;X0m7werifhs*>Da67;!}*D`H`U-W2IYVm#$LVbtq6rShD-m({JFUQt) z;@6bE|4WRc5S0tIzxAe+hRvd*sm8}e8LWdsWN*r;)?1^wpj|n9oFo7=sWQaeK7tmMc>)wU3 z*LfZFHuneTPGe2TUea8NI&DOA8NHP+0z?Lox>}>#%Fk-J<6U>JfeN8uqiqlcL=TFS*%pW;i#a`!qulqCcJ2t3Z`*J#^; zIvrfTc(-p1isYhBewm;=jA`$^fTE>3G5SOtm$8jJIck_k??X<%*qM|&b*K9@1uxSD ztdD+fFT$U|eC1Jy)*z%l~^) zR|w>TG*GCkM|xhQZli4QIP+a%v$3?DLQh*nOJHU>>$ER1-7O;Hmi*0yDG?OF+kj0I67oUiYXxkm`@(LI4B;Eu*;}bxr{m8CjPAtq4V} zq46Adx%r`{b;&!u_@9T+U2eXnFdb`sG?Nnp3Xd_1aeaU?Jwg#bWUHaO?%y>rkx;0% zoCD8O^Xw3f4lbF&@1%6vTT1$DpKGWUBGYSeO?N|Fw-MgPh; ziPtsd|r>qhZ5^tplo07HbD+;xS(ktmomjgdcyQ&wor1@^J+nQjMS&)RnulEdM_2q#;Yd zU*eHX`|l;Rkwb>p_G?W4@5`%+P@S0^&913j|04A-@d}WF3||Xy<^Au=9ZV3!X6JFj z;dmb&{__2`9c4s^k?zH{UpPcZA5NTxjc=K0W1z{3U3-Be1k{mWG@^+X4L59{AJy;;O zb1O%&rlP#wKiyqe39OufOCJ=zAvy6`NSKkiDay@J8$slVJnMzRh?y(&-^7O4g3ip~ zOk=T!=K=Kq!0otXiwi^?j3CpI(>}N)g_-9plx!l#Oo6TheppvpUYBUT>XrExvCSdZ z0VGq5yxejeGOWY>m%QIjAU!WNun6sc*On|$5CR4lyPa#&^*k%0~=cDslDrF ztCZR2)A4c_!LXGXmZvd+FVJ)+k_*lDH_>OxEn|t%iOs8$63m`&b~62~zo3~r<6F%= zbar2oCBuQn45Ymb03p$(>(NMUP6WgXKgT_aT)&z$fj3zh7(c#p-+<&b#)t$#J4|rK zc^a&>6>@(I93w<#m?e&W>j(N61GXESp&YYbkNa*1e zvLYJ$!P0JnBny62e*Q_g#BWkXUH}v^yx(dQKa4|$2z~bHv-dRd2LbH9Ve16Bk|O4U zfX;V}#*0(~=Sn*eREoSQnI(fo67yu~4;n?^86An_y>|}`1&2cQjb+~^_BU*XAnRa$ z23v8V;ksOIh~-$Fa%!AeAzAIP$v+ewmXP2hjt85&Q%!Bul}OqC;AFnN-5KDJ;3tq94?e zM6(5+b_Ds!{4r;72uAP&bZ!0?Wn=&dKKDbxoV;yFlorCGP~LaUaO(o<_<>NHB+h)| zRGTa(IzZOgs>5+Z_eUu)Q?3|gu`pKdzlwL_>@d>eX;#juyX3!Oyc zlvo(sJ}^qh`>R3SNmr9Wptnj!U(|I*BC(q88y=hEr-C3&yEABiJ`rZDFu@ia{K&u6 z3mpvA-iN-aYEOLskhij}hfT=5Yx`m?8hF5cFUem#rvc04 zfC?kYEyVGmGhD2o(*?dT)|z zF~9>_P`(gWC@s3Q%rE;hpFa(j=JNR4`S`Zp`J+@!t%rt(*7q2%H?ZtoI|fp`ByDt@ z7)cz|tLhbzj%Q82-OL7`zEDo1op{Z$E_zYd&*Cktn=-SU$|@4(aL`+Ect z@gdKNtTni-FHZ+~15SnS5&AE&0{Qwt6a@(Z1MeQoMz$^kgCU6wOaXi$#ogC5X_wh$ zQtgxaz^rt4_r{h@G|q?{iE$cS)=JtyLJ>6LKH0y3Npv8@nj6=RYg7KxIe`I;;A%#I zZMtyxNlsQH)ef!Z+_j}HNaIvLAi+R^h7Is!#U$A)_)qi#1VN|;?PtjHu-;$_Uo&Lk z#D=efO6*tKtO=%HYT+zD$11Q3(DHVN05%7> z@Y~h>f+Woli8>w(GJVi>Pys-@Ez&aB3`rO}bMuX?@|59zqx1=`MsYFel}dlnnvQD} z4QEwmodQvL)(ZQB`GFWD6p(BBXv1bVUhuPOBAJLQSaEqP$OWa3E-)o9mNVYJ( z*)8`U#Vah``uupe?Gvz(T?G>lbL`k5J7cToaT#N2J8)5+4t2#nHkcJY#_u`N0?7tB z9drFB6{M57T(!@soGHYprpz10p4IrpIK*4C7c^NvPC9-Sh9RpLH-@=k@FrQ(DYEOWBnH$QG)q7PR0-un&AqQmZl zx?xS5;TI=cBhh`}k#&=BbdJBqsrb$F_*?rY{e<7u;%RaEl(0?sq%KIlZg0e{_zN5s zj(_v@8+E+w5Y0{rV7b%Iu1Edm_E6t;Jj_{v-;3e-e8({ln?$Q=CP`h57n8Fx;&W;Y zd=yv%T;!zoT>i~`l!a28(#0=y!v=AVTPu_{M4&R?wvV~rFeAD#Lu*H-;UsQj3aD8L zJ$PRUiPr0kifD9rESZNhqvVlDCgS@_G|s36km#qQQn=e;a4^T^#R+HbOL^>&XSLdx z_9eB;0UkeMQpjyZ#KhZ;O`UqD_{u~}zIX|tf%p8MtvmH>@s;Zw)SE|OyO!^v*8YXm zf#-LfNI&S-VeT!!s=q)f&2Xgbv$)=XBR=)e-X z90H6mjZ)TAG8XZ_0hUKtKdP}>ETxbcO)tAQz_$BX|K(HtC?TlCb_e8Y_f!OC144O(cdD6{5%XkdG3YW)RN#>Y z+9kd<3t%XQ@iZ zomK&_??`mZyNYtZsMS=TBvUhpW%o}u?FlcgtmTijp870gZaE&>BVmZJ=FgE}*b(13 zmF1uudO1@5gOAcPg5pI` zr+hm=k<=wf8fw}u9^xk`zMBIQs4wFxzlXmupF-bx&cq)Z*8z9^m?70wQrE@ZZ-w`1 zV<`HKm6m2u?-Q>z4P63ay|`p7v$n(vX4e~>Y)K6e@7khkg;ohq4rd&Ulx~=#S_VEn zgC$#~r`WL$?EI;EeSB?3Nv5+J0~dW>+p}ODj`N(xGOthtgF!1jZwjS!PY1uc-4g;! z7-T*0?XU&x3-8IrC?27Y{LgrPOH<|@5I|zn6@Cz1Xy7Ms3|-T<3zV8jORwM8j~ffc zxm^Og>-%xx`KJ}4E@-XMr0ost3UQ+ zUsK7by7keeCB-Q0Zp|e0$?x`2`%`a$TX;C#-DC@9M=t#NV=#uYp z(1>OJhk@sAb!_dqr!^=cn%~ZBH$6&GD`CG7Fa1984zXgvP!Lyz=F>y};Q#cYpdClW zM+4e=>??S{ZMKo_-A{ucfYC%rpt&_C9x+Ey2Ejg_4+?H?vgT>Jj?xaxGa9{;kJXv;!3(>glst5zkh*4S!c zp&)kloKE_z%vv~)Rx_!^7);4_U(XrF=MIDrt~*mm4l9a{C27SMmWDk z)C7X~=v7rrSnjGTt%x_4E_xLq&Xi|-1o=3`cur5H3f;~FjgH{jw;r88w{;0xH+Jl0 zBtXs#fLKL)Ro*#BpxBcfW@2CKCc+{7P4iyX03hI^w<9_fRKoA@eH7&Lh5eOdIg%8~ zwpl2qbVg6p+B5Ofwy7l=Ib1u0)K|*v*sH+CdP5N+^ni?}+E=MaaAJ(2rSXMNE}Tv< zZC+K2_DsmB_#kyLe*AgaZ*|%Ak^NfQJ}rHc6r*qGab4{v>Gl+6+^)oE8CF zO)b`yQ*|!f&`f4^A#!VyT8*2TZQ8&P^%95Arg;!2GQ}pT>t?Dg0FzZy=6WBHgS-$K zi5+hixrZJ;gAoNhd^#mLk}TOvyh~du^#Xj(M=Ys<=0fpW~ghNYodNTp;R?7 zbpyL*3MI9?W-U6*pP~d;N(W>RGeq$>sKdq?SI0u3`;rD6q)=Ce*#W_+)1Tj=)aBeB zd{6V^QSrr%4*0ncQH=5oJvyzH$G{;8 zZZfk;|3Q@3oU7&0R00K#E;)kT@%Lz8L7FQb16st|^)eA(dAsdn%8ykMG`uuKEv^yc zR1roO&6n<&fsl|IRq8^-q>*8%YU1O0Y~P6Kmh`xLs4Ca8vnp`qP1NaBd;zv)gQFl*Qr=~3Br@WP`Qn}f zHOgliD)jgQU8x$K3O!j1lB1pR#qQ7!^*#SzZUy9o0BPQII)F93_W+SVfE#LQ=FPkl zX@Xc0J)&WM+KU56xzf$k*BVvzV@>?Ac$PJ>xOI_{PrhbuedzPPHE3=uS(J$?f9uKl zzRguX;){0C597=H$6%2*)&9PtG+JEirN!j}Y15|gIe)3vlM+~d_L84H$F~_O?oSeE zi{2(O8h=NX%aJQkm%g_y;)D>0AHAjPkb4i!`~_M)fT;>Aeby`p!eAZ%x{03Mirx8{ z%8tZo2My-IkIcpG2{InuD>+lsWa4KF*CVvPY6`XBPh1I?{l^#w;=Xzjl8WY@VTl9pco~V;Yx2NLIA|q&q23D@MzVpIb;nqX>H5;nCnXA9*Y>E~?~I=(#K8j6 zeXb@&TAGrFKWMRG^pG6c)O$~y1_!hd9|9$-uLohQ(_Eg`D17V7NUK2P71!MB*R0a! zq^m{%NgulGzn-aUkylhfN#!Y#_)r*$B1hoOZgPX;>fK;^R<0FKh#ug3SzdCWe0i45 zf@07!Yf}bpqMt%?ZAMoc9+7EQFAn)g#2P|s$i3-N&0H9*LAsNrXxhzhsZ#%B> zw;RpgF-i48UB|#UK~TY{HYrUB-}5MKF-R`UjSl4r)qF`e36S^acNdMiJ$-e{Ayqko z_9JbAR)1G@|I0d;-ka7ozwrD#ea)^-GgY7r~vjb`;ys+Mqr4`)Z#mGtJ%)r}38VVfVS0 z*H439K0_IBT({JI01Cl!Fh5#MI<{^&e>X@6%M)q%g z#3Gsnb5@(AzDO2$N$@Cs`ZdK}zG-1^Mat@SvAUJGg#9KL?hE$e!p-~k;#$RE<6)rI)b<3a(g)=Z2*`BopO zL(PhXcnq*Ez|HlG=*K`u8*t9xJpthj^Hd&Mgq57EXuC}TK<(&URXT>I6qBN}B^7Sy<|0)>tK zS0AdB-83e+NLXJaNflO&dI#?BMXKCzkT?wE3|i+Qwt%F9*_T?}F>!y9|f3)DFML!;CJF#iJ5h zhKu}y$C0gof$lZ0h**HG6$)+fuxrneA+CKHbsG<``J`h9X{NcR$8=c6G)O|B**0o7 zxwCt{OpV&}`$@}_!SAlO2Px-0m2VdvC>GQ2Vtj>vu|DFjgNHixvo2vWLtM8T9W z^mQa77P{Xm%coNd-#LeYb;$iV0Ec*FbY4b3up!o&5ws2gvR9Zvn-)V!lzN4c`oi%= z7|-d=Dh?h`A8bqGy{6TDa&ZzJlI!Sb&Q{Jk2+NB7D!~46mjM2~1J>_>h#M~RDSqO; zKaN7k*;X=XRz1!_eGJW#SWv}V?Hwoh*520XWqXrsD!xsl5SlIf9yU3$Y3ldMCOaOw zDm7JYM*%`l*XUuVMcG$ox+y~ZixOutNsIImNo#rYn8BSfTSPnqkKJc*{krmPYo6GlvCtI$tPYR;E+SWh^o0}aG z9B=BG`YG4YIMeuswd6L99T6uFPyNoZAJQ$~?zXFZJ7iM3k5d`N0rKC|p7Hs1H8bYw z`kpS6&y>a6ojXxS;v}w^eWOEtyNQtuDZ)&=YtiPcqkihKzoxaGiA5nb0sYf&Ec%ko z{ztCZ50b8?W6A-5J%5|^_?OiN61=OHwfY~&?}AKS33iNL9Gvx!?sf{lUadOsGx@&m zR!aJ@P;6#@>L8(|d7V24m}w5_s*Vv5a444@v_368Pd|JU(tS@VNTkL4r)MLJL;&Ez z^cuvhx3b=<=>6<*f=P* zZ#NOU0mm4Om@cIPN2W(@zD%#{;p4K@i>m5+zHU_pW!>ysbLUoG%=$Xx5>V4m}# z-|L>EhKZ2sf#JpGYm0lV0(l(*48YHYl*tUCdf;1+0CT>7@3^|g?u#$Q>j-iQh#}zT zoQL1|%8&)5-Sl-)1R&IVa|?(J3$YW2o?4PQh-=P4c(z?a+s$@T2L%m(Vp4xnN)yXcMq1 z__U`nsvp6S^g$+F@32$4`(WICy+I@j>Ub)VkV*lcVx^(Pi87>1F|8BtWIHqj9O<$* zrg-o++O`L=b?8UnantosLh+7_-@L#IE&zW0^s3x9ng9 z5CCbB7J-gtU^h53sdGyCF<}KbmJ=CIJP%om@ubp{G}!xzMfolyRn?>w$&-5hq_V-x zWedPn-Qv_E`p7n#QZL0!Ij7*uyfi7;8LrAuxtdFnMJU~+N+`LKStF;oxT(cnmF(Kf z-6#paWGF69jUaY4OEtq1{Njt{VO&4nZa21)8OrDD(n6XyOkMQ{n+_`pp+VilEjOzk zb$g8#b!Ilj3b_MZ;Bj^@bgolf|Ib=@eW}Su*!Kku^j~dWRJSS1r3Bs^fR2OaVk#DDjJ#!twOakT$6n* zl_Jh5t^sk@uvDR~+0~!6!Rl+B$QF=2xG8Ah>HN3_F69AERc>wJ9;DFo#0CYlRG{Rv zT%lQPbe4l+;u8IgTZ_9g&>!fyY8<}D9Zlr$wv)8h!%6fPs(24LsNJ#GI6HuApJU`+L)V`PFew0w9Gzh|sw%&Ej8>!@1twbSbL9t1^fn!o0x-p?9 zy~MAZ%5AJX7C#{j)R%FRQp5y_>6`D}Cvib-0FpI$ycLNu?uYax?`fac@81Fl7K1r* zq^jG?G`Ywh0cK{DO z1h8H**jIeY@icp3zp#nECSKokh6JTKeFjo(Jh85nzTSFJn=h zlPvGu0QOUu5+rpJ6-YgJ^T%w%Mi*Pt^Cp{!=SpSIWnw7WRq46)8{w~qcQvDsHbtG0 zs=2HGs9y%$mEtpPD6t-pUnQXORZ_u|pztjTEv+|wZ=UR5WwCHIf`?KEl~=lEET2zY zSd)uB8!V0rIo^Cv30+D&kD)Apm&XIUK)~<^l>$g1sjr);Rs zcGv(42oiZLEcKzU%ZrK*1nN)C9+i^0p}K-r9{&cG|E_)=A%NV>6Wks%RSvumJJM*# zFBM7>F3GG^PWV!NQ%w(6^X^jBmIyShKS=cNSI5@So>S)qCm^v2@TDX zz*z zIB4XjMX}E&U9Y2f+A+y*frJ#e@vGW&qm zp512IQ|US`*Nd7!7$wsXVzR%fxG_P0SA5UuGk%p(s9Vh17>!a&%!Qhy{%6rV{BE*_ zD}ui#8v(_m_XYYT$Zx)WPv0ete0l;nP`!t1QeaPq#eED+!qr`V7x&vpeOO-{5f*UCcXWJVk5w%t4hR<=lTX_Vtf9o-)2RcK z%y3`-p*tOSdjUEcOSSL2*#uC4KIigcV#&(phCA{x)MAD>@DW>XZ41c?uLsI zWnM42QVs{DqGV}Dl$$=bh?pCC*no4lq$5d4fm4l@=l3S_6*M1l=)hGrnNS|}RbXFx z>A1*nO2JD>Bc=FZ*!2jr1mvysSmak}u|-8T8P=qZ_DXRysVG0_QgJjfnLpMEVAubA z`_-*L4%^${jU#nMvO zgs1&wE66w?yO$-8@CG*SkpT*wFJZg8_`0K%V~N=y0m9dx1w6LI++iDyVX>3swDFl^i>P-_= z{Q9|#d*v5rzRM-tw%2RHpno|tG>NeQd# zUT&YbT<-$W>~FO&`%JTvLud$i>r_B2RutFahreigg0+Zy$QSXtT;2g+ z&{)VOGlQs27#O-f?wfCL!1?-*@x|X~2$;2qe%BkmFLK?P{}zDuYJYD%zD7-* z$g|4`G9sby(`NE`J1R7_DEv(B#9Soh^AWNI zganq784asbe*@4f^Y#0!m-he_l1zi>m?#uU!*2`f4Ty9{IH)gN!lS{MaGIY>Y-P`B#BK85?~eXrlNBqZ=)X} zn_vv+CPpcJS=xE_suq8!PK4OO^M^#WUHJcKgZRfUi2%u<6MktG&#h$cd__6+`Uti6 zqjqk163I_s%h%QuzJ9^M!s6IJ5==ixLUO=h?@R{-`5uRypF8XTP@@M9ps@L8!(`4> zokyyNPN&14TJRaDKa{C&Rz~+=s{;g~+)xA10umNlEb0Y#-hwsyC*jBW1Mt-2Ae&7s z)#q#>9YTY2C5-~Ag5Bi6TL4AQ+sVcaq~6_vCJMfh*q zdFosYils}<5ICQpQM(ZHSR(h;!P=djXKHNP1|B9NBsI{;R=-7pcUv^!Ti@cy}RVB4>sQ23i;kd1i85JiB)ae3eV zf4KSzn7G<4+7>7-0~B|6cef&i;_k)W-HStUFJ7#;ySux~;BJGvzUh_s?*Ar}OmZ@r zNzTdIvew?~tG7fuK49lLFMW>K+d{GX3@fVE>TJ07!NGjt(6m`pjFl3rUTQeZbzF6h z%xq<5?=aQ6n3qE|Yw-;i7^2zA(jeqEO_HjybnNhg$21WeV;-G}_h%k=`!heU;M1XK zOz4AwMSH+*4>nd(A$(11zGR`M7pF2Z`|i+6ulUt^HAIYWHJj%3-O}|$TP27PsAn4K z0ZL2=u(X9`5&hIS=$1Hq0wdA#oT}n1_jcFQ3%0Bn{{^&={oa0{snGik@&8uPNLuG+&M;P z6F+uCSiE4A?d2Ig*v7oReTl@HvzhVvjZ?D z5sy7HcBXGBEHK`j3aXPgA1uvpUm^<%??zB6mQ4^35`$hhQko}ny1Dezwz#=&E}3NR zv3E2Ne9pbl@y{RUaXU=cv1(uapYWT{U*YyEE~A;dCl3z{;@`%8dlC;=oJc4AxpUTZ zDv}~xIo1)d3BP(xPvs!=Y0t@?KDdv(;||HJ)UDB%01EOwJhC#(JzMM9`DF_pm(kDO zsvoB@GnSAT3Oo>Y33!Sen72#*wJS(bpYw2bDk9N7^RdevWN|vszZKloaD>=udKHA? zgL$#`zOH#40NhQ&dJp?L>n1sz=}4x%oLDJG*_;Sn)U`RCIW&J;jH}!rc*sc09%Xn+ zeUGBN<_dN@aS?meHO_=-{3lq7z_AVYm~YeU#nne4m^t7}huY{Y3~}k}?B4S(nyi*h zqhc=~RAsQy#1M$q_~kiW*|=S{N+cSEUswwyR$H=XbRE--Vp1fg?DWPz9wXGWgOJAa4Yw!pm7I_q0W8gB zSFY0C(pr1(J!(2ikCvo|_&T&Fh_K_*RVWm*V&Iky_Y9iD&c{>&X&yDR?%`jFhq(#E z&f7iGFT38NQcRHn;?PwJ2BqH?;qLy3K(Qm;UkKfjc;+_LYP;$+eisCA2o0JK z_8|-q!>^TOBhY#2#7sg5VT^s+-sPi(f4dkTKC1{VxI=8(*#CNC@=E`sR@oe91UNZ6 z8LG?Ob?`YGp><90AZST!X)4qL`#zLbdR#GX+!kPXc^wS3+c;jFyy3$vmsLW0YtE@J zRJh==Lmq@c=PxG1FYfS%%Pik_ZpEMnUFlGMD5h&mY7-S0=UKxQf=LOJ|RlM$G%{*^ku9} z^_K3hQKltK!8I(qead-YtcjldXQ&FpfH+nbj&Ok(>Nn(a2mQJW)#l=Z7u)x^CRprx zh9I$cJI%XpZ}e}Rim6yTy7pf@B|_OiS?#d+@nD?AwXx-4>?g%JxkZ5TgG;uOL(kQr z#~Oy|_qlGn*^duFci^SfKOYCjPs+~4Y0+L?`;$M07na*VEDwm?_%vEOeGWNY6gz#) zTNm?#o;C~-$F6AzWrmuN>xr!=XdqF0eX?udg(tgf*cTM!y70XkSho(9bPG%DoU4~y zxtm9N;rXR}Ov9RHw1OVG^N%`)P8Y+m+zm9*M$;g;yRi9y(U-emVK0jevE(W1KomxdQp0u zx+mMl@!Tz-pOdBcUUqV4HvPhQ#l<=Kk2Ke%fcl%8U1c{A8w-Wbm93o)fELi%0%PfJ zA0!FYlkS}=5IMerxn=tH1;Xk%piEB0!%`o565S8FlEg10bcN4md-1*9(@mH(YMG0W z-Ost4F0!8=bEwrrehO1h)s+cL-={0$5P1B$H_FUphw`T1y8A;CHf>p6(yb(q3i;`2 z>``*uRB$6jUVsK`rA^#h?>E)piP_yX2`p_#&)PSKLEgKeQ~zwAut?Xt&F`LxufUl# zrTn(QYOAD=qDRoZ-fL!dJ7kFfJ!{v%#?L*wry-N5eP|l(Au0<;qqd97Z5R%|6@i8G z+PJ_7P|uH@asdEMTT;IhDrkJ^q z2@lCnqABz1{M<^MSwmceU2&5z&<-Pn(jlSqs(dn0Z4yJDZkG{|@ksOrKKZ=Uvxe;rZ}0&vd;BIby=dPzA^znWZY>@bVob@<&f#&AGyn*>Ev+qROlnT>CW zj)!wdFDf#r)6h9Fnreq3bk5)l*{oSyZJev%hITgX{tmT=WE2ANxk+4aYlwA@`Hs2m z1_lfnVK9;?rQHu(yS=JR0>0r(RuEvHl_m@Y;_EY=6HsX1IDI66HT-Msq*Fuesn2W=_dFRLmTg_O}#s2@YxnYR$I^8vKa0cPTx6R%78Y; z(FX@a_vZ$$75>3&p+3h17QPZ4`Pr!6lA7cE>Q->~FZ%`0&~?3T(@Y!L)J*4i6tg#G z+oiN=q`PyLLp-MA2BrdLwvs!oL#OHgGo21DzX1{8+NytB_b45maJ{qC!#?9nJW6!y z)$wNK>H>@R^|R4Z*ZB(?VL=0s!)9#FE$$%<;k^oRW=a& z?y1`_=AzdY!+lc(auU@p)sWr@UWTe zNLI~T@f-k8PZ)JG0DR2J7IPk7No25F;181s@gEh2%Nf|KQL=S z4$uNIEKZ4l!Awlu>UTmKu0)#*m-$ukR1r5B?KD{7;F&Y8oBz1YKBo&#k{%rd$@P; zp)sVC3<_temGp>}&!6fME;ubo6tK542koGg#s;Kt1uku>ppHLH9XZ?Nd3FLz~-1SdSMdHT``2`hRCM!HYU=h9< zR~XqJX5*|t;kttx*k0{k{*e2KIY^joh5XZxpixF-+36R#KP2R%w8-1sJtf~NE0!rB zoj#W`{n)gl3*Wt|+t=yk!A=_f{bV_ob2PE7y1=M@tNFKa5qxnVC3KliSK4Hjq}Q~k=h zCdo9fO|;g1MMX*}f1XWWkeokSj9GcNce)h4=S&u_Y50T%slyUBknnGbF#O{Gawk|m z-#zAJroxPtzFA%VX9Euc6q^T4aZUoyo%*^(Xaf*5LdkJx!GzGQf`)cIhrjW^+VKA+ zfIseu#NUv?orBbKdAbcagCoqngdhl_0WB)z!Kkd(!aFRmoC1sNO}O~2`Ib9cGCqPw zf#pdp0K{5#w7=%jp|V`uN#@X!ipxYv2G%Vue>*(!TPxdP6-%`GRTs?zIT^ zRHI(nnOqqHzWdT^lv;(DJNS*m3OyhugIQ@Vf8k zX}S_cvcz9gGx^6(^*Hx6R12Yh(gSG8Z1C6z6V`0g&aUiRdPtTp#I&CUQZ_XWxnQm2 z_IG*IcVj;Qk5=rXA6q8ZpTzZ;^$C5NkcALnsa`|HLwAQ`DpLA)aQRyTv9ewds&c3H zqC%kV$gGxf`jjXAJkCQ`=e<(3ydF#Kab0^vHYX@rG?(V+5W(24B0JIC`n&0i^tpc1o4x&#ZclL5Zn5L3}W^M1JQWACKsl`fJy9bya@5#S89# zP*3En{uf!s=&56XGLV@S9lMb9d*G|4&rm3}u^MHqJY0ATD97CWkY|cnXPsMvyp;p0 zPz!y)R~nsxPnEy+9&6~00-c{Odkc3Ag~v=`26woqG`)7WI>y=_u@c@mQmVlMbW>&< z+z~g$8w+!&us{7f#~!w^T2QJN-MAm}Aaq7|YLQqSS+9uQWv5OnHP^#jVSao#5MGac zl;h}1|2dw64{1M9$kIB?%$Dq$*J}widWQ|)B2W@#-$eEYzuagOmL;j9*Ah0GhW7Z; zHM8Hhgix-m~gl=93qYD}$CtOuTOh zN%=MdFO?Hytoa-@=jvlM@IfAnT$59#O?yzJ12+uuPo{-T%HR_?kPV)m%jF`V?P$dq z0ku_`gAPr!MKfJXu@4z6s(h@Sh)^Dj@=eEEp$skttteAvBWX?Ei&TGa!Wq_Ik4`>( z4n;nMY!vu-!#&;`I2rI-dz|xMv0P zu@|oqT8b06a$%E0hg+{cc>?kM>8fL6CuAHjwL;)Q3HsraaaRhxKAxA;@~S-}QBu(B zEzf?z|E#fsn_v3{Q@>eMGnTsv(QW8g}8g2{DHH@~XRQxR)azV^!k1qhoQ z&SZEAMQ_TC7+r=^jX;AIt^AGShX=iB#H-#u2P0sw5NN2vDCB0(jHg;cuP+Jez33yB zO@l(39kZTN9i=;ayxxRFb-T}(O~hjaK}^dBCimb`MO)=DmQb&C5>&Pz;@#7l6+b;~ z4&gbGF#HnV?sYXLo>md4r=DD~v)+sKr;+|FJ?^sv)b*~HajzJ+AV0=(eh}f_@1NeC zdK*lb&GOvVrwb)cYJr8n1k`7(eDJ|#4+o6b5LSni0>y;o1))_#ustc$3<`U8@;q_I zTPR`eTcknjH$T&VEN_Cd;wyNWd~TBTtf9ejkMUXmZIa0@aie^RRC2-?fggt$kq3@9 zhaNLLY>VOhEo~R%C6Q2_<~#hk^ml>cA`{^vZE7R&W8B@%=7Se9!Yuw@*M6l<{w3Pf z+L@Jvq;lc;itWReh4Xm5jCJF)P?JKP4z0vvdv8cPQTFvhHn?;`9lnJyZm=GH?M8w4 zGZ~DT0>w%tdW1uJhK>4u%O7=cKmQ{^mmSw_fRF%~18JnZ-atAiY-}i0s!23hYS>FiIx2&| zUY8Cfv3o3VOnh>LEJZq@Rexf}h5lTZ;t?AYW6cn8B7ZxxCfWv@K{3jO7mx@W5Xkia zpn}dTvP{oubDt{-u#ajxVH&s(`W`16pL;=N1YLa45b3%XB6wlO8(uyo_08~fIE2sp z$bHJK#0FUr3(s~cDk{5#A+lQU{c& z5EEzSn)Hy#))q!;@_x6X(m7vsJdX#1v0&IAs}HpfxC=G2yA~5nofHtzKHXyQQz7YJ z6sxW8e0R61;ocLkZm6~;yL`Cc_+=>YdG1cEMbMr1Q|*9V2fI-hZYFea%0y?;6uNo1 zi~HQm%NqQ$`oR^Y(=i*`U@TzSH)hP2WZxanul%R|5YHY+s}|*&V1A>cB5Ct9U??R! zn}hf~-XrP}+120Ibj(WBBNS#zexn$lS<=pD>i|7`v^;6G%w{X;aC~fv_xVw3{9~4g zzi+ey$|eU^Sk9zsn*FnQy5x7_#hU*+ivpIUz@ioJ-<5jjP)MJLOD+NO%-8mxn0LEf zO~|A$ZRBkN&W6IlNXwH1EU(OHi~453ZJxsJaR8>R;GmeH{~IrWCaDd!EA= zD`Jh&-Uxgw)2wt_kq9Ge)5x$c73(py;tR9T_j33{tTF@4=z>pbJ9{}1C99k86licb z@3=U%_D@MwCIY;iO=kyZy(Q}0F_N~tm+XIh+C{(KUBWS&Bt#7H3e8@V=NFU*I3A4y zaF2{N4t50N>m&`4H}CLXo8i7h_DwG6rU8g{Jkhr{1 zbLXUmZyu5VBP0HR3P}@|-Vc^(7oclBXfT}ixVkvzT6 zEyf_m8b_3EiwLc>srQIR8IHrHQ+oY9gV|%ld@tvtAvhmTLu5XI$$tuC2{s`ppnMTO zl(UscVK=w9HJgtZ1wxXokc|~+^d{SnGs-?8eC*Y`q?x*ev7C>AcEl5Mfj*=G zE5Isz(}1D*d5 z#A_s3&Mnd`e}b@)-VnoGzZoPJYi}y#fEYGq$L!2)hp5Z6CBN~CE1F;m%J zvD@wg+G9-hy{Y_jh+}zH*+^a##{7-IGar4J{&&f>)f^-fV2u{MREW$+S}Q1 zbI8M9Azc>OCImJPthE8UFKd3oB2JDZ;`?M;S*2k5^ruJBFvefzMeG^(;(&eU@a$$$ zJUhU%Xc7Ym;3D1{3IZb(!Y!!^sY~~7G{Lrpz)H+!;je0oil{0i>fl)hS`glgd>9_} zS&m-OffwueaEbpHb$xLDtrhJ$Kd-NMZ&E4$8m8|UFOZs$A?)oe>gKHHTMT4OHZ%;& z6Zvr3?oWot3v)wVG|S7#B;7?%*tcAIfxbuWxRF{jlmAuT;9QZxhl&6!AS47cGEF4( z%B1cyPhUysqjI%t{NS5>|0>IFrJJ!r{F0pK0@QYP<9U#`&5GTy)(0WCP=9se$N#jK@~0b{`6URO_CnE zMhP!h)n>ab6j(!#Yyx!i$cH*8*0bkPh3h(28LS6}c8l}#425`;Lub8%yC7NMX<_?W z3=;tZT}7M5l_Vn9LRbjco_S`~Q7+5(M0eTkrpW;WCI(W9(d(9^N2Z<}wSkxuJN8ce6tkMEmr zFi~RIg*pOIe0;6DorLb+w19kNvILEtH*rZLw30XmI_g5vNFG!F&)G=04Iu2xK)$oC zpN-C>93A07I?Np}@NR7*t}~XB@OR9@Uja4|0|OgH4^}<5pYdZ*Z+FSf$LC8fU6lH2 zKJ5v5d0VQ9(CyUU^|T(Z5bLK$Mk90WjN_Exw^~O5uyQQqw#);TSipBvMEL zM|Cw9=h^TwCw!uxmSsu4iRsXl3}gJDdZ&%mRx_V$fAw|%|IQ{eEq<1Lz!F&t@%L&P zxY({Kw5I!ZI7jgD1j7qDVjwM9>sCsU_xIDxPZ>Ikac853$r5AWm-%SCHI7NDXhXsp zcil3*Dc7(m7n4W&u8lcTI6Zl7KBc^}q* z0!|%oCA50HcdG;zZzr!@*^4R11x&5q+(IX@l9F)qU+bW?xY(c&KZZUR(rkHgUz#E#r7~ z+6;DHQ+Z|eT0Z`K5CGGPLWoS*@=EZGGO`bj#e&9ivn}-*@F6~x9UeX}b1JtlaES_m zEw0YSD97pjC!E8$s!yv*N`}tLhQuKOXJ8SK;K8p}(@ZhL~!{NWSkX?AzCBh5R6iMSzVh|CyqBN5-s;A!-V~ z@*Q>+4$8C6k`{zJue=!Q#A-0j>QN`pRjk!frhSUf=Oc&p?q&SA4=N6U;F)SSLATH; zZ5bG&VQ3=87xd6tpwql4V2tdMXx1xF{~AyG5gwD8y02)t7$Lzzh76%ygg{#+VTB{N zLi)BuHQ7$+>PH5zo5*^4Gx3T}Bc^P=hwiJY*0XVry8>34(E(#J)svfgz35lX28-5? z2Dp(tNl!P2ohSEoELN4;SG8%6%uaXBH+F*-s~A?@G%m-FNfAd(4^$IbDdo?|Be^c= z_3Pv2*{7SwoNba+i%cdCrNpq;O`l};M(PtCB*RGN@>J1_OKqw9e|~mw%53#)*J<_D z4RN+D-K!iuNih9mE+ha`paS}^e_N{V;M87rDHmM~9PeS`8d=X9ROXo0!RofbU6_9m z-ovk0-LZK_89r$F(VkO5xK4Nul&z+r!UNkD&K@vH4N@YhASsS8_)cbYQtx0fy1Xj9 z6@L^c5Eah6{N9Mn+N6xZ$HjD_~T+};^_(yGjJ@b z5S)w^^Uj)eyx#VrEN9*7Cg69SL1lh>$>lg%J44Cxoh$Y&Q7_qK>R-*>4_C+`^;5!X z+Q2o59;eFY zNL>o6db03l7RO_J&XMPfOgTtw<)%t#MS2jfXt42H{2BGK zr)rv1-Ra6JINA=Mql%sI75nPpj}5Q3!$g#bH8p#A_Td#jrS|<&z&D=5zTb#!)Bkyh z-=0LPr$8KetX58*&7e(2r!u~YgjS+F8}c?~14lYus`|=%HF!CjyV#ZGN(|?q3a4eF zTjx~y&hL?oKYb}ybXn#ev8g#1XaAOAb4~~qhSKLWiT->xw|o^9N)&78`R*{hk}z32 z%kbnFhYzaeCx*U;U>8cVQnbJuXwb!&Xz zUUgBfg~NgP7u2!;{jsYG6{h=aYsLe$dncQpZ%H;9;f~ber6aTU=@%GzC&6#>}qtq7TB;_o3aRgfO zMC$CZh`w5!nPQtnY*Cjw4Zrg2ylMe#rhGu9J9Mgp6b3>Bd)IAQk`>taYmOD$l29ti zV&%QV_!em-Td^eel2hZ^)PHQ-zJ)eZFO$2sxLD&uz%ryRsVx^hL?>sRUn2I3%V80n zybfWa6o4U>1v8#03LBpy#60EFcHOC~dHeTv0OHl9qym@#s z=r-JKM78QL>sen=QeuHyoEG+Db_p5jI|2C;D=^0D6uBLB2v26_TnfTzkacyUYUgRq zI++7%`(1TZt5ppM&QJfv)8A|*74~5y_IK;-3kO~%EA;lK`_jqzHTc{QE&%A|i;xny zwk_V^_&-66b-bK5#Q1saBztU}CYQ9!4i{m-4L+|p?>&ECISXa+uL%@*4ZJ2uUt~mR zHpBkZ^W8PowAI^UYuZBhJ-|;_`EnhVV3%w z4aOC}c~Pl!X#~RtL9dF-?Rp(><2});&{BMLqRaU)WPGB4QDftdE#ya>7*6k~G~Pc@ zXN(SUKJhC%x1h9z`Nt38M`azOgYUApDRy?<8p0WYI=?zS1No=w+qLz%*a4G-yUXd> zj&nk!)ePw8_*r)44)J~#p&WQuR9F@4c3p-^cW;yy;5CYafBDTv)%JC?Hl{`Fvz~~0 zU2VzBRbMPqr?PJ73VTs{Pr-zKEod$3$LK_XGWqX|fZfD%HV!;2oDPL)XEjyDGUr>K zaCqrES$fx$`Xb)N#ZN0Me!Btaq3N3zhFn4~23e?V@C z63RaH=k4SRvden_egM7yQdd7>p0|R_c4)OYB(E5<0pKehhYY}2fj|}ax3Gt+JrNe- z}92OLe#Kkty8^Dnq42QCP^1Z%PB@&II`nX;}bt+EzWEK0l z&SpzzDCBrmfh%)Xu<=xY*h#${ONxDL@H?;Dky6<{zG5;2p;X@y}L}TfHutUqaEZqi)*aKGE7hzE3e``k8@!#=dxQH;BjBSI~RZ&+EmTe z2>P;D`=*e6rU-a3`(xN#GZBS$pT}q7-Qauo#D{Z?+(Rvmdt|l<6G7Ggs!vrw>9oy( zOv7n=MjF=~7pVgvFHdqN_2J)uqqZQ#o016=`rL37p+2+&>D4+*G$~y?g_trfEwt4z z!yB@cT5T+@)vu(}S#mrnR?@JIbF@<8k%;ff%md(H1I?9A8t`x~1Eh?ixBJjBw<-dvJ*A?~qJGb}NrBco90XE|5lJE4SZYGr zlZorS6mY~mT@8soA&H}%ksfh;mcNOB4_CQ4s=npBx6FuZN6y1Mj-L_Vi3Xg*j7i)a z9Rs_AbjpxP@ z4TtEx08;Pz^`}RZS}gy7HZv4HgwMPSt#x_4u8e)AsK^JA?Q*jdQ(vwY&>a1h6^rJe zeITjH%f%T%-ty?*dOU#RT`y4D%dN5o7oFT%1d9ch?z~5Wl2Io&;4Ttcb0W;+zIbKW zK`Ow7BsJv7o#=RZxHt&5Z|s3bvNQ4%;v1_;L)kYuf*8XvE5Ut~ZO7eIVR@c1S~$G+ho9j;0B9|CL_qXS}3hTqx4Y z*aU-Xq5H6y`~8uTA-&koK{IyHA3F-nxMVFzM{@Qu9eZcYIR1c|MglP6p# zk^l`s!%0cnuJAizm)Dt+M4t`uw$_Ca$+N$Xy2M8}M)B%xKLETAo1dRYU~uzs+%RgQ z<3z>>A5!x!gB~`PVmfPDrlD$URcGhsu>DPnJ58T$kIH_Mo-UL4?3N#0>i{f?tcF`N zn<3!VJ?Scp1%X8)rIYNggSf90SB7sakSgkeAu}rkt-7Vgab$N2NG@*8 z`sXAfwW%;AjE0m3u|7~koNQ1%u(1v!LZyA+!^X&5RX31rjD-(eZEaMnLT~0 zzak`ar%u@)ESJj!27OPUB*%ZS!Z|LQGv<)QRW>m)rF1!xjD z)#KEYDc<;!Gud81Q%FkXHy9S`uaPhAYUFD+t_|;_BHw zTPz+m^CCE}ipC;Xr8*Dz?gCQ}MRW8{niD!SMidx^~ zgW+Kvhf)e786irlBK7+s!)tkf8!XjFKO-vf$z3Zh!_-R}1xMV}L|-n`pDq){X) z%DN^)5NfTC;*X)zWCYF1Qbr_?EL)EIUrT#=p@&M2F%on>SZ&j8rR`x&t%HziOuAF> zJ~_gmo%C-7W~_{~ws}PEM2%*j=PUom+V^MLGr)-7_Zh549c)<|o~YUNgvJr>QRV|Q0GKO@tR?%nzL9ryf0R%&i0c zRlG~O(%kSQOt&8={E_$gf9W?W2qVeLx&E{vbR*kA#;*>K*cHZpC=(voOPH@PN zMxc|@n68O?u|bK#>MRiFj&j-4wDU>QSyEdJ_8h$t-kbnoWEa%*47$jDqvrJ|tb z1OiR&7f`>4I?V2Rs2(ORF5v@kDc~i1O+v}jZXSPr)~pvy?d&VIRe-#Fr}+50-RC#W z2}!UPSJ4S;;53nglb~+hH{Xjsd-bu`>{72tfw-vY28Fe`>35$9>ggTbd175P+cgrl zWIvqpw}au@-EiNv%m{oZiZ>LAcREfx`8Yj7M_39Jhj8LBeikT3?K^^4Tj}Ue<0!Ls z&8|vttgP8_TI+Zv7hbSF4=iwx02(+~J*8{8ikIo^=;;JfpnD5!w?}7)zHJmQP zw1xce$!0>_A#;m{J4csydp7Bvs6YD3Gd??n_qkAKU7ivtyVcU}CFEztml^bqhpE%= zIK5vBbz+?;r5!wEybU&Xpf&1v27Y7Gs8{o(4j0g^!~d@rKm;l5Vv|yuR+jKowe>)J z(y_ntpozH{#ckd}mi>mEH|dKT#cdc}B8KCx+%0;BQSNi!%Nxk=9hW}KF#8-mD-N2Y zwDr0v6~yCAE{?-DgbU#og#WZ`b^fKm>BV2HXQ0$K%2Mf@U-%YDsE9bGE59Zheui2Z ziZh#w=E)x%{A1P1ZE+pERq}>&q0d+!RA~E zkij;2En#6v^ATkxv0q;%gSB8-Ay1}Dik*mnPP@OzvR8+9xnRjL>zAT;KQUC;3i)|i zJBBZ%gIlaKM&W&c-{Hlua`fs?)u+5>{ia!r#Lbf2ot4s^u71X3k&cUiP11=eIi%h3 z_sOP^V9Mq|U?RQT9@EAoCSL zX%%f$J~Rj-o>GhBl`+}4x<;YECXeg8-R*G-?Wgemix8N+LBe$G6tpb(7@v{cf~!nL zGTqEQyvF<@1b=gIF?&Y0()lTkq8!SVTL| zFD>(e6n2#rG}MO7+fOgb*`S(x=gZHGM*23L^0=yP#GQI7`W@2_cHn=@AHYAZu=z}D zFS9_v$WU2cl(3y*Ylto|d-tP7SvOv05uwG`zOcuqG=bJkf>VgTyfn+jr&2&if>Dow zS}1#Qh#+(Wx|C0SRVHV(3`;|!A!%7CW-CL z*C?F2b8D8==JxopHBAvpf!5WilV|1hQRQ+JUYE&kr~ZuR)e*=zY$lfx-S`x6bE4|W z?<&TzQP#F(QCU~yE%y_%<*3R__rU#B6qTz&C|cuSqMiToj;Wy&yKOltb4h$z+*2IJ z3G4hb1CEE>`8G{UaZVPAIeUds=bOD@R_56v5&mWvCUjVj#nFI`tzyVbanhSq_*3Y+ z(ED|!{M9Kwap=>@HeY27+a$y<7--i$QEOI46vXim`%nP2dP}0Vx>&AASU;Mw@u0$) ziqJBPniZK5Y$WcK(jB}f3 z_w@mzUgU$$apFXKC88D6*_CtyQDFcdw`dVN~0 zO4@MGvOlZ>o8(5?s+25#KgBgz%_w{~7#!E6?)7xR$o~Naf8E{p6O)EM5BlEeAntg5 z>h2-Q^f82iW+m{m*HIjdLr01QEngoMyE&At6|l%(WmbO$o9tTD^gdWRBIdACL8O-{ z$pNqd=cj9kUgy6kvzsUql!Z3 z20N9PWXOmhN13~RfyYv~Pn2m4WWJx_=H2_bhU^H7I#)e_<3X~l3V(G(5hb6mKdWe^ zvK63kZnd)_)u>gdqyI+wy559Aeab{`r?{+O+8Z|$jgMOZHNj?cPt|G~rn2}bJmtLT zD3r0lufpdjwE@t?KGSWJqwD^}6NE8m)k)Bz__HVt4l*yALvFMZlRfcM>nOsG86pMz zhW#$Uru}vaH#G2_qF8NNW=0jR)-QAU3vnBvXJdjD-GiF;S4!)ccze?jVPEmhS@BVh zkV)Z#KjKqnL=QaNL^>^F|H|S+U!mkmfmC`FJT~B(AtNiaKHCEd-nhf^Zmw?;Ew>-f ze_+PyflXa@V#Qw5&*!Hk;S>|t{D_h)8@=$zL)bx8?FP|n zSe>QD2Bltrk)e3!4NiN#uj{`^8IwG`lKR zjnoujAF^*l-F;$7d0SioVk7GSqyZ+oie}8s3C-=TIv4p;T|$2R&YdjY@CH9iPZX0z zmctbCTl0qd!$+(w0uPR>FUMq~#ybCz!(?G2)v>6`s?iA7TWAdeF%%l<0;r8trF9*Q zhaFT`pysCmVmm4V*AFlRyMgudsx0=|WabL{-zP;^sTTw37L3l_Vzb9B=u;{%oWG2` zMn#XDV=gAZY=BSF7J;u8+RmK&^3#fb0GP)B_6#|^Uzw7uIQXV% z!eQ4d(|GyKal!_aUcwBIXPiitprDi!!1}kD04#JJL@-8FVYf>j5t%X>LfKf2Sd6+38t5CtWB(%R(`H)YVKU|LY2h}L?S1L=g+eGm2}0DeI!WYXKZ>wG+9#)6H6 zB<(v_F_B}T@C0Y_{U-`+%zWgI7?IwXM3rpg4C3gSV3|051<9Ku!dv+bm(8j&VD%^} z$M~^C{_r?QD<0H*&Q9DXnJU>%c|Sn}d}C}&;{4!zUiwOMG#@`u&hs7$k#Cx`|FUFilHJHPiI$Jij5Q-q`!3f&?GEAkN#X7$JhQ!i9&y+{S4DtM~j{L zD1`d4DoV*U7Zqj^phr#6i-`$?+wmF)M}cIfvXZtc+nQCj^GH@_=G+L419El*)KA@# z{NYty4C5kG(D84aLBX}pB!vMsrp82AjB~uL3G-Y)`NYJ7!3Gy2Ay1MSGl`XJlTNl~ zadz2Pzi}(-O8z>z_@8S7Ln%hujXFU=q>wnqD0j*f-3lnWa)Pc@x8*8vCs!$PRs_?o z((}?;V^@ndR5Bmcd)vRmq)BaD9JtInN z7c1uf-LOe37^z;ajr!8~8!^Xb$vCiQUJ3tvme}{9A@7&PFZ?Zjjo+^Gv}XV`*sr?j z61N2{fAIV5X9KJ+2e8AFg6MP(l4X_S#1esC4@C%Q`zKYmKMR!2CWrCR3tMHH5^}zH z8tf{#@&9(>^Kd)1ZX`M>mnk(pW4}g57bf#`OOQ*8gQy85HhbrDRVtxWu=u1*#aXPZ z9GHpZyoYPm#iq0L?|{;z4OsFh33BQeWpNh4U~Bryu$)3Jpvp0qZ%7_32DCI=b#9*- zn)FGJXA#k^JkyI6Gl|f3D-3U*?R;~11TwZ37=D#yE3eQ>lF@TmgvYp%)9A)zZRnI4 zE)FU2e7c3in_nxhvgXs19w=pf7qh`hg@nRgWYY>#;N`C z(Md)h+g1aIMJLa*&W5CK^DoExQ)+WKRs#2noiYD4d_IS^TgxnU0`pt@`$mj%JUtdi z2q5Tlh!RY_{L;YWE5A4GlZ^84c7LYQAl475r`bXDy(sxYy6Ml^8Qrg=?{po)MlivF zak4s9+-YdlZGTXa@Zvy$eSk$p8xJ>rRiszgd-o`JA(i}!}d?Rdw9+j?;Bd6sxrf=2qCUF7$zylBJn{TwJl zL!`++X|bV|y89NGgSYF}yI|IWqO;S3d6K~-Mtts${h0ls1XD`yP>VRzy70F1JN0{ZmX=2B5^f4(RgK~NnN8N#6UhGLE6 z#`$^H4aW# zTjpLXF?ju4@ja63+o}TcC#5K93<6Z~$ZVryL6S!8W?ZvU6wbgu8CVg)&@^6jC zTUBSzTiFa5EbvETZ>o@8)8esRJ8cuDtWAQ^YNk~D?$f>_SgiL{yQ`sNQH6KS0mO_ylR0Vf zw7AZo-5*wsRzXN+%8@R!P3yPbNHuhP zawJC;yJ!LZQ-|Btg}Q>`nUk9B^8$99bEa-hQmn*pzZ#5p2}@Mv&se-`H9O9#k?gfO zG0fha6(xre1btG5(rb4W@LWe%+;WKhcv?0?sjKBSu5H1>{E6B-6|^7tjub9c0b+y$QYwXJyjY^UoO&= z;f}TuzW4riJO`9VfNZG;mM;_g_lvJEeTxq!$Hf>ut2?)3qnNMHjN^KL4us@LxJ%YK ztsY&@by*O;oT`3+-Y&(m-VT8&4;pqmA7?Vki&KJflpTV#M{E{eG1;@?R2+;<#1V;b zIk+>oOHTnem#&D3tJLu$=rWPM086T9Q$waIY-&;;ICtyLyxRl$?v13LJT*N9rx`?=b> zB3+ut-gJJ+e9{?^_)`W6NMZ)e2UgYacPYCoy6NH$H$ zy49_(JxkjzD(D#_iEhsttI?J|OLIVBnN#j|I(gceQKg&y%r3m&`=_SA_ABUA;_?bc zCYSlcS~sV1R5)+KBRbcE`^TnPnGM}LYZt*vy6I@o?0Dt_j_^GyzI_r8I+y)~y! z=(wZLhO+Jhq#;zp(a&A>}i0-y=Wfp6ExE%_r$%AE6&HIJ*HGi*l zogqRrOChb!T}nJ>4LnXub{jK=caxn3+6H8_L7J9*!El(DpHh%R z+}*Am(P@fe9OWyaLwL?t z5712w9DjB8$O#IT?Qvy3Q>pW0u=f2oI?FFw-{rlVNjz0H*eU&8-N-?_Ol!!fWBq*$ zuctHX>T*xW^qe@ml5N5n4CTN7EM40jU_LBx&B33@pMXv-pl`P}%P*r!QpAk}1!xk! zd&rdS+{(KrU*5-Ar25o^ymlz}K>r&0&9M|td z2$T~7zXBFF$6=BGI-~zMc2g=@S+TH1dS8cLy#bOUxl$|ky0AxfRYzp8qpdcmHZY;O zBt`jWgRq{t4Zh3KX)9dQIVh9u?&%5bz~|=#2)Ooae1@NQuF=tK_1@8xynw9>r<7d( z@xt`Sx8}lFmaH3o3j=CbMYh6U_`W2ez}N44CiEzsWiz<;SppR*oyXAxE`ifCTx3Ka;^0C9!oDMVkbEQ(pL`-gg1^9I_RG3B4B zwj4M`NybQR#rtzm+sR+2yVmsu?)&t~MisgvCzHFL7k7Gf6)6#*dze@o1tqYd`85Oz+c(j zct=2-UI7`K10mPU*}jp@g{*g;nEy`M`{rPMbhAS0mck848J9?{CSi@SGk`vFe*}Wy z-_b??dAeqU;1WYZEu+d>ofFLDVa#6avjE;pJZD0C`H>#$6fgbEF$4A+HWleu2LJ&@4wZXU zIYSg})}8l>I?O2M!a3$c>}n((Bc z(q8K!?3Tpxy|cbX_W$@MzTD9QMT<_yo<%?N{+_X4*hn0Ru&-XC+}Co$1g1H$Ql=59 zyw6#$5L`I@l#h9AB}R4I5-530i>xn8qYPgcrjMECB~G?SVO)bJ1qo9B+(7>`EWlX3 zfXIWnh&`27DTEW-yP!8yX?B4ZSVPgJF6%~t)d5cJcg1vCDj}qET+VwD`0=R1pFbJ{ zeYs|VkZa;vDYThyi|lHDh?raWE2R0yJ?JlkO|hr0TEfLo{`~{~oEmk3uL;8HFUCs$ zNs#^Ct6!fBylq=WqGxS%J($_(_P@V`0_jUIq!Q%#-zf3dQ6>Vb_AOjwXNLXv1$>0? z%M6$wE=0OJSbx;({MQ>KsUj74r~FU;_HSe^g71R(*M&j*XQCO{|GxMOv-|r~|6k>A z_MHlY-~Z6>Z@h)F|Ap=N|5ZD_o{~r)dd>IOv302bhjIUR__0aksX4Yz4#i&$JZfu- zw-Q}le~CKko1+1>6+fJmV(zcGTH9HgSCZ1m$9LGBL5`hCBx0|D|CPD=2#&l1pji z>*Q^s9b8J_`cQt#v8RJXHu0-9;m3UE#Mk5YUvOD@p_#h_?ao!fjn+#on}Z+*U6qb2 zy<^k=TiXC^FG3)SF4#{a=M-LLF#74nH{**Vj*VzwQ z0~|KKL^1ZVmLI!j+yH{?_htR3<%5$^`|a#^hHt~|?-oRFi&XjI;NVpY;Vo+88_IR* zG_IDPSr}W0Ew<&>jr-nPZT~)wf41}%YC?ddZ-A5~MCQ)Zsbx~gyL?fTJx&OkoXBR{ zW+8!#j^lN}xN6Ws&*a?51Tt=mQU9Z% zfA)pHf1#1ZtiLQlzarY!SNsH3s#+2Eu$C^D|0W2+sf;2q_VoEuyQC_N?9VObj}{Po zFUW1h6NGn(W%CW2HzqGu-2vQreCiMf?8{P3_F@`x_r~NW!n9WX#6*&`lkj87>tye= zj|GZgV(xc;Y(l>e=ZcOXiCmoU#}gZ~(!1;qEqn4hs|N*V`^n-%JA#V~ zw^Ex@L#)E?`BHAg6^7iuub>5gSY>)u6#za@A}*UHHGLqBK}TC44cwZQ%rtZxo~$?} zNvot0hCxd~HJXvQ&taY4l7%hXod$`MK&L$z$<5PC76>mr1mjd7u_{#SKIGhNf2jeM zXe45d%AEsBkJ}q_m;1Zst%{23z@hS?WpJxcDD+59CsWRwz(J>ng+DUaFUK@wd(2p={J*c6ym8<59)3Nt#2hk(Me7fG57hqn zjqkJYG|zCUU{j~p`qZ$U%a2c9yEFA!Y?YXjM$1jwtU&Sj#XlMIzdn0I6G|$PnsM1< z50yqEznWgXNwSb$Bdw&_^SUIqaw$EYFFx}gxnQ=JRrr-u1#KeR`hnZ+WvhWw;`7pu zc>Y(f>w)guaHHE^hLXzdK=f6v>XqAR8=eYDxz~gGJ@)1=hPH_aC?d_LLy+#j6%5r{ z-&gL~$sX9s=|@uP=q}^3E0P2wWpmQ_JecaY>EB*?=HADvQY8}iWvJE++pO;`HGS8sE;WuNU``bp>7<$Ugjd_!21zk2Y{Y|Zb7^DUe&sW$g}{Sf9Ri;1^C zHsqa0n*~SqfYjv(kS8)U`N1`(vKvQ9fGbSZK&u*YHPxcWM8 zFx1iKTGsw@&gphB<#e2nwQjwOks^^XGj-3UUN+aQuNCX~X<^*gq`K~ba|=P18FbnQ za}oE($)fpux@tK_x8w3-DT_0i59xPZ$x0IDgfC(?c_XsFKBHbxyVuY8Xl--lW9g%k ziA}tugzvvK{J&Ny7$3zntqst*yj$bB)#-s$T=W}e^O z!w{k@D*MN!?Qv4Kh+E3LUnM=>Y(j1jErpq4Vw_M&Ksg?51rP}i0lbE~IpwHnIksch z>9xgd0%A+7_x;fZqu(60L0Zb;m^5owHkhM#4w+M@YLDfl@~!5Z)U$HZR8t_=IqV@I zrH!s`F=M_h4fH?0*0Bp|dwYamP%YfO$*7}7{^)zX^~J?_{Oq~3T)p5QX9Ec~O0iN! z7zQ1ldVpZ}iO)Dd3ECKYRk-=h)Y?T|8XJA4#!_*5!J2FPx^O?2%F;+#A)qI$0)sI< zy|1|bEMAe0RjsFmKhtA1476&cc04)N z1a>w(>Q8VF*7R}paQA@FfTHRbNMs`ZSlTD-(@t}hk`zX4^O+3tlG@EwEN^ z`P|QdTV$jI1lueq!?EKBH-`$+55|VuFTBp1HVy*AnGG&h_z3C;_N>#f4G^LGOz*jZ z1+plDQ;q@x%QgmHYA*~E?@b9lvAFpjaC!1zqG@Ze#W0SLf6=qE`;p~eGB^YGyEk=) z4*|*DRHR`L^t5q4^h3m-|GAneaznu@716MPq}; zh*vGPmn|vb4H3hu>Cs5&SVnb8m2nQqj0620yaCYky;sLsZo`LPo@cdidGoX9pOrDW zy(^DI&gPr4J^P^(-e6&bTw8?iuL~YC!UK>yNQI4~OIv0mq zXwNEADz8%5Z#_V(*Lug(FUP!3QkL8otMEQ)C40|xes<`>h_o{Y{%lBnE+V|C_%XA`YnbR47lqTz$k z?b8lPRj645IlS+OC?72!cGu_a(p?LQ50{5}9Q|UTUHW5@O-7|fKiu#=yld?}m^T=@ zdEPo*9ar*{HCHV;IN~2ebI%ON!-lVYi^X+$0SO5e_bMZVO!$`Wy-7$?6V+J665X<3 za?*%lOs^eHE>wN=d;d732>uLaIRHmko;@ITX1jbuvk;9lG}dw3X0g?kdT!+Jy{xyu z>WA+Uh-y_aPI62ch8h3n?lAy5(H+Q1u-*|We9v5V*+|*<_mI2yKqgL{?vr!6A2X+C z>wqN9c#GlI{YtZJIr;~m?$+onNB>0?|HUVAJrb2RQ~{s+4*#>I`q`(1`JYN?RwCKf ziaPw_&~ZcANF$rATlq`5jgpGYQ%w`5U@Wb3VY zpgecQMng%f;Nz(9Z!U5tI)+!Q5#M6eBo?qcEFMfa$6XIJexio(B&yp`&1>G=>hdS% zEY6u0A{c?#Wgc&y?<#q&)|ZC>?>x`z(rjLN>1G>SO9f8$4Ei)EPU7#n<3AC>h6|KA zC=x}`ursy6GSN{HEm#z(Qk0&;ub2M@iazM(1ZH-;0mNFOd+sbo=o4w>VzvEJoBCBn z>67qNMW1*-7bUE|dg7U+HGR1#0n0lKFJMa zkQ4zdqs%Y@^PHN1uMph%FLMoW4Q0N2&L=kL#1NS0`c@Co5iO~)t?l(bJ{-I7MWN|a zH=1_wV<(shE=yy}cWx3sqR}@gRHOlNfO=~k#Erk|u!0~Iwn>Cv^`g79P&oas_y%|t z`NGvz=3(Sau)M@dG~;dP+K}-pkG=%CZGDILcu<)hYmu(}ix;;+DG%oX^XBh+&qw-# z#Id^*iXz4Dt`qW#WLqCu3e@7n%Rg4&oeh6~Ili4%$5Yq#w0f&>wg(=71F_9AZ*Am= zaG+3jigJ%}nd90lK=SQFZS$68PccC(zw*h;)_n_$w@KO#E`o~RcG%D+6u;VE4awGX zySnB1-lr;#U}tF92|?4hF?4Si*N)<$FHf9&Ii_nOtr;V&3X0tr^7!Vr51lx9vCT^} zeEZq!J~WtM9Gyp;Fbgg?`s#W2foZ|0`mV1kBCHn&{^u&|NZo^f5plRTAIZ;b{CCtK zx2zf)9-hfq(WhprET&Sy-cv$?2z9yZ=-N`BrI^|@13Kk4&{ZSr}DE58{UGaMd!Qo-Gs zA3pVI=ap?ezD`PpuhF~ zG(O5!aQqw7L}I)m)&3_G;QxD>c6Cc3Ub4S_{SxaHb+o>^2MGG(WTyYS{i-z?Z<5WpHFwH}W$d(5!N<$n8cke=*7V0O2J7V#5iKNLIdG zXQ*>HxtzA1&!H_5l}+vDdb^c^%}D8iEb1L20>XTUm4`!{?K->MJF2mQA(!AEc4AdE z*A}Uy;Ew~rF-bbfWlPVZdm`c++b@4=`(?C@Ws3n6AP^VhhbK*|B<0>{wR>gIp2K$1 zjbbfsD3IrqO@s$A9M4RDBUTa@)&X1DZuw|@-6oH`epiQ#5B_Mi zz2yxKXbreh%wY|SOqG|pdwc6$1!nU*5&pg`M-T6r6^w2ahn2bjsXqMh0~;E*tqLQ5 zckk(s0ca6p8C20Edh#I|Ts}IOpgEN@lWEm8f~p_x?UA(KNnZPlEq6p^i=Vi=5});I z<{vS9)QL%2x>+DpF-rD<;ask9GZ0UzSuWEa!Vp2Ww!(MP5u_x_M$XPTp#;G|-xnZO z1vuoxQ`MR>MZ0rCGmG4>V6j!7=Q|i58C5e7XHka4e)0Bc>UVi=2I83J*;U1U@C{Og z2{j@wv&hL4uC&T~b~I-2TiA{hhp)F6omJNx)scZ`Ht4P+xE{W~tn)0QJ+}2qZvJm@&OZ^>Et+p- z1zA2E6hb8;4kN{=m&5>+w^`8e*Bg_$=e*I}qeQtkt>ldLf2HX7YG2I#SlA+*Qz`J%9lg4OPBHpDpNhp>D9A zz~wi;2x!PtZ@@xU2WwC6fuJQX97`EhmyoZU=CiGW-nek;@Mxz~u1$nPLrcpFjB1S* z?lf`VlDtK`8f&eoh}kELbPg>36e|6P+ZC)$X;Dg<;xam`Y1NaKWs_5^?nrm=?8y*s zX^JZhmbajEwfXVg)o22_wOt@Qd?oH_x#oU|Q229R`xy*`P5fy5z1Tc`mfdp~Awq3j z5AKl~IQ}CK(^v`q>rMF;y??C|aV^dS(?8=|rgeP_n?8yzZ|#;T9>E+(`_CRe8RYjj9XI3Wa$?!o7=Ac|IMLXB^j}F&-u4@WXxpruhjaA7 zT03UF-MsgASn6Q$tX_7~Tp-t#dEz4*Qcv$iRMd)gc|rPC3}itaS)JW>p;b@49QupC zw7`6Rw^}DBvi;SSG%njOfxMg)|4#uI51Jr) zw_LvF0R)?ya(8TQ+Vjk(vJI}4cb5&pN70S5O$PYWK4Qm4^}ZW~TO-R5-t@5EDqt-s zUWaO3vqG*(lc!*aQJIwcW)Gy9Xp;!s+{1;Q@Td=$n_E>{bo}0{xZ(%4RisA#Nm*l% zKKDE|J*;C6k*B!EL||rN#q>=Ch-NXQQ}IlEA1TWA&;uZ0Bg?1RDC_;SX27WJb<@?X zz?%N}w4REWXKIvde314>ya@5~iN7@FVc+y5+v4f;4Gd)XyrA}bk@eAf`D6wg8`--WTdR z0aEY2sK-}I7{LL)1mAGrH{|Ui5&dhx@Fs%y`y05iH#qK@qOZblewl4t6o>6cK6(L# z6<2#$Y_8}Lpz4vISI{krw8sm(Cblb#hYutAVc-)!2#lG4PH(7Aji}@VPs@y@i^Hrj zQS09)ySK)_cGk6a5kCu07~1Ezz|`S|uVYttd{RRV^fdMs5dtj^f*lP?Np{8$w6Dk( z{;h{!_eouEJPcK{A6>WuP5tRB{egXtr`uIX;ExhF^v5<4eFi}kx48bM*l{cO-i)kw z10>MQ0X0E)Lq$I_=5wmT?Zd#5Pt6-V8$qhRr=AQ`V+bNIdR<@*i2}$d;#`(}5rmt+ zx$)%*Cd;WZM{>YQ+SK3AfoY!Pd-u+v&DQ-7#F+w|!Ni?v9K&?rr}b9-;<&`6%4IMS zWpEoj+4T$Nu&mQf5S73dz|T7;bON9rOGS+kwa&0H{nMiVRbg>j`9T${Lt z;(1dSd@{gJn!O|a#)tJAt9Z8}|->QWYKM$G0Y1ij&oNf(#!b02= z86Z8z^DXrcG?-CC2^=6LroNTWaO|P~`XDsa6r3KfiW{JvM=hLL&8$Q387a^tXrOS6 zZHn)52&ZFzPmNKj`{hVkG15^1o+}}hE8m+XV2>(wCu)T7`aV<>9f#EvCzaKLU+lYIH7IMr zAa1xYRt(G~9?8HoUy{bt@&=fq5gPk`x;#HGVThWQ%P}M=Wcnp9LG^7($mLONU28`> zH4+tA37&EnRj#UQ=Xh^xV|sN=P}R*D?rfpS@UGdh-VUyB{Yf{@C8?1gE%E4~q;t3- z@w)e&N%Fc1;{JOy*j#K7X771WX$W=zHN|1nWAMh~u0yW1aiv}cM+bS^DeiTp+0z1z z6L+Z!n~>j)!zzPdr2o%K$*z?g2lcbTb`0!`Psdb8YR#dK}3!|mezgaITBSDCE#1mVP~RA zGV=Jqo^G^MDkFxlsJ>J2ck%b{L=GhE3fX!^W=lAVbk~;${b1-C-3|Aikx2YlONEZg zWg)D95vD>W^YU~xXApMaNAeZ6-dqfq*n@f!RMAh1YFpdEaj%Ak3G^G%cL?AmupH<) zGd)s{?gMFNlWV)IsZTK*(>au~;geT!ILZRcrdz=*1gx^KXb_QkNdmqoV4w@BBlrJ~yTof9-jdPbry@(?ur zhMv{I7L)Zv?5(ac4E-CAdb8brWGo@@@bFZ^cehU1rxEyx^1K#Nr=NlNhWOXlxH6BA zebIc8+#eE*4FD;L%Jno+0|8XH}LD_c0jg&0k%S}mW3;KmqB8VpjY zuD(r&1a`wKmNdXXAN?$Bj{Ag3s1Ptgv9p9*=|L5Bs{^YsGqo4+=1jfLDA&ouFjXABJXUWLZgTL>^-bxWRO=#3H6>!Zpj5gBwjT@8-@se6O#pDQxdtf|ocy zWeo9143}NM;!?#$!zSBY{$6bv`Ke`jO-$l|r9+OJx@J)zG-598bPOGL7}06c6?6zS zPgOZLahdMP%6O!FK@!h>A4L!uH+TX665nxKlx8DaX7ZDIb8;$yeo!gm&g7`qyBqul z+spUr^~S==AA=#7QE4(&#KBPZV`~koc2Z@8tyx^Z$hHL5Dnq|doTd1SZ?F74Z)W$8 z3+;zi@NipUZTAdVt8FQHnZuFv(N+~v>l;a%5Gpg9Z3StuX^O%V2CW4N9uje}<8!5u z0wOUE)SSzLOwq3~y=i)RbMjz9keHt2Wp8zFzD&{^s2Ojq&>Eja;;?}eC(9KT+%ZDB zExAg=HxOuECph+73lE5VQqfO9i4Fp@&`-L0nM_JFNyts~xbYZ#92O$FCSQP382z9F zo@{@5>@is+Yl&hkWY$u&Wj`C!s+PeZ0~_Q3Ag+K^WR=4~iZqv8i%uk#YGl&ypN*Zw zBM>K3RQP0(Wj?7Uq6|Q|jmts4Fc{9<{*Er%HPv435MEfCMYDs!w#uniIYH>Y&gb-V z*c+@Qq!&9vW9s=P^fYjwy9?DjaitNR7w~LmMc4qN7;^SN&h2B=iZCa1od$oWvHeroE&%G{ExCv=z}JM@f;|X$P^|{j)eK^k>27L zM_aH)3#_5>07}WtEHX|c0iWb$$pX9f!DJqeMoE4xW~Y90Jjlk+~TX$`HW2q zMMvqF^YR%!uOtgvx88O*KFxYb+Z%ICgXhn&iF_4DR)9&gL8M zkg=7gf6B(27-Ogp=@VR0^8=qnvr>#JfaFf(xZ#;6Id#l1EDiEXVQ5{bx3R_ziN8TZ z+WYDnWfQ)qZjnEAQu}Z#P-_AD7>h3U+C_i4`YnmqjUgf|0!%S((7ryrL6$dZ+Blb? z^Dx*7@ql2UJm~C&X8!hs0SX5WJpUwor)WiMOkk5<2CnT{r>44cqAZdjqA%7MiFAlX zH!IZarX)XBulMP&5F)t%(+0|+_xkFq41L7f028EKKMVS5yRI&@5$FGiI_k#MlU<^0oC5ZBGJ`$ADEM5>x}{`Mr%2(k*5c3$zLam%YDl z_LmXQ3Sk}cId&U8pO3wB@;u0P*c%L^BZXPL%q?u(&cdGf5VLC1iz#(-weh)Q97h(Q zgCu6RT}3ImOk}yFk_i)8XGb(??Z(mEoft|3ZoeO?(S5=Gv<>G(!Wg#0*)lY66v>B~ zu(A?X&DG1am_tAxK`ygbd9(EJ>KZn93PyKX2c_cdUUgmdh?;QaUulg%LMn5-W`Mg*{*obg56vrd>`*Y>nPpHX7DpOJuU}qU|>e$M( z7ppw}lYKwS{6=2I%CH@aOlt|NyZZBZIxQI9HWm_ZH~S8s2M~=2(dUYth<$eSt3AhE zsS~KSf}mNC+vX3Cp=`E#Vm;`?AQ&T~3~z76hBsS-%nA8MBJ{0N%dq0EOB{XCNrG_g z+;uJR%Aa{mi_~jA2MRx16u~~_>*!Lk|2+O6Sx5L%=6lU7;zB5gGl$h71!4~MZ1vG> zxiPGXQ6CO@A}6HRHJ^RQxs^vAGJW1P%Z#k-@iDJw z_bT$oE|*Srkk{JJgANXs5LMUm82$6h`=DdC1EA97IW1uGBeaql8p|7h zkL7{{-k|PeWf-T4BH6t|nVPW;5$V+ZOtU79|SzTwI6pu%C}xiD1(N z;Txqp#rETVs^HtJPevcRA&@xOYu`7Y#a`;M<;k5SyQzM9*C3m3Y5&oOwA#oQb4)G& zWBqw6GrHED(OW&c0iI&%7;~04HMX!CVp}Wsu-5)ow{B2lw_eW{e0|+el2xcSMxmwZ zmAg!bI4`q9busGI9(#GVcZh6TwC_2NBd2ty$bA#k^Xp8FN%sxldIo8?E!Jhv3t{TT zn1h(#5iev|>gGQnE!k)}*oyjztj+454)d<*#Nv+hRpeBNoXa|njLq9TI-sYpjEIjI ztPVN6|Sld=Vk@Mb%&OsmK zn{&$&e+%We4Lr0gz3cob!c$YVy65Z5H`vMxMPs}2$P zP9I%$68t@H^U!p<%Q~ISgBtjEnGKC@W^*3n_k?bj-xFoQN0`K2oE6XcZMyw*tMuR2 zg7$)s{_(2zjnZc(xmKNB*ef3ev@nN{2VZfMJ2950aNCks@3;HVZQ7pNe00_c@6S6K z))y+&k5Z_Xp;0D1nNNBA7`9GN4?R9C^n6YCLGW~A6nr>egnmk)I{b>ZSW?JgN&RToxy+ccmRtv_4avfNr>8^ZgbjH zS&$w@JtV(RzGvlKZ!T?H|L3RZN!~y;H2McW_>_zK%vly{9w|(wqq`4s_+}%dyjIfAsa>)v5WA-6x8W%(76-GRJ2KYppu%7(2)s zlazz=wE*fHnP@}~4kkKqk~HAR6u5<%6qXs|wz};Xez^B+Cg<==>?mQjwQYUxvm5tt zRz(cM)a<2oDW9@p9Z*W$6k&op{l+Fnxf^+{ZZTh$!Rtv@BotBi&CjGUdUGberrle{ zPdIsAS=kJw?(lIEHFJGNWkSs?rDUzE9X9eF^|DdVUA#AXcUs$MBHCHZ%5QW6h3WI3 z&!?Gd(qzsF9$91)Oj0VJJfi?i{xpf~M0zLPui}XG zv6|neyrJXwmCa(@w4W6ff`!SPAQaqwThPU+>y2j=(TSeIKLA*_;le+S2MD!Lj7J};sB!v;TFh6q5MmG=&lJxcG zM9@Ya1pSG6+u((Qg+0V}0_wbD9+1O1s5w!$zp{gvkj3b4hM&oT-Rq3&AYU#7G#)M< zPqGwChkOCD_Osb@UI<-r41L|?U6hG8GAZHB@dtN!2QM0C^P$82i!7G`Fa7MrFU;Yl zZ}Tk5pKzkukQYbD)Y9_dhLhSf;o95oPOzj42e$VllrCf(v0B9Ch+jzsEb|%nG{nN( zwJ1YXg%;w6R4YyA&engG9?e=vH{T_6qrYx((UIo>Kj=e6AN_1;z8JT(%l8W=`L?hv zktm5G5wAR+n0=7e+d)%oZHL1cY778*!vvyw2wF5>*17%eGyVno6L=DMkz81>Kd}*= zx-q7JH7>Bd;!}k>bbD?+TYRhnbtW>L(~7B;{{O~xZg@dO;0!K$B&f*mFA!#4S_5le z5Q;w03kC6i@NWJWM17t&gZw6hdrTt$mfIkNncv|^CHwgel zs1?eKm1(jm@-xO{=(LJs@Wq=a3hW(lem4Dk7{*Zk>T%La-Qe$lC>)4p->?6Ge>N_f z&(HQ<`nGyew6XzyON@0z+Q20~$3{_Ad%VSZb=1F~;ag4u^jhV6UCZxHZ8$*v!c{Hf zKZeAd-FM-h8!pEhaIxfZPszEz%GO?QW@;zY_z&ou1eqMbzq;LQ&3ym;GyBbeM(C-* zB8dzj#kj$Q(V8QG?7W*Ppo1^x-e@4LPk0>I#A2u#iWo@VGG+?2H^1tYV>K@F;y%SQ!9IaH-hF@3#Kp4cR zYm}GeF?{og=g2r3X@?R}CUfr04y|z5JK$1p@%|+d%AnB%0Np2m($6mpa`|kF@SUS6 z!zL)S-fUWjM!j4u?NJ2(^&wlCs%A^QB`rIxs$->15g^2B=YSO?wa7=WR2zVAL)lXV zhN-};1IEb*-=&7_J?90-p zPX*YjrSezIM}h!DxYpIK+4(VT$^V?iXnaE1`V+2~7=&=G_TO%{uLll*^F3Nkw^8~p z(F~vr2v{Ljf4HiM8o{H3lc#?VR-`1m_c`x|Ey+-3bngH#aud1Ugl3gh$c1BeA`xG1 zeu;CwpDMi(ZmQ7g$cWfkl-Zju-dckf1YN@!)1I8|5`R?(M_-kN0`o*)jT}VIp$ODmpUzKjT#S zQVDpoQMCpJuK?WyB_8AjNLz1!bD3Ix!=#iuswtL*3b1beHF$weA@;pT3I?3CsdC1B zmqW?26z%_x%&+=vKLiBtd}9KD7u+w4DHX09atCF8=2368O6GZ2ojh5BN9qB()bo8jhOqWJE%X4A<#5l|>b?WAatuD1kqc9vG!g_gz~a)AtmXWga`FST z6aCCPhA+lLNa{^q$sRejVbjrNDDM6I6JXhZud~J08pQ!^f?J*d5+DJJhUD>mV`8-NXfl9(YaWWB@X2~Ra!AZ) zr}*x0iE7!)Jf9pBZ>o~?7ZS=#sxbl(>`0ugfSS;t1hom83cNd<@%i2`bc>1K^ghm@ zzU3=3qt-HszTZ_&)JsJ=)6hG(r1N|K#D!e1g_@-sNB2pu*AV+Te2baz=}bdOwQV@Z zzZ9fzd)%~^#Q+LXKWlD#J zYLfpLbVtt6Tldy%6|L!uz~W@o&ZB3(4-;?4=E5w=cb2mVaL~Ua1wf(2zV?%PVEns5 z{$+v&u)v1ED22exwsv%ruuE*#a{C!|eS4?mhb)6~g+8>)?n+JkL`Ml{!|*gwi!Q(i z`QC%yQpz0mbUaTCT}HKl+yWRSnm8;3yijRaX##}+lAvNhXpY|E#gVFf19H%y39!f0 zlzP2?hBuqf_a$$BfR^~n{d;=bbL9Y1U-f>)9FUGxS}c;3>h@!4W)@zNZ79W&)I_;0i?fcnF8aUixC#V~}u)kgMyUbUXtF!A9pUIVxM_QLW+Rwy@BKV{B=!E9iP$CKGU z?UTJcD!DTJ89V@J`-v_&tEn*(zZk8gS>Pwegc^rV&Uz?p0-d1$Lq8IE3Y#-ESBN8c zQ_jxDng~Af%DDFbI4A?KI9!I&e*YfSznm2} zf|tb9X&-wjIN}D7mAP@|m)ovGVIq%cBF(34nIpnV?{Rz!vpsBM1kfIzy5K4;b2;>% z09gkn4Je3>B-$YBo$#CYTxMC{n_V}hhOH}mNpd>)?@)_sPcgr~o_=3UD);%;BD66z z)n)iTH&biE(riioSr6BYcnU)*Zxv6XEeHl8n1T$4U9i$^bt^cIHg7D1IR0;L|1Td0 zP@L?~`g0aIA)pf9h@pt|$?14;Yv;AwU#3OeT2|79?*(&;SSdq`ykn?MLfx4uDvO>X z!TqA~23@$=(Kh;ZVde8KNA?)XDq2~z$adx4&44WoDcTV183CLA9f~WSzr3K`dLj>E zA_;)L_^fvdzE92M*g#L69Sx{0j>R3tKXOhrdj{|>XFw^j5;sAQx*2b}WOr_Frmcql z`=`lNH?aq>rNzJDn#hDC4${B7_}}CsH!NQO1`Mtd6j({ac;_d?|Ne9Gh4u2BHrYOI z$<{oF)kc&ZZ(5se$-}npl1nL>?9UR7S#9_ZRP;Vg3#%X8243Ygj(*+p=#+0*a=TBh z?yRbbeHhz#9Z2I!J5&+}X%@awt5%6knKrWMR)PFOzQI8tlJ%eqYaM^5_w#4MUxMk2 zPjo}x{mHyg|BD`%X`r(~NQT3pn{%CnNoZZVEIYd{q^p(FTZ2*4b?nxxih1=O8A0(-V$m*LU%J@Lf=0 zZE%|3{w!fWuzv4*c@6)e@;e576!X(w;49Ysrpp$s%I{pv_c3%4whZkpKSwl1&xL#3 zK2&$oXx+jp9!0)b1$+xn?SIvSa3Dx*@3%?2x_-<1|03a$o!s4&oK^G%bK7szb-ii@ z^LIC&*7$_5UJPW2T0dkn=#Vn;oPAbWXv^;&#H9Sx&!|#vsvurk%`XS3kipE{n^5?H~j1GuzYDS%ApFvNxU`&YPduUfbUk|MQ&=f6ZPjOqQ!8d%}Vr z%H4KVq_e}-29{m)1K;HrfbCi07y^Q#30e#C8U%xdTZkK7*9V5%w1-I#4Q!{QSgNI8 zO(&|VYPWg|gMDTIRdLn;I_5xmKfyTEh=7IgI@>+EE5FV8#V~VgTKE z1}70zBOLgxzJsPC!yN`4{v7@BF4ZYs%P*tQWUvOK^7eXV|jCMVf4G~tie_10c@N z5OC1)`{Mhv`?n~*7jeQ{DoMyTm58%{*!S;hA{q{eMUS`2Z7kI3nZ6rthOa&UN}Akq{?H?BrZ03Al0Q-KgC3i{ z+I#zmjdG^*tkLH09WUk!ssydK%pRq7f_9Nqe~EP9@rND=Fdp{*c08qw%aW`!#(ER^^3n&c9bvfgq|5!353_wx!sb*mm0_1~RC2LKtk_>6&_i6@YBNGu=07F&A zj@R?M^!;fkPS^Ar;SUpyr`yxLIk$hJjfdc`;h9$w$1PMw6I--r09)F{5(3a$5-d&Z zAUiD0jwK#5k2`#PvhRP>?0wFMd#lq2w(@D3XT+U6N#U8@`yBC9?6qLO3cqqGu%4$_ zH*Cb^P!Lnjr7ZT;w&t96XzTVrSVsMtup87|B0(X?k=`PMi5-u0lrN!}bel^{M0*O9 zE@uhmIIJi@gH+8Q@C8HUVILm>9MlgdG~WBPLQP6^C_%Vg$O$-*;^x_=;Xyfc=N`=! zlWu6f8Dds`B~^u1BV6_wS@U;F!m`wVZ6!t>sy9lfL_Jd^3kO}&im)p4H*v<(u>Adp z|6QE1(Y56+_xlekq<&Mcj}MWIx@)CMI!={t8af%@=Q5jq0~`QHwQpObKvdkXsY0O) zlGqHrpJ_|f6+`t+z@5vhbF`Wo&MZ@C&gGe@3;!^FQM?3@Z-A=_Y=u2!l+xnRCN%*~ z)O_8dMn-MZvY^Wi086xP9C$P0(WK;ccXzRU@000RG8^OD)nxS_mfC02&UE`Sy*bVY zeebS%_<}qU8YekA*JTD8(1qB0sUmt7FHOqTL{twUkXVe6O|hcsLT{q^401Lv6A7?k7JfaYfnDLM?c*Wlwz?=18N65j%;}Bc9+TdU2Bebuh1sMEKzLLUW@= zGM|Zc6@`O~N=Q;!nSpodrC`w!muqE;L$;>d=kivaq6JE~l5-;Uf<6Nd-P;qcfcWL^{1w099KGf)?yF;gS+>ak;DoEVN&Gi!%zjc zBC7CscnhRpfH|xX9J_*U1vhYYNu`7&qE6%@*p3{Nd4q9hK0$OSLpn{xdGq16+!D_H zabu;U5)QU_6TdOv9H8F>vB)pZRu8}@_ZMn=Y~IW9({@W}GIL>m}Qt zzjxcpuv};mA1HI$!*byTd4Q)Pf$(dj00{e|NalSmQuaN7=&@vQ{vXzi?+xr{EwenR zfprGt0iWSW6qXqF3=7bv)@yrHkveik@K+fww_RrxfPq2Gx>k(}+2ei<) z7jeB*6a2jYA7tRT_2Gm{TSi~46}2Yauhwtn%*6`d1@(WkJzjIt@Hh9cFaE4^fA~F8 zQDo`^4vtf~orZVA=N$SOZ5s}=TT(*XJ`03SGgok(x*5pTu zi#r$C5TgddLWrPI!yDzi9aPVQ%gV^>TX$0P$oS#z(!TUud0u(wbn|oRa%R1{v2PuY zNRG%YE?;4ki%Q@nDGIEw02)dDaa+@UV`=(PA$|+0-}TP4@>GRplQr*R$X=7|r_T`n zD}HT4PY6OoRcsUosy<%ADmKf9Rnjw7m_-&8?9I{nyB0^?cHYt1tY#Ur(cZ;rFhd`t z*{zC8uXbM@qfv}RMTfJVi_203bb39lwrWNuXO64hFYlIgW92m`#KpT06?Z~H!?kZi zr3jb#&ir+aE`=U!TREw0bu6u`T6&2eBE495xcN}fS=;p<1zqc20?qfVR z2N-V7;vHIwA74R?Pr;OJ9!=pGY}y_q~qh_m?-|bxOjrC~nL; z52g$DXdzoT$QV6^w~0t*Vj`jvw}>C+;(NcDQWWj5Nrd_1>uPaIMfrtW;iQQr{C1^t@pQ#<$0Eqh znZZ&#`{(S>-&Kiy8gJNFe!)dgTj{0L)L z-fK#Kg~z-pHxFYPx3y$^eIUrFuv=G!JT!>Zm1qg=V=k9La<*<8UXL} zQfhIDBe*nv^H?W?BHO(|VvwDny!|SWqj%tA`#Xw`r|4_=k+-<*Rd4O1xG5GXg>oQp zD{Gnyl0BtG-wvCmv~Cpqv`#{bptzkBZ}15wGn z0XsILg3?v(gs7S|)9922FC$Yp*`^et-t1IlSah8@kf+U2?WGiFbd-O(1zl5++ai`^ z0p}6mC^{EIzFT=)_dx<@boWDHF(f=a z9)G-1-I!N4S}T$*?atde>IV}2h=Mycnl^78z)IV-&;Ji+Zygoo`h^WEf($)?NSCB^ zcMsB`ba!_%v~);!hae!`-AK1|cXvyF>6k`%3*lYxQ^4F2`dOcVGx-ySaA7!d$c_5FcbkTt=2XVk0rk+4qRDvdqo zwE1V_ed3GhMHi^j%niTS=u9xypL64}-hLqNGc~cFdv}>^J15KHJiooda|)$YacVxY=GdAB->_qZ zhzMzb$5>*z^mTv`+F}CJjf7-pz>;uOMfPSKQx(z32AYp( zEXJn_RxjWI*q@rF{o38}5-Gi9*hBrAFnWG_m_fP|{&s-t@|A?GHham_ILgBAfz?!0 zAt2zK1XeE1w{*6h@Rxu*;hM7J8u<7tg+A;D}iemc$sqBMZD+1{@%mgHQQugvEBei2`xe5hm}dQxFOb>fl*w!-`_N zU`sZx5IDr3oid|mw<_K+qw$pS@m(fvJT%0+2+rqyCYLpU5*P1T^W+^W0K$rGOsb0q>=icMoEJPp6XEml7MqNl3SJ%r%}4 z;G3{*Q!++v&_`@E!E7j%{Fn5p+DpyyE%w=ka^z>E#I>k)Fzu08+>yleKpJ{7n+$=T z+Zr!Zr{JU>i(;9VzJRN^F8v`cVb;9M53)t7b0`D~EPtjF6M36|5>Vg?{Fo^S%75QQ ztzezN=t&jp?{k*udc<>g#dI^HS(|tSLscUDo#F9DWJ5@TAUHYf_Upv4X&SF}4oE^E8 z2|pfh_{yQENR}b%{SW>hjzh)h;q4^5aK%$FW4mA7oUoo3FjTht72Jf&+p>)XaXvXe zInBx^>7jAmU7arSeeDrg5S#_$)i%EA8pPlXVpzs>zP#rBR{1d3!Xt=C&1!xId7v}3*>Z>*^a5e}vd#!!>&^hEj#Ev;) zc>T0wBKo9ljb|WK6j|B3MXQ!YAa>3=TirOCgMBuOe{*)D`o+ggOCDjaM9*mC?pO`! zKpT^QNxZ~9pq|Iz1LFZjVL%^tnmrMyW3MwWh82>^LK>a^Sx+W^4d_RanD#_Jg~AAh z)zL@3G3j!3SRxfy+PZ#=YmIX$YN_9Z8ffM-ICQlc{nr%YOmozoI1Z1fW=uqmN;hMf zsO@+^3bnTJtqlINpgbOK=+x!rtN3Mm_tUXEQtCxTA*>}10H!Z-?0!my`+}cld*Rky ztCv=CvU+2oEEb~_wdW9f&jG)k)MFJmSQTXx_Uvhp21mc)QQ{n9c4K5%ANAJX+&ka? z#}7DcKBDD=$0&HM>SXm^)8(5BQJxe@cB>deK3!vN&jZhxRzTYOK17TmzVj7L^0$|U z&A3m8h1PvhXYeCfD)mnRE=)?ig*KIso%}5;3EtDs7k7gi zCl;o`lMFGB`Y?->D}fy?A7}=+lNi@{2Pmx6lg;nB-Dg)QWfpk?&W*Bpd9;0=peV0x z^|T=QcMdq@OLy>~A{NR7w6wM*63`DqiwWai?&Ej!`RO&+dVbmlfCnL~<7W81ca=QY zA!8|+Npqn6X+4ne3;^1>zi&Kt3-?x$%Uy#*TzaSdG?Q(&pSsILN#6rL$sD}PCalvU zut5OrVCEO`Tvbm4Zyj@o70+hiL1OTS)QC6XUJnz&3&uV z>FJDjNxSu`Dobu|Xiw14GDQg=!AN=tQ`*N8Or|0cQpngOV(z}y;w7SymTCo==>|KD8K*{Jsd;f)-lzQp z%z-(4H;YPRxMMs&xx=@7Z!p!>lwI3T0q@)_yVPzf(doi_60K8JMy$6L%$dAXl!-W*w{M?HD0Dheu==>&urEW7TR z#zgFV`BDh2*y)*fx13TFc0@YW-hBe;syErXiv_+JU^j>mWHQ?j@KH=HIi*&Z zZE?C;bEDqCZN1IDUk!8KOlqZN+~CJI+mt>zJ30ix}qT91;81Ef`e}-K4>#v>uAe)o z>m4#XBPjs&!Tp6YuzMX&f2=7W>?8MbR%NC78#^}Jw13rNCM;^*K|S_KQ4suV{5L>W zTY#CbJHK_8`Yc9q!ek_(iF62koZfwvCyU?(Xx zbXInV;FMP{3EB-nxV^jbj_XToGcR_+AEEtqG$3ytQhZck`(cbI6s1m6@g{1K?GE%R zgc7;>>0u@6fB(;DA2bm_5M3^~mlm-enmEE>12t3#i8`BOqR*OGR`lOx{=Y6mwu0(k z)DtO6WEZw`N(8?S{VK5IV^_(aO8_yTu5#(9eC^-=_lvCFJ-bG_W%3l-BIua*?e(ah z!Th`r?8>sbgj?}Q<3K?@0{O~DuJC1+f^R^OiGXa%^POza= z_sIA9C0DN(tk2m>%>?pXju6J&7a@M-cNTnnylaiRJr5&}VC0~eOs~6htskABX$6}G zD@>*%-KaSIoCp5@KD>|K2@uj;em4+Gc;L}tI$YJZ%nJg&>xAtGVz}rq_h9t9r8ouh zj1zhseMsWg&DqU}i6YOq>mvm5#pC}xvcDdg1L$oJnh6=C6n}4hqS{fz$$*Qzu|ONb z)jsY+Rog}FOl``k&CdQaraRXXl2Yvk<233&a`{`1qxx`=frD}hn1Si;F2S+NX;J8k ztY<0HOULEMob;*xUirUU_~(T{Tbw=4-g_ed-kQKIu8Ft0hWIY~kM~Dv?VtXqKp+=< z1_ksILiZF}o!smq)_{(d>nvc!u4YcEZoMi8!5i!)X4xGH#T>kS8^im>a7$&G@U3|8 z_fqQuQ$D+je&^a*rz_j^`DGUm*fNh%0u%RT{W|IYy)CoQY{Z4}F+&=fI4+tg2x21^ z`Ic>NPAk1)2zeW4io906Q#Q5v-1AhuZi^@FavxLOf5dZsXa5p`+4-VJCYf}K8-?)P zO#6C*T@g&g*5_^=W;!|TMT-9_i=dJF#Mw)FAM)8(w_28b|Ge~!v*&)_Jp z<&aE8w}+p{wb1=?Y+i~m)N35m3-~^VDeZ^vpJi+Sc*o|D_Vw9px?7mmlTJE1x|Z6v zA0MQ8Si)WumlVguOD0&zs|@%Qc}6D!=?xVpzvoYyd02{Rm3;el5uJ^Zx1lHb>G-Iy z#bZD8E7udWi{WN+Azy-+G!bom#L8smvE|V0?Z?h5ajDqnoT|~2wWTbYO_ZCHd0!4< zp90IC!>%I#vqQaW;2bm%%pAk%=#j~~Z!+}sI^wQ+6kov`kic&B6)rzT58hljOC7zL zN9h0_*yVq1T!eib(O!;@yfnRr^g3iV~uzQ$q9 zJ4>8*QTq%gw$IgOI%?w~e$d$rAElm{Lzltl6*{g&gLH#pnzdVrv}7B&h&3p7=bkGf zK> zSfuZwka4ZH|0S8sebgNSulfZI$$r^BX6w?Zr^f;Aiozdtfoy)MUQau`>4)J(M8XGw zBTc*5Yf-pHy$7FB(+@K|R~dJUWgB$@2dKhoql_t({}?JF3Fv4y3UPh=N)5S)w5*5o zLDiM|F)iQi9>_TNZh2^waiUiX%+@vEdb(2zx|-V+*)n=1uzG26)*^aNT&u?q4zN#>CW z;upz8HxBC0HLpD2op=}iQQiju?e!n+;$VYnpIN;@0vUVriO6T>%OSX4tyeFk* zcD=Ke^AvHb@@zmkzTdKvyuXUElLZ8(zZu&mh?|vlSLXwd(4}w^98C*mj&nXzMs9HgtPoLfP-0R%xngy-XXniAg-mSdgaUepQ*O(WHQ}}f+Y$H50%BcyQalyh9qsN`&SNHr( z0ID5MT){rI@S<}-evWGKa`z|h)}yz)W(^=QS{NJJ8i1NRuZx=;}2uLm#!X`tDpBDOnH07=Dtu z2d63bb?LGR)+`%M6#7n0(zq159b@y4N2=|kvT1h6gj*y`y2MwA-a@d9kZP1q?C0LK zz_5Q5-pU;5C~ZgoRcyLR+$$Vw*ys=Jjp!I_!IDo!7eURE0Q$SfjHQ#%>zy!WGTzBc zKl558@w*8AmaW+yj6YU1=%qIo2Gz={esRfaYCwFwA2tAbCa^|qW)+=ckfAQm4xY;7 zpcrZ(bHU;*O>Y8BOo&3hZ7??3;UKFo=}cMHgZ&U1{|aYz9vcA<(4=UHfL}xe*#Qnz zH$`>%O;AD{EIX94b4FC_kv5Q|-;=*B(*&0S;v)mddBkYeJC0h%Z?X9(qY7PyD=A2b z--xdZ`sNI@I7xKj2Ys;gKMlj-Xd^)sybzjM`XZUY`W)P#!GF^a5}E$dOe#W;)iLUy zOD_9n$KY}&iNihd_*HCJhpjrj{L+k7wKW|5m-lw|LU=xt`O1^R7%fMs%%CG}hUtx_ z4mXis__K};;D9iaB=y6s*FvwxOE_^?zt z^!Kv8_O6|>W&(Ap=kMxO(rDFwAP>W$%Z5b)`du9GyYlGe1*|}oKYJtG01qV-K>&DN z*%NWeg^4C%tt^{*h2@6@AO|E=vVEg{CD>aYFq$V=&uL`ew`Hk!OdJS+41OjE?Y-Kt^1%RUJFvOgvvT^hr334hXarfS40bYw`n}MeZKuZ4yT*x5qXh1a ze%E`VJoI6&BcE#xVxrj-K0l{+P=5eYGP>3#p{a)kiYPPd1zn-_T--36}FFJ@qS2YHg&ciYo^2GSPE3zw*9Y zAq-aatrnujjODkl_T7sa{E+L|QlxO_Pq2KXDe?9;-x|&j4KsKOxC@07&k%_Iz-USX zw!oZI+;aG1klqInU&oZDjWZJUu2wf*1RWpcTT&DNVLt`$8bWt&v-+W83>7Tgl%9Bw z{uij3@=|ShOeNt0Zue2NvAC`Kaux;mdr=q-fp6ffi-7D5Q{LORx^fSH1 zP(NZ#$i`5DFnj3RCt{H7HFZvSY9cL-ZyU@d51>2LfM(t}XWtnkY-}2t^=Cv(Y zC9};ABDt7!U?|XieecUCUrobfhlgKS#I$+1+U#&2D@oMeXA$fOKtG8;GhSI4Nlll1 zyaE}#{jMPdQux?`pohLyzS$;d+A_0t9GPi(0`$?v)5sWKp^aT=tW{P?S@ilIW&gFN zrJbdxZW(qSR&vmEz#BB2E2Apfo5GqBipyCrb+|tVAg{DP}dnv;ho$tg!f^+W*^uZRU9ekcnpKtV<5Yya_ zNU+FEw!)abK_}0mdc>u;*vTpCejnNGE?0z zt{V0@sZu!|JVa-vxkcbJR%Gk{JWvGtuC>)X%lJvz^C~o6+L26F*szMw^XkJ0-`^I5 z6s`^71=+G?FKYDL?2S4kSsxXjLl4pLcL!DZy)d2iC-6qVC<_j(Xs+5GWCCZhwxc{3 zi^u~UCxyCXS2Iui17KvJxz5~pZ3*}>kYZ!KDtE|I$c4}_j2$xt4KC2A}ZsC?i^M?YQ8KV)u zeEv~Zz=evfiScP%3S{W<0rEPp!7>^E)Owp20V8eju&jL>Nin-JkL%Q5d0ZT0{cvQ+ z?YF?~6|%tN(PW(R7d!#Jg*y2@Q+1sA^|L=CwV9d2-A4_FKyG4h#+s;DF0_}n-L7Pi zIm=Z;#8E8ROS5G)RA3k!L?KK&Y~trt(#RevFpPP`J*bEnl@>Gc_N}dWe8UgzQ}WT# zO->}UjxpRQAGD=w@JfjDqL4)G<12bxB1dtz5Q!0-@A+`zUmk%WR2Jnz=lmj}#)*p` zQlC8;Y!4StOOd1SMTNeN_&=xvs0o!upmcT7>Ln4b{L-2F-DP=C>%&04)=m7w7quma zSk9ihESQQd<>kn=3JK0ay0Tu}*o0a3l^d@gNum?QGndf&2lWVNlNtQxw=GrfF+5c! z0W^s`a~4l4<0u2kX|UK@uOmsF|3kzMejlZKE#5^d44J=p{$>G>|8XlaDw@i9B<;(Z zRBF!)=)RZ-GVWn9@v(cRaYbNA6vw4bd2j+Fy>Wh2>p8SJC>Ttd9H0ze(nsD{)1$)& zP{qykuu5Z;_Rlx7=Tl(x&GcJOSFc!bLNO2CZ@-aAAG$PW8bQgYIkz949=Ay1exote1CxUI0xE^iC* zdm^8#(9sfHaIOMxuAcxqqMu8uHl5U4Cj zuHVhRFc83VL*Q$?I zG|>@S<0$NEnEAw~-=VP4OE`xRj#reZI+S3jF3JpRhd9hGEE(Hw=fQ%x+mEZd5gz;E zH^=n6bP%f^c`-p9N3+Lb^x&oKKC&?54vLZCK4iXL%Iw3^^vY*1ydJY&RykULlmZ!V zR!fK+ON-6SJapF4Di0;dJ+y(OoRY!1ko%wJi1WqW|9t=>Fb@=_DB->Xj(`xHg$}EES6^ewm$zaSX(HXsl0aauAM+AF=>(8USh_}f}md4 zyQ#_Qe6q2EVT8v?%==q+x5=9x5p=EBTdN2Eg`l4>Oo-&5Gpn1boU&~hShceEDn3CfyAlS`WEnLMIo1v9z1s0yJl1R2WS8Hj zgDi(XBRI^+?}a2CLCLSa`U4LCW>Yf90T(l7hG`;+6mR}t;^?P|r;~#4qL`lc9IStw z;=ehjAhzcrpfU2n(?3Mf|8W5X^h}Nk|7ARxUmn!opZ)Xtvoz%UtKjV2|M%DLbU>>V z7a_EArv4oepoL;=b`|$@;_o}2mQAMDie1ku*qBICYaJJtkcuUKuqPuSQ>ClXh-SXL zl#|oa4L^4ii0p2!=S0Juzd9eNC@?d%FhgegUfpcIRX4^&NilDaIz&r*b{4{#ekefA zQR3AqrP^p-n#!Yzo{u~K`=_-*VxL`EkTBIL7dHFf>-ib95i7 zEpx7ff5?l0nj^rSADpeN-Tt6ybZp`Zr_)5{a}f*hvT@UCXFzWqvG2QTQu;E(4HHu6PJCBR#(j{=F1kUhORp(WSb8jF)?I} zd|GJeYcDQzn17#;Dsl*6yi-p$pq>#%`v)HjKz$&NT;LYRNlDrK{za0h$}62y)a7#5 zDb0K=R$K(DA%BUgF(d*jOZOtvJ31kW80b-h$6?StGppoFP`ZZ1#28telEU>}GW6BH{=fJF1AtOGcNpI&i{E=i{2S_yGW%4#ecM;EhPhx-fjms8h-+;m`ny*}~g z$$_GX(<8GFAEJJH7WQ!O@%HMEc}xG}BUf-JPDU@!Lv8d(!p|yi`yg-{D+`d|G}1I{ z_X|?@Dywl2Enirgwd|klP6k zx6FYRkLw#{HE)h^9vMm+^oly8madN6p%=o zJf<8<&x>ZOMZ=ZAfs4`*UJD-KOxjJW74cka&bJK(uXr(6*B?0Q4tjB{&d`H*y>?f~ z(yH)D3WrgH2u*ABUbeJEZ69@xA#dJDhCSomGUEYf-7ngChYPyo$AMECr!D#4q9um( zK`%{*NYKT#!#A(IzRzO)6ZcgXEuQbm3*VqMmQdJZY?b7#YVS1O<1;Fp9Pymh=84&w zyo*H6&6R}(r96VzeTl86|7>E@HdB=DGxVlpD%BFZt&*^ z0y&|qiv`qsW5?=n(_lmqs}=tIby1Ly4`xb4tzt8sbq2{ps{*=H@w*oQ6y-G`8--RMq((pYQw3abo6Pvz>;Lc z`lcpr>z*)??;VqzW^j?O^v)(m;U)9BYXqSdi?*H~i@Qv74wPaJ0^94RoTGH^aj-E` z-@v3H|86m{+a(o&)q)$*Ox7EHKC^dXN{l1RRum1Mg^OsI&H5Dem7Cs z?K?R~TIB#hQXD?$u`Te^)uSJMGdICT%rY!3Qd>vWAwm;O6cC$Uv^RE?=%OKQ519Qn zqe94T0DRrwRy|@-=e5#M#Nd~UA1EPps7PEe(PZL zqikPsSvNnS^VT%6^DoiGe^{+X%kFsZ9bgousQVHMl}B_dl+fI6DpR}4VtZ9?{U#q6*B%iml!G8W~KSa_m zhV!sViQSiB9{-i{ZZvYR8*r z^a;3mGFMzL-$Y@AD6mH3vTh>?e{Q8w-<>Qi4zmxVTcv1^Dw`!h-=<@<=9RYKj!(GI z=$UYPNe>W4XNi#I7iBUwUKT3>Wxi6?-Cqff38z_bgLW?1@to zq{l##jTLWa;NTS_uBRv7w1xmMFjYMH!Qqq2I6*NBoBe_bHY3Aw%(lrf>hYfbmBBET zp-JUDAgPkF_s9Z9dR;Iu+Z{eC1wuI2k&X1T=?u$Xia_(z$ET;o#wk2b z+&`O&=sE23jUmC^)9fR6ZVXn|1`h!`EeFMPwPyQ>SrNHC8>GoEE7&hkbp&MMw{3!W z82}V)MTqGVz-R7A7|lAvO>DWu68yknXvP;ESkZ=^pT6cScny>J$y^>M>?ZYruQf(E z3o2D35;~sW5C{$uJd5hyCDxyZHBC>0u(N~aIq^;rIkO@5fcbrz%2lUf``5Q$zX#m3 zN%n4Fe@7W^#I5a}TXY*@$uqC8PHAeY+!{Lnbwa8lp793G^@NH3%02t}W}6}f!%W&T zOqK=%*oCD~z@T-e*4PKAB%`35axZA#9U)JjgR?I9Vgw7T$)SiCn~g`9JOYo-n5FhZ zWr$Kf*s$4F;st=^>W3H|@y?9!_g*jb!7W+5(vG>eF$#0>Wy`t522)oAoaEUGE8cm7 z9_PlAvtP|f9KPg{rtJGV51JQF&mMiyelzPBmF{-rXKN?I+en1G=1~@0P4OD}d_!D9 z$rh1K0(1ahp|M5)-5N5^sylR^c;*dwNqiWOEkA)kGiBXjmTKKS^TFr<$?a-@b4c4k zW*ec!*RE3f$9iGmlw)#_yb5OD@GprHK$OH;=E|?k)_<}DG}NIhSf8^ZYJZD@#?hk9 z8%aMrc~=BszZHnaSD_78i4ogV0G!}dvV{-i1WST&IG!+B04;K0z$m8Ax7W0e%c@&a ze9h}N;%(z^ZkU=viAYs-O`Q9plx}R7G#WoZ_F*#V&w@h8Un3JMEs$A zIeeB6;B6&TT%`uD5CUWbu>Unw!1Z7a(y*hVHUb4HlI|zABo|kS5Yzyff;Q;WF;jL8 z_CCKx!F)TVUiEz$F(hxxs~?QRpx>#lqcCt65~(fuL#>9_!>Ml|9Q+bY-pJd(WX&og zfPposvjHLE8y6m4+aX>m+vb0OAp($jBPuo%5eZ-wSeh_!23ySD3G@gz;I9qEejs7l zmdWLJm|!K-5fA6<}wK3fCi zfKVR(S?S-rrzL(e8=C%YBb*|j|(x{3D;C%XDJ3(L#*WEA#uq(J(-nnku_1v&-8*fBts> z9Y_a3U#n>PUVj$jZ*aCF0*$3K6}BX$_18vrh!v2Ki{3D}VC}4`(um$`;QGq%)qY$y z+*0%6R>>ToEE#!rQd8Or@xJha!z}M^$O`gV&7jPZdk-sfCG8-&`|y6Fw2Kvse;9w0 zPtUrtY5=zU{{r=Aa2hY5j}mz`iKd#$EWYGiibty(NyR~qWrf9lc$pEuQLg}Y`f}?e zW8UyYf5;*Cmm9rL#>>AWuMU*lie%Kz2UizJj)qe|7>OM%o*_@w90$oG{1pTY}P} z=(-t|-Gq252txQm#4VW{PC%S;g^y^COtwkE`(@X5r7ab2cT#dt<6j&Up3DV~2wO8OBs3{TLUkoM`Cg znab-dvy%2gQjT#|=~7rCC?du*TeL4(v&4z}Xx4t)uyg6bNq*~9nBs?jVwtZ>II6S; z#<&l&_A4*u^g;tA9T!!%OOT86$gZPEFU!6vMC1=7(8J5+<#pgcz=5K8m#)OfWOnU_(XeEX7fc?K(Pe)Ku4(=v z$~&*(jXBZLhfZ1uNt4Cz7%YjFo7J@YHg2RG5`YwC3qh>X8}}|hQBR?!B!CHF5`j|m z9d;gsww0*8O_SJKb}OS6 z3IspNpC@aF9C~i}YFe5uHbL-D;>Ti`K$`18TW1eW%M3ePqhHb|T3VxwhYIVvDrc7; z-{9;`=oLSwcEIDf6^=4dva3UomZ3L1POs?;YEIklG})K>vb&7T7yp2qHg}yn1u0uK zyW=GsISl$9#fy(N&?)&h&O}9=hgYiOp$yQ1fSdRgd>B;ZH<7J8lI2ueDlf9blQ9D5 zcA*)jV{q1BLFsv8zAtOce?amyq|(U&24#@45F_0BloPvv!&!6zETQPr?=cwNZg8Ao zR_RV@i$lMo9_+*dBUx5wB4shqOGVr3OADV!3j0IdR0R1WA6Dt8*oK-mmJ98)a zQ75CdNfL6bqtVq45!oyU#bQ3XodxNp*F?QQkfL0KL@+l?sg;rJ zkQ3sv-%iFaGt}qdRC$Xx;4=j* z@Ah$$??zq3q%2N2XR8AFf|N>1%PmwzqyXsGGx0A1Q#DCiJaayO58_@|WKi9E9oYT# zg=97Fcbn_(zuc164#?f=jT?M@G9YDlRxW%x^ADVMi2#&f;p*c@fAmK{e0Rj zjwmX}!UJgEYMo(}IB4o?8~akj$z0PBlJe6{t3Bwf>8SG5@WIWyTEtBb%tDhNsAh zhKwAJkyUGtgR*wH9VgqX+GTCr1!wkyxovCA`Cl?`cigP%_;ub zqyB3!=4S4y;@Rz^hN)G#_B#^isdCOsqcYyOx6fhy+ia$HVk-8;auqTVwBWf{h!)1) zLZ4_6Pa`W3Q+E&@zy-&Q-(Ez$#z2z$84!FIgVnfnCnkj$oTWSbo^ATd#g;s}dm$19 zU=Q*n@LH8H$^_icxYSJqanJ7V`fQ9b6m>eiuD#MQGix!qnk96yVq|O%?R|;z7Tn!N zWY>-`kl|g5u~A02KWypM<2N_O&N=IFDg79Fw-ql*E8-_P&6me2=vX!MR%TU$jg(fg zaOQV;S_8_@!Zi7w@K{@_UTEfT?-NXC$G4YVmP>n?pBml>lEJBH@lVS$Y=haQGAuNL zwbdFVoc821bRfkWCfK0gPQqI#oV2CK1993`fJbMV z=!CoRc_+!I36Z2!ZR)41rF=1D%kJBD*sK07$>t461>H-$yHAx88@V0wXEtMSH!BEP z+pnINs*5W1f2=}~o5!MnWJqtYr>OB0!GraV04dL!G^~Ec7&!opzhaE3OnpJZUaB?U z3$@+YS1>lFw5rS$ZQ8#!lngIquO?bx6h$&qs0B1}f=z!3o>dqVQ*A5dL(>fZ_ma=LS= z+Q}zx2*eHO6Pauiar5(6Dp=vzN-QlTkhIQmaEOgeHD0AjMBz@j?SeIT2%bks)5M_c zAq130CV3=>Zcko3H{OUTm0~!&M|FV$3ImU_Tj~(Q*nG8Cyq@$Voc{P7fR>c1i?KQQ%u*V zwzlM`)yv-QILza6h9+LhdItr}jy^WES8A5c)O~fbqxDp zdn)S=lg^dIPx0TGd45Ho%;V)QQdVsCZ27$qi-7`=?964)J=60I_!(d!ujdcoxetY` zb+c|8VeXxEA_awvVhV?mc9YHZ10<#U)QljT*u0WFG%ic+^DDjaCh>LO5YR|-^WZ+% z;$r-Jj`r<}M=n0G89lxFVgU;7Zxx?O0*$6m-?zE4JU)2xRNqual6Q)i@_E&?yqQii zBmmvt+!}xIbyG)q;KTqxo5d?HU5Ng$58bcyVSC8!i$HVG7BZiu&_oAzga?S^W1tbl z8H&{ydhj9b`vrBa(pJw9LD9OnbQp6%?QU6T36~P^qzxRRSd5u%=g)?DjtL+PeoC`vO1l(Qv`iD&5E9zg;S7!( z0K60|q@^A_rgu|x_wDNLPE3_kao)1*VEbhnR_4e@->yZXqo(%~K_k-hgx&0|qa^dY z{{Y=Zaa+d|@;+c1Uw_s(H)H-_y|3MrD60Zd= zffdvjAgv59RU5JJbn!EI?7JPu9s^+|-+S;R1HA~4&uAaZmhrZB-=Kh}+O({P`Z<17 z$_^-|pCxs#DYX^LeAw59%FkL_ek94QCw+q6PHj>A?y+a+ZbL)9$o={ORcpHpm))FW zxLHc&c)FP(a(HRBPhX9lsWX7e#EJ!r{j?>cEWnUAd`4R7w0l>EbTx@ zY3vTcXM0bF4mjp(bYr)allmb;kD>Rz<0Av;;}N~D7d>sSNTmGpcZdCF^3)`l3*k_nypG9?S(g);W410C!2!+0{hyg&@Z@=1I zFQ}^3@C~oSKu760??x$M#zsZIfuvoO_`DDO_H|mqXKB5ifj(C77|}OVA6=ZASMxs2 z?eW{GPsPzmSvlE3ttlXhmDH2qOMSo!ufy{FY_dh;9C$Ma!U>#Rorrl^UUJRzu1N;5 zi`|Ff$<<0_nEB;Gdk{h>fYyOTZKA?49${b&feMH6xpW%qlkv|?wS8t?7;cSa-gBcA zPhi~C@zVAwU&VSS_tVeJva?-C&g!k|4q31N26g!CKc$ByX^%W92SYLwo=4rj^^^WoVIdW?$+-LiC5n|)CV51 zZ7<5Z3omI@FZuPXn!buwAsqc)jZ$NZ1L)1j#q_up04u*;_t1=v9P3RIY{_5K2TCiFvFbp;N51AbGsd?N-<|=fYMO0~*%6rA+&c7E>*paSxg=^*2K()u!$%)9MbAvBkqJN;` zvuZCxxP_*W>i~9x>eLCtW<>$1{I({m6XMaidan^}9~kzNxn&~ib-Nw60+tR&2|3lG zUzG-v1oX+K-xON1Nd}1mv*m6z>VpGDS;YqO*H~S91#TYpkHPqzzbZStSD>|~fD`}@ z62+4;HhCCal~C7nqF^TIsD)S&lK3|Cm)d5^HN&Bp1AQS{eg)YGIxn6RpER z>=B^455=&$Dy_2|V!VdK{rtn+7JjknA`1N@Q^>5P(}c?=9VJJu4b?$jVX{n3ZI!5HDg9E?ER{+%F%pPgdAP`w zBg&O;XUm6UziwGy%+|x;$5wM@ zO(}NFOra|;t=|O6w<88uXlpm~sbE&3yg}Ep#P+M1L;Au}{uNQmVJtkn%V%s@`6n#RbxV4&2ugcjo2;%^_T8ya61taI` z+*+rP9#xaJ0th-Vqb)EK;&5e&9QsFRj(V(H#|oeFj#@iO5YrT$4-Z`jJsmM?z9zo#)=Q<6>dDf%8_r-76q)|A>=E zQvN7~^3(Z!VY+@B6lc=PEsw{&33|iUY~QcsS8q1BSB1_Z`$dcsYD=>DOHnJ=rXt8;?H46EznpT;p#JM|(d^I3rheMOyCT)yv z>h5~!RdI~RKFW3WL&Z94oT>(|NFr)`0zHppa*$|Bp%62&TEALcq)qT!Fu$9=R|yTC zn&laK^Vy7u;8S%!3V~ot2g(^5u?CV$DBmelVeHL%U(F5>d~)lOUZ9RyRhuD*Vik*uaWIKRhCITF_W^NxM#ls9a_h6&KxD@X z+(y+tYtA4af`@hI>utKq@O_uPFYL{8tM4wZ=A_eWJ_}8c(<*5Cu9|;~@v47Ao`rP! z0Bq6eC0^l1sr2Rl<%L3_sn~H095ia7^Qxm{wH^(lgJH-hsuE8q!04>i-^7At6JO7z zI(=w1O1(ly%D4@z@3KpCg(KE=5Rt1?ek3+tzAExEJ>`g@2Bb?Saa|!|)Ip4p)y*t^ z;~aA;=T>w^s_5g~0bFG79j>Hk-v#p3Fq1~+OJ%r4?f0Y%?R7QF3pTHd0JvoOr$<7`b&uCEM`8gKZt}819*fP z?#p@B@}$f(J$#q%MIo&b&in$A#w#kZmf`t+^q= z|CNUh)(Ph8$4kuj;AU$mL;baY{@Kb(bcop_6m>8qI{uBroO;d>&_Vbev$7{W$r zz$EP}y!O|LF{_9eW%Mm8k0z5gm4u2@e4jBUt>}uPSE)u9*ec{+6ZXP^El8bzc12)P zwju`Wc)0H|_Q^IAWu&O?DFz=Hn+M>Wngl92W=9Daqk#=K=OSeSnU1rrkWAaGmP{e> z=EZw>7nffqPzGu#;$4~>mo0wBr)qmlwFK@i^ehk#zm>L_&O_}aZm9F{`Eipq@;kZh z6eF4PPGN(3&uOiQUgk=ZQ0#GRxd0muFQql3BmNS?rR%HI1IQU2EI)Uv94JQnNBTas-$em(3yA66gZ@zHXbo zG12xlru@I#BT(nzL)s%SvO?M;ysxME|KA>=4Wl-;kmDHj1p<#TzeCYs0bKfUgU`3I z>--(4F>+9$jPP8fyos1+2?c#5bIyU~kmSZl^x_wdhr|8Nt4N_1VytKxk~|>d=LCMx z?t6tr0IA3gcfjvBBOTN{>)1tDrzTlJ0;C;+&ewn1ApotlrWd$Yv3R1>N6j>WY3U8d zfvB1A%(znd$;TWR#^_;*=U&&=2@ukTJgd^0aQQIC74aK>Y*>$NBemS1MwBn$+{0Gc zYZ=5dUwSxz?l+cIF#EJnFR3-AApz{1)0d`V(M8rChc{_t-9|%`mZh~(+_@O)yBKM?ReUCxQfF|GA+{8aP-?H*DVGZJ-6x?UO8FsB3UKbqJbB&a8j6%t7Mx ze|$_=mo~xf=(7-0Ee;6Jsz~IQl)WTOXMi*ji7DKHH1Dyel!$&)giP>`zNv9x+2(gu z{LZuIK_tMym3J34AzV{z@n2Hpt|84Y{%&-z^0U!_`Hice3bAq2kb0F6Z{(JFg?Z}0 zTqXC}=6R(A%p|0)q)M}EF#USD8fT`Jj>jNcV;j+a^IWj2ETagA+}L5*8xgJ$B|~Nk zSo$(X%rzv0Gb;q-H0Si#s>1&bpaY;tiBvY03HE5Dmfzez4!uei`mf2s{xhqeq>wrk zB>yoE5>L39zm>jy%6iE7vafM8L+on+2|K9Px|J%xp8PoGs@#kEyo|i*oJ$hUpo4=#=j6?hz>wRHRe7OFD-RDUoiaL_)f|ySux)8R8xHzW4io zzRY}`Ij(iBbDh6hw8`W`+B>M5XxA5UbMxv#znvIkv99M-AE*mJPUzR~8somT-lT8JP%2t@t zZYlmW{?|w#aJb5=&%OI4p3hF5hV6s1zJGqG`u^#t{j|kQ5O`K`bFd=Tj(#5+I||E- zxDa=>bWB_ec3@paGjL^Nqec<74fPZge_V3;hCfU5vx4kx0uNmQR<~*?g^__}>TjTt z%OBCK%$?gYudI{XB)DM4Efh=rv4_iD9aOMHQXf2pzdQ!5kB?u{(=(7V%=jhwa0(2l~-&C88ldWf@VSYv}jdlMG&T-7Yynjnxd<7Orwvs;mcRr8r2X;h!Rm`zpkCP((>wF82`jGbV%T@C>L<(-;0vnz)1k^)SWNqZ3V!l>!+GEF6n=r zm1)qhzs^cN0ztbJ?oTZ5X8S5ia=c7;O>zgXxL0IMvs0=y$Vqc$T?8? zy!(#p%m?HZxSyzxy4=PRya)PZo-U4X2?UNMEq21&xsNbER(&ohZ6n#a&%3(2xn)o$ z5MKcb=<8$v`9|k=$iSgE2r0+-ja<;S%I9oKS3)etX z`Q-MM1~t5Hl*eQ^g0M zieSOKQ>+7)wERADQP0tuI5tCT5T2#s?s@D(Q|)v6yb%aY9yrGPR|)-P z);noeiK+_-3ykU()E3wK^K>qE7neq~pxmnDzH#SyaCbZx{pNdiR^dkM3Lf$A!cx?t zV%iwh0Cf^Du60`9LMCCvBP@K&PEgrmfl}X3PQqyx@V5Tpm$4k0eoKghDBaHg(_Q@~ z5&E0szZSsBOylq%vX=|3-#ztOyy61S=@c?7l+h{(cIKtBqV!U-!QAB?W=fT6v53soGCKTSdBfqCG68C@W z=i^RVK!g2SVQVf(BW99{K^rWY7CBinPcQNDT}}Zzc3tzsnOnumDtO4#?Pu+7%PU^e z!FyPGM~AA?ApN}GQC<2ZU<+jP&FeN%Sk`!(ljWqQxAfzCJQ>iD<~H+XV^)#A4EXZ$ z@wrs`t*E}1>D=w)Eu19>T1DklnpKd^g4-YQk89kpX<}CBFJ526k|ZhNAR8i&aNA9w zhD!MJtIjtD<=1+PV^oLJP_w|6j%rms#`XM&iz|0hWNTK=iD%m0ujm&@m>!ja zICX?e4$b9G8RuwDBh|07%pP6(73&q6gC?%XxueNq(4&+uN_WJqMz4iO+g<*n)FCHI zR2t%X4p4tD)?|V&9oHw)Ok<=aGgg=eUEG9X$r;D4tVmnCmIk*qXqoE5jq4GEuVquoThS@X#O%xu7hU_13Lfr>< z^(iC)p?P)h3_9<*8E&T2#jTqXy`guD?_y%na zyi)%2__N>z_tSv`__>zRk8(oT21uS6H0Ledj^%ycOz`GRdQV5!<|{0Mpe zjyM|PX`riaw^0z75eohHrl5;Nk*3KoYQqWQXcPeW>eDK%UE85oNU+e@~ko++r^)hz4ah{l+lF12UAg6`spCbcG2$Hv*724e!PVC z1l4!$A;nAOO7E;JC^0BVf|2jdPC(vjvCiirG8bxHH7Zj5%|(K>P7c)ESzN%-za(#K(X!Fp%Nwog=qK1(YIyaQx?gxHSDRrZt-`KS8!pxX{KpLE( zme3LIW09UNu;v!Wu!2fb1)OlM!!t~(%Nu$hQaxYZq4hbl{9(C`Ih&?ySlf#RnW_jv zu(OLFa+I9M$a-Yew(Vgm4O8ju%_Du@L<{k)WJfZ-iuv)WX7ONg`DQbJt6Yaj!LAj< z*)r{xJQnewpIn5-MRV6EK`Q%YfzJkc^#}TPGiZB8w^M5WUX?^HNMKuW-& z^;Pt<6ePOv)4`HHR*SLJcPUA_R(9uIwby%dh8a4))Xl3`xGekoKe)Zat2 zL+>7Uhm53^bJU&8io4hK7=x$wJ2Sbk6HRfp5Q6wMR1+rht|+)FdD<1dIK#$#OpY2 zy4@eczJRdeUSKlG8}HqKy0E75U#Eq~ts6jEnfS2I<&G|G;(v?TVzD{6F|zSto^lPMo|_-VISlNF zfUXycTz1ffds-|HOg_dMH|#iTHJCOE!!n=@1uQv=-j%HETk(pLOHwrzFE)>UwN5)X zeNb1fh~ga2`23LfiUtJ<5X2)*EL0qT^NmH+HagL^H^~a9yJl|-@vNt!`>PS8K$&xc zDLCef^|@|2ldb1U=4u9W72Ku7-PZCD0*MlpBc7twCo53n9Rsn~5o!8ce)hgK@RNiI z`P%VjLh9!SS^&{Ws4}e%;_tBWSbc>SAEU^MF$3_$V%vU|aMhT=R5yxAIj8%Em>vOK zDB!|`NpEL!YF+FOG+Y*F1fSQZDVb;{AUlW>e4g0ug;LI5St;?+(-F8GunX#_{j1e> zu6Jkp8Z>oWF2Ul^u6o6w76>PzBiZ<_6B@(C2lL8EjnYXuGW9{D3j|^6g7{j4=Bxbo zw}IpxdjH5sOU^hl$+`STwS_z_`qf?B?mKnN7;1Mb&A?m4E}XQo z@tV+vpaKAfz6=P_#vL|=BXYxMDvk@dzn3Bp2*ut(!X_{PkB}0xoXR9u-bRCl4EH5E zz=2To$L_?)H{<~tUyrRj_b!&`=gv)6(ZIy$)TXkXA*q{GU3chZtTWz{Bi?d`Ay7@? zrd8^Zc0|+_y|d(YTp9QWm)GPKs69`^{pm~Rh$~X=T7gO92N{jZzdRR1@=UG8S3&t< zqliv>cM;$-&j3aY+|QkVD8n-YNunXbU>YB2)}%yYB=6&3twG_UVFoPQ#b?-E=9k43 zMIbSXb4V_ACto!L^%7K zsjwL_&^JUd1XMs>Oc4Ugz9B|R2_{t!<}7{2*mMmM3gVpP?THe&*DaP>Psd&XxI^03 zPy>_7?)AZuI(!XVrFUknV_>&{HAJxdD~y2nNvgFfT`O+giRw{H%*M-VsrC1J07rCc zFbIT`2**jtW@OQOcg&Bk57DA%?}0D{K7+8&NjkWh1_ENatbzOBZ&pCLzEMO0;CSFH zzQp2L*ad%3;`%Lo7N$FLwdu^qLFRmzv#<{$A3=Y~7_CvxyW*Z#GPyMmgtATC!d<>u zDT0mtK&VgKb%*GXr{Ov&mwnS&GbjNy`7Iol7dr7G7Q<80)?V%n~^yJ zmF7mULhz*BJE~>&AZ}l;)h`5z+*7sMk*Pn!9HVM6`9=X~E$ZL@OxJQz;FgJEeg-&c zuRE_-E$7L7g>z-;N*4yD7^)9_i6)40@piSHIOZq)U@4x|_BnY+qr-e9;rH)jq=}Jx zBk~}fg)`}+z_ZXg~#MB%e)wIB@w2Hk67 zV|a1UH3jRbjUpRV283efTr6XsG6vmC*|;lR9?x;n1Nk7)<*-v#W}3l0;fq>!g>i=t zeQf)94;qao_6`Ks0>kgP`kJGRD9BrQ*xkRYuIX3$y4i??Z3!6Iz6;3lJkx{_!<`bC z2OQM&0IOcS<5?{Q#99Nw!6Tb-y5#EyAmw~(-~5D=4>vRDgCwq@n-6q10xRryV?OP!&*g* zCDXU295xE|GoS14HZ4%`R4k|5GJ$fZwp zbIW~|{$XxI%k093X`pCy_ZjVd52=iwVavLiMWupsiGPqlfu8FYM}zmhBE`>|i(W$v zGR2^Xw;85|g(%<)TLUmXZyI8+o53I3rYtV^0HNU8_kk#>oG=~7UeYC)(( zf(3o0yrxS@q^xi2+1+L(Mkf@-45VN~kF2>D;o&~wZx=`z(_!|-<2cy7%QM}5 zlFIvWKqX7Sd33C+@2p71@&OjQ$v__Hub#KUR=1;*ufiW5gtzfNe}%q*irYobCPp2Z zOw{BLPAV5x4Xu$57RAH?Y`-Ebs%PeSo~!~esK8DeV;w>)pa&i**1&9vIn#1j2xs~3 z=jKs=b?7e@)U^V#Je%JO8{0|O(K)>H2Db&R3BtsscqnN0x#aAO*kB44)}?Cx#M5V6 zK%{b>fV7xnh>9Gi!2T)JaMszuv$eHFKCK77o!8CNvT+M zI~~k)*kX{6_{zDZTw!J9k3zhhV9Gt#=xLcgwa3mQsDNd(uIV?ztJCR|G3i7YqkYB) z5d=29E#~@ib{C$Vqula2V)pI?GpJ*Fs57^S6 z!Xu4Q!Mg#CukQs(9~7QwyS!p&L}Zi??C&(k%E<%mo!tY-yv-C<+#;pBf>b_j(^w)id4GHxoG z2(Zu7ef;syX>9{8_Es-M^HYJr(jp$|rWbpk-?tJ2yYis5z^w(nu#I@=f*%MWsH9V+LG8_nIl7>{ZaF>_+A1(ZI1Lv8SQe2X5ohgD?rL)GQTT$u>P^ zJ;5iZul^-0T#3MLS36@#k>#?N)z%hAowRs!O|7)BImrKG7|3Qv03yrm-^!E7_^9eX zY4ZeO$~Fw(HF?sAGvK}l_XQ*=&;?UBY21-#(~!!v#7Z@>MtA}lStlJT*rC{Z)iFde zk}8EspZG8+bmJcNzV?s{GyMH2v@pHlQSA1Aa`u{W<$P7|xgb-gbm7IjftV{_Vw_-df-@hSe#9=b_wn4mK5dm8UJ2>ksxQsuS|AJI9Tg@TVZ|+uurA0jC|9#c<458_`B9~ zpQ<0gG$@1|HCb#kQ zOk>e2L*s>Hql?W^zp<*--_A={=ePvF8(fP;n@filrdS>_!%R<_*986?1B?5ycA z+Kmg>1Ki|E6w4)i2g&abZ(GJJPrKUE-;UNhJWJP?@}y?=aMWB3`1vYeNxaZrKJ?jM zHq0G0%zkOP$q^MR&U)C5scxvVKCYZRK$wF~^A!*IR`;43{buQPRH8pWj;>~?^t=!? zUN#O||3B8dzYqG|CHX@?5k-7IEx@aE^NU{d<7yh~_HCqwVnU*Q&^r3$s&(DG+^0Qx zC0FtHa(mr=J~ue`y)RKsfH-rWlZ2#1`){zsa|1N~Biqa84_d9zKlVg+@%{z~k4Jai z9X)VJXMQV__9fpI&6IH;4ekou8q9vJ!cCgPjOtR@H2zi}pDKC&@sfWw-ujwoE~)7% zqphuLx@}x->tGj6g!7$CGLL>Xt=cJR5@pLI1x>3kI=D!GX5t%kPuwsyaan?sY5Luv z5CndHKt$r5)gf7K!-z}P^7(sVgnyB2x4&w>vExd{{tRaZFChw!-`@c*$GasmHD|&5 zf8*yk+4ML^{SGU6+K&4#=Y}h{w+YfrherZ4xqnnU%}PGeX@i}Y?B4ljW!OEV$lYDE z+-#u-5dEVSq>=sW_n&6v{_FRj2r60OF)mU|FO4(RajQDS7be-SaQG0{RVcMp-lUtN zDWnSvVqN0PV=Mr&7~aD+2|HJKL*H2n`L!Qq^1FVOdRsJmtSA@$5Qm7C>mbz#~?fCmyx+(?dS6Cs>O@v(|Q+r3r%E zR7o|nZkgFi&PeRFuxGTuDeIb)hD8Vm_q&$@C(|%Tm(q9gncms)eeyty22UdTvfR z^5ps@K4(%`@l!Ub$co(fAH8kIGyU3X)eDI&ut`~Of~>Im1?Ie5m3JzK?aBHK_`Dr$ z)Wur~{VbpEx7I1VZLcvy&-q^q_nfER-K=77Aotce7%Sb_14N}|9%;K`9jlEg>pJYJ@Cs-rionA zMZ4xma>K|3I+xcvD!wD&)**k{SoKMgwxxCOPA^Twvk>*wl3$fr@o2L+XA&KV1+ulG zkdHeJGe=yV>SPKRH$8kQ4E4Gmlvj?EomJ+u1$jiMd>_mkOuBwKXMbmN%!BreImUU(E!RjNY9;*d*_UXnD-!Tc|W* z`MpUVw^^08y!_mU1(5YNdi+ka{4AF8$*$3lVgW51`;_6A>*yd{{ZR^oIhNCj@`1^V z<<(Y}vJxw3IEj(K11Q&P>ypC2^>!l+ZL|X_UH%^6Ft1PN_I(^4MZ*Ez2z$ST*1u(-_^BgIs4=a1dKuK31l9M9QMX^- zuG+UpZl7Zmd-+q3B6u{Xgx!3R|6nji4v}Z4vd;r-{Bp@TSuV=z6P!y?BM3ag2yLra8FJgE2Y;wH6yL#2=c9x zNX^wlsqmnRy#wU6YnA2OmQH`U%R@io8N??dG=b4)Cq4zXDw4sO@hHECBzu#p4pR`Rnb-coGYTE+aDMkE!Lr9b8(2w+}=0lae zs=wh5J3&{TjH*|wWqChxMlSa;uxlSwm0QkIJYyCe*$fV(RGM3iKSWh1L|HMC$>Qi2 z()Dz|--$cZO*>n}fpycq{GYusm#1s*5pW1lBRMpp!;6c)``&S_x0KbPOcRFfTs=Db zJ3C!mUEshoKl3$CkgL%g4&w^n{4R^q?h|9G2L3vI#d6r{k0>jUB+MF}0$X*og> zJ$E9kQ*xT^dpXC_`41m48;R@4!=uu4m!+|5i{&m5 zqiQL{0+rC3Z{u{Kom-4f61GsgRS1h*;$c#gbi^*I=Aum^6gYM=n(CO?TK4k53dTVB z0QqiAQ~FjSTw78&T*B+YH`Jnf5kOJPt51dda+k$<1UAWnwl0YeEMa&NtYPY28i-x` z_e<<~VJtc(u#Dw2&SL+U1;Cl|y|~M7(atX`CzG`?#?ANEnRI6IvS)E6#zj{LJDOC{ zL#&KQGIP)6uFP0&(zbIcuo3*rZQ0*$D!HtGkkV)Tx4zJ9MO4nRCf&$=qhH-%Vdjx* zdGuv;tBdY#j&|W3m0emaxOq{4cQ!EXoAc`|grrS+UAgZzIX6TDs|R`-nAxkVu6e9T zccLK;JkgsgQTLtJ`ld(DHzS*^Os}neo|!H$;)M0z)eTI=8z9}0mj2WUz2jA?l; zKQ&rbN0NDCc;(;nSgSV!0vGBwYU4(c%&pG1G}v>B48BNYNU-kJ82|X0B6M9?nPkIM zeDRt*O$vno2gu-ks%DPBK<-osj(;=Nq_1brv4>YH6**&XnDAjQm#Bxk&>0}&bVLjR zhKMNI>^=wb*$<1%^BLcK7k{@pY_N4?uV0JxVkYRibe*eQSl#t>0*pUtQ^jBTU7I(t zaJ+IbnX@cHGJ%2F_{vQL!wA_iZS6zIWqdbX>Nha8e}OCkysQ+CDpFqtYB&`a^U)ic z8eh3o=S@y%gmysKT+;hk#TC23QjK3S9vzFCO&QO<=J8Ra@Qa@XorY-SUuaF&uWrY) z(88#fV%viES67F!DG7^t>`%A_>c(J+>e=NIH=`;;V#oJy4GvO7cl@X({kY_q-b$pk zgnbgu4Ba>>A@jlk1F&D^l$mq>#AY1kEtQ-AOmScv_@&qoYKKJhC-{hX;DFs1u>#hn z&p!gK2+PwrkGJa_j0_xmA^|OuFOS-msnJa?KUzPf^ zjpe=;Oqw-H<<;fiIh;fYa=3f;*eE%F;{hZRqNbGEG8+24u0QxeGTD@Amwc7lArx=1 zcNLKJQa3kb(4qn!jwZws*feL`0C1_KJbx?EuE z8YDpQ+>H!h-zq}N5y$@l+a#1&x9wf#0DqcCfl8Y398mr+pK8!7q{4a9CK zQ=2TJDxrwJ?jeU5D+rss{>!X3vLPS2z9y(bz3v{2f|8lJ#0+5->!{D6r|R?8eckA% zg_KPi8%787Zk9;90(~X2}@tG>b&b*et+a9q9JEFk( z6tcko%Q|As9x0dZPjIkT>6x2=>lW1{$}^($`XLI68%x(|d-Zj%XsLjyD&elQ?y3|q zhUZ$@oGr#??X)}-dIu`QoU!*YT!zYsoK9DLh;=Mu|1{=U1_Cs+|^MLoAI-jI4Hk2z1k5vVuR!3|RW z=$;-n8I=51NBHOBM3l~6>T|P}spjK33h75ViCuRs#BM^}fhqid8!$dZ6^F^)7RPFs zYH*R;M#jfEm?L@%|FKP4Yu!wBZLSM6K;=3#MUQOqeiO(NDsy}qp^tpR{$h&Idkc?> zP0{LWo6cLUj`=bDTE3)hx-W@XX0cM;j&BZLvTN>)zv~J991(1TCF)SDC!qEg_cwmJ zk{JF2X-@?Adc3V3;(GM$K}*J~U<`bj+s9))&djyW-2Lgm) zb?O`+G4kib!Tom{Nnfn?ix*kLLj8ppTW*rvT3ucH18XX2!wAIM7P~-2hF^^h?kK}k z(MmO+@onqg*n9?F+Xf&+(A3r$I4lQV$k^b=`~TTU{~h-vqU2oVG&myD1;UEH?>uB+ z5}1(=2=@dh&Yco^ZH&G=4b(Fn--mdy|ICsiJPL{QCYV91218@pVATv zUMSTqN5GqOx$`~dW1SQXR?|Rd{dcNlLI{uwZykuGl=~7kM39rZl%1U^CUjS0WX@d~ zW4ly8+U3{QQk2e3`+?BPPn9{0`iu*oyQRhqYG+Oqpu9;vuHJoHtF8U;LHBVI*CsKa;yX-)R7GH!~q}eN@lbO4#v6K&mm2KvmS5vYodHuGVDR;)iXWj8R>vnSd z&xbQ>IQWOJQ{n2vY8$`JW6x@2*MVJM?78a?%v3XSPn36wMfrz}>R9T3oqG3%cPO)8 z2XT_H_(1#-<{6Qs8yP5yBb-Y`w5;gYwr^@fo^j@M5CXwCq1KpM7hO^TzR(WZs~wHW zj6+b+n5_y?p;WF--E74arxnS8u>D|4e-{J0?y+a{niuk=tXPd9yROaIEyj{Rqwb*8 zNL#atO;{dPRd|8}G~V@zy>XjW$kAK!cju3vKXuFEY%KwWE)oi>nJ*!dJ8%;%0%>J> z29>S7aVBj^z&H2T-g=5dj7U+RJ|cCf-+B|4GM%$7ArYdq5 zpi1X~x!-5D@w4EAzlsnq^+lJX^MBq4_6I(N`QR5z!y_WAd8jYzPLyZVtF+Z6+Aqjh z8krf!x5Q+LSuVsM|NKf;EaVsO&>q;2Ufsk?!4|uY84|=?5q<_sBHin?_f=4tsqz`JRS_F6tgdfvsO-GQ--XS8kv35cD`* zej6HqdJwfcM*~!6wc=uuIBO4N-8dUEBxnc3?=(m({qQZ^EV0v*BNIZ2k_5lRQ3dDv zocd0hxaH7OWRKS}u?E%sK_}!tG1i?G3{26RT@|6A2#R%Pt@OB+2ql+c@f4(S-1W70 zgI~3#K%?-h@%2gtV}&2|lU0t5Bve73?F?tByb(w!o~0B0*It91s5P^Rr5`Ck_SPx7 z8H2qzy#4B!Ima9NgR)VaQ_gng>6M$icQ@spzeTl8tk(Y*|Lw8+u zZ)lxgS0UCGWm%g>#bJ!_x||c-S|@qvaPVFhb&#wP0Kf3>^w-W&uqRzago=iT1BQvF_gD8<#`(*NZ=fL6f)jc646=KQ0NA-fa=7Rxmp zx=p>M|9B)YQS5)|cz-vS9PC;8Sr}2fFwrEBr*-GtFWGQ?<6UUYnZs0$rBB0cYCGS{ z@XODa=Vu~)y&x}kFa8a4+9_xKs2AVvB{fzjn^wvndeM#So$V;cQZBUZO;8?cI@eFD z?#wa1j=-VT;a@MraZ4mX|vmZEH@>WA_~37dsAd4M`$i z+1SsOvu?dtG~;e6mdW0cpHJ~d_!Ne2DOgk-8YFUzy9tC8wx+cvOF$iKQ01dUls{N0 zP2=ix$f7fl^ybp$7Q_TitCY5v-=`+Wn1rC$>a9hbY84i5A?D#?C>^ot)PU%T?A)|f z{`Yp$$YysXfE|=^z^+6{q}RJY`iW+BlvmN%VT@Z2|(OfIfC=d- z_yZ!m;rhk+4`18RbeS=ABo>J;S9SeIA#XZfo#xOY+n=x3xRnl_2#y8%+72#rT{?^i zlYIWfkmIm?-^g%`0r>?*+u+6L7c%&O0Pnes@bDulq`F90S;2;xtWtG!`u#{WJrdmK zxwTERK9-NnJ@KZP(&63yh#Mm9ua0}D#ZeCk3-`O430CFgKSi%ixsKgAl$!4Iep50T zLWo1Q)?D1g+M8*45Fluy6=vuwngDeZ@-N=xBHf45pUPP;vtSuju z@NNyKcAj&l^kz*9PNWh(e`23C%|U1Y;|Prc{hKr^jCdi%7U>@%Z_G{4Zx~2tnj=Z( zm!=PethLsYecLg}UQcFTVJQAe?1JQ_@i52B7F=AU7xlGNJ8D>Cidt$0bUjw$5Jrq#Lpy;OQmH$#ZlK3 z8^nNAP($vVa5)vDLn|J?^c2f)Pqjk6B~zkjwHKPh5wZ}#b# zbL8c;XUBo@slrG+s&ALxL^_wQWzwNBcKJz1oI7AROJ&=78&VaW8g0j}!4|bx&zc1` zC+e}v88RX;qYFx=jKVX)wGI8jZKO zeziM;b@S@aQ~?=m>&xxK*=);+2GR%s;W`D*U%`J{$dwx*4u^xA&KYj}`_k{md)tNv z6_pmipup;Jm@`rUBe|2scA{;N;k4>-8^J=Ce3AAv=9Y}BB(la&BFWAsYWZIPas5(*;G^ZFN)`|0%CHke|jw1)F0&`We_3qFwUC&)JR_bzH zckmq;N59+{HEM5iJUq+9EfBWmIs11r>zZfXoP6i0k7Q_cB?4Rso4=}QxR0=Nc(KUf z#tkFpy)Wkgf5@gP+ko)*i;5=b0c7O*{H{b}z)p_^ArBY6>pO&+-AhKdn0lw1y;umb zXZ1+XnTQwx(9dMW!;LtN)$+1+N^%^EYvRcX_=WjAfCumO(9$RC=89O; zv^qIc;3b%xzA!oaA*jPlAPKX#t9!b(v@qWLmQ%ZR9I5n8wpD*}4ZCfY2Dcwh@JRYK zQsK_82kutD<9BS^T3(G8L|}U16_3%Yasvrs1{2<`!Md>NEPSzDlj+rG44W z;f(y3npy{M8ci7Lg@3J@DeZ$KbCd_Lg9Smml`9Y<)t}4^IAe`vMRlVprLNY?g2}N4 z@;S5yznyfxp@;Yy_?|ILmX&;O3uFo-=FUx&ObQWxaXGShIBu12Y3ROwSQ0l*KQ=5= z_;ogYls8qbu($l3*n0A{ENdSABT zqiwGvCOQAXJ&0CxF3UJUMi;NHuk>a;kmcWq>ud)BXsLZV>l4TI73PjUktyes$I__& zfP}T4tGs;quA^G`w0oWcKAxmMJ#+bzSY^qSHZzkjtHau|(jn9+We_QvkMY}eQZ;!yV_6XoZ*R;}`%Uwa{H-9Q=o0sVs~8@tsICcYQ?Kf9;~Pil zqx>s2Kh3(Sm9KXX9WG?3l>GnVQ}D7>nn)w4!a?m~XBW_`ZeDC5l7v{)y|i754XFqK z)1^FC#(F4{$u~>Q-wm^K=Y~&XtdyR|jbj4O&;4`<^ZCC}tG<>?3RxBQ{|GA9t(%80 zH#XOjd6R2sBUqqF7??H~dAn>lLFdO~3t1)R`9Psm_i(i7-}#N?5V;h)dMG~wIuyvi zQVebJs68Yye{xnwr)uNGFj+62^&1uB)?ucF7CK7qPuKjKe0=Sj9Z2BTrNw=R8wN|#-EW%sd(j0(mH7nOjNHqGx;$s}fGKSn%* zEODP!52~^uZhVI3D{GnbG;(!?X;T@QGdT|s*6yZftF5NN&wTBnle91&BscK;gmrj{ zDQ@ZDnGA)3K`+lKQ7XjP8uIou6-TdELf~YR_V&eL*lyqQSwzpeU9^-P{pT$J-fuMb zo1H_8!2-@yj4%7?!sWJ`B2(W9ls-F<;eP{|WEX~gC}JFoaC_<4b+07hl_wAmX{gj7 z?D~MdtDX2v+lNgnw%iCshHMHT)+NR$L0T>DA_<=Hefoh6A;@lN#YT~=dQQ>ot2G$ z*q07uZA^R3xQP1@*rwg<_4Y=S{Z-P-(Alqp5lnco9rLp;u-#l68{ILCDE!n+-|QNy zl9(fF*90-Ii$^tEGNX5XQzP&P0W8Crg9HOrJ=SPZE||DWE8^k?TjbeZMxHv9i$7MP zvR0ouVr};{zMHr*ir$)!B}+EhowA&}#5&gP1B6le zyA6{xMf{8^+6@eMf1tSUR@zS{jY?SbseA`#TZD%i&q5EOt0G0z^9Je8*Bx?r%1hKp z!l95@Fp8K#r$^%xr@e5aG)na5koE^`y6iOQItPR4u~ZKX5r5ZR~S ztjYcc9P6(KR&5K8j1uS91q+Zw8LN8MYdJokUp0r-_&q)JUR@vxk|5wC36(0XTI0e0 zwl|z6(AAs%4}SX(g^PRzamIC)mwN56BVnBNW3~03q(GhB!SdT?1rqZW(`pm;{j{@h zIQ6+(Z&YJz+AU%+zC)!kqf^GRyHE}03A>$o`g3mc;mfHDo}a=(MK65bKxc6*DYWAy z*S(D%K}Qn0g4BDvYKNT=%$83o_!A&G zv|O$4?uR1(9=Z>Oftdot(c(|7W&4;6WZvw_&M_i=kI3}t>EIOJ==KuqRphd-Szm`` z2v6!|z^Wooo0AG=STOdo1UNfG;B7ltmy2<*-Ux_zV+g_CaBM%*gTHWHdm0t8qCJu$ zgG~-M^|GR$Z+uq|r3VbPri6RN&X(amr4!3bJ!ZU|M5*k1uqqL)L;#G}4L27{m3a^Z z9qF&wLysMx|2)g_Q$)X)w!u#XP@_99B+KAc%Ee>+UIe{cuglg!)tTE`WT>HRhM)@S z)Bk{vzx38WPg&>|_&t1IfXnc8Q=GVn*ZoHT@6aLOx`2}i|5znTQ&j#JMmK^QYn|mv zg_l7NpvLf_acqE!*q)-GSfvPeu+-2iLfpLRTEcaM4iNbjTa=7+L=Lxi3sQtS5an#S z*ND>SE~STi#IL$^E~7ji8~ECsTtYE4hGO?{G~?}6H$2B1E~J__C}oC+3Zky9s?~Gn zp}B7rIB*ux+DDD3ECF2e)C{vYrOI_ovJ+dWp{&^Q5r!L93NHd?Fz$Y;Y;>1d_!mp> zufEMYm3iuG^jSrfi1qaBQD+$SImC-QC|bHF_nw>xDVJ4^k4v}m=Kl5DJkiiw!Co_t zRjJt*?l0ZiLUZ1ikDbwn}kCKhgHVA2$(-$(_Dn;EMNjYrek}1f8t%Q zBCvWj=@w@4+OZe?1Ebn!z~wh*hC$U`QoGii8@zWO_0b)_$O@x%)7ID2$%h=oL%ozk z!Arr;?0^oAxlIT3$3fT)XyfIIH(11G!Yh(hKw7PyUA@WhwzuiBbS@ z!n1f`)CU-aI$B-e_a^C7k=b`O9^bC%djZL{#-qqB+=x6uKcB{M_E4&`&v?5fS5Cw6 zPYr7SR^a~%5%vYS3~UpQ68_?wU)ap@7u7wRlwOmL&NJ@)5_m|{_v87Mjynz*hy{z` zdZDN(Vj+GFt+IY&OFGS+@{lX`4Ug(1F7;oK=daA*KeYh`lA5rZ=SXn$YaAg);Fe?C z{*zYbRr{q-Lft}lFr027NbX?$Fm!y(&i1V?d)LJU64@xPbh3v1vht|kot~y$LQZyq zi%@8+wnSv$g1IBrSwfoI1n;R2o+6&MI_y0f;YE0FI{2Z)D*StTvIUPFg^1I4fm4M| zn~ZkkO3BeqNzP^L!EjFAJ7uK(&~%fnAnV9^t9B^7xZ^W*nkw*J`?= z6k>ax*%J|m*ms#M@(-VH)mwChi*zbQx_i}kyh^~|UAa0qA{{fQhwZx{cl*dzu53zN7K*d-YAn!GESO{ zG;-`DL~wKS70VGJFbnw14`k<)4hD(I^H)zqO2vO)D7LYcB1k3U;NdY%(wb3J%=JB9#C2BaNu5#PCNX5>&>WiQSPo|_L-_*! z+ngYmU;Uq*GIsH@m;XWdRVRQ{dproHznNheUU!t#HX1?Hk97?5bQ?|9`M0iRqlh+t zfOK8m6K(H~F}c48?GpF$E-DTR*ybP>hs44lzQu;vLD{58o-V0`frNm}HwPp#SURi66hf7zESzu^bsg_maLmNiQfh!n1w`43Hn}9l+Ue5O_bdVt5rDNPR@P zQ2p_}-X8Zqv#cT}0y3ZbFOqLqum9_*|5P*;K9W_%03cWSO--*YF$>C^D+5bMc`18p ziq-!|*H;C^wJqBQZ-O-zJT$@Goj~IxxVyUsCpe8e1a}YaE(sP~g9Ufj;0}46?7h#~ z_r3eR*2h{6y?V~78Z~OnD$Vkg)Ow4Osh&bz&tkf^k!DR9XAV_k?#!cn$<$cEb+sOA z{q1mEjdhhl0sCw-kun5&~P)yuwjsr z#aex;?j_^#;MzUkJrRuyP3B^9c@vB1|1_-VWDK&ob%wnT* z=E02Avzk|1w+p&}!`G*3`!F)Srk~4_AxmczM!dz$7PO#HVw%t8rCoEU{E0HgfK z|64ZV?!N`&0HeJj;%q`XdS-<}F}^lNa!bb3H;-Xtwvu*LziZH1hhc@*e9;+1%}d)g ztO^x6jMfJk6NKqb)DiX8c>ZXe&YaHk(G^+3!#5(4)ouOqJ;1fdOcr1#&{&FGS~5>R zixYkaD^e`q_5(VZ4Dw>`i)W0Yq~WTnx5vj(q`>a0fO}~Ntu}9@c$AVcE}eu0j`E*2 z#->XgZnJH!QAA4gRIhB{Qm;0{XY?p0QXo&aBbc^}b;)VdCC519h8wmU-MxAa*?wXDR9<|#geGTl%L-~Dyh!=(;V1-<+?H4kuMu(0c( zANKo8>rQzj(QNdXftBuXW;!@ofhR)e0*dGVjHv+*Fy?P|Dg;Ga$Ami$Oq6 z7i*;YXdwJ^k2LE-QscP6OaFW-dRM<*D37^&E3Eb~=Nh{>pDtf~r<|7~06-!O24cJ{ z{hVMmBjZ&BL$Wwg?==%vbj;>uHwY9BB|@5|${>n$I40tD3}r|-o^K5z3${o9&cssI zhp$o#;FnL&{Y5&$OJiJ2cGDOHI49nY6QItZE_Sp(5k`d>xAO9Fh|b;P>unC5KTH3z z7>AY17=-^)g+9q4*!1<;BU%B=CwL=FUv>N@S*E0MYQo+qY-kx^Ip&YE zvlqmqVRhW|l6(K4_U|Pq@_VtQYoLI#y_3mS@GhhUiiH4BNtN>u^N9R!r&NW7#ws?Y0#0Dh#(L(!91mUBYa@1R_h(FUFEc z-=8ck<;R{=<^TnVxh&U}%q!;_kx^|zj3Hyf#kSp1s9SnjN&~!NLIC2;Lk7vO>oU|#!#1EJ;h&`}7;TYwD=JElVyiQ3uM=w}^d=g@u z$3+XoW%%q7r@0}d7|^*r%0&|}$zU4m&7gD$!p{-&uNdw}Is{2N%6&BAxQi3yLH8Gy zSxU-5uai|OYqFmF9uXS*0gn)ELewGh;?GMm2@*B9Z?~`) zfFj)$Uhj^vXN4jkP$_7VAT%&Zs`Q>a#w2XQ>89EnZxgq9lp7&D!ZulmGD+(Jg03V| z=CgI9RGF>1T+>(JUC{Kk$w{6JcCA!W`z%Q%WlNUGaT(8cZv$GT9WC)NN~L!wE5)wj z4nz3wlC*y6$ z7IOo?&+8|#C>BeRU~kXc9T8XTMr4W{Q~>b5E(rVC!2b%iqWiS`bL{|Wwy>46bmEqD z_hTZO3;B26)7dPd`Q0jpYjS%JOEyI|2)_TQR!tv65U?T9#ob&^`L1@G*vQVu=XC!i z>$Ys>g|I|g^p(&bj3ELB59R_pC-eU3Xa51Vi10Z^U{_`!U6is_>WJ#%d{p@>bC_@6 z=m)Ui%LE6vML40Oi#HIu@_Q2pD>99b&=Ibpi)jlYP56h6xzpn~3XmlGXlW9{-=9UZ z4mk9LKs=L=7hYLJiijZ4sZXETxRM4yID|d9AXJciZ(I%WhFwq8f|bbavJtx;X2S0! zU-wZ6j@~brqB}tx`_QSPtf{ert&zp>7@ocxF4X)2Q>3BIAuc`jh&%PS!|6dv6bXC- zjHr3IlA2MObebmMS^8Pw5ke4%;1_Xz{Q9#nJo12#)=J}3pnC0pc*4IDk2OrcMc`z| z&k=IL1x^>Q(szq)``VvUvp^#t3yPDM z*U|@P8?hu7)UjRONWlzx?eMtQ4}GVf<^1!8|;!FN{_lyKDl$ z!ZL&@CJf*BmX>27sEsk~Q9;HVY}788DMXr!26hhF1v&*u3S*r%BE@z-h%Fn}id7OW zR$A1(UTJp@Bn)<>c2~1M=k||QM#LCUXPZYbx5`t>zs)c(e%pK*cBr^vQ6bG}A$_o? z^v6$42K&*4yk8`kIQx5H|6G6+uvoF0QgJ*!AOsji9qv~^>A|n9%0cH7&Mw(m8Lonh zJ%hp-^&DKo>WJ$I}+$=8>=^rjZJw@+~J|hhfrU_?_^P3>E*99&Ut5=iB*e{CgTL+p`vG%rCsUYwjEW(jF4f z4JeKM^yHB`#|_%yvNtd(t}_6kdek$4(kWgmRB>gESkTlZ82`%H@*6%>a%tY+W_sg2WX~|ds*;IaQQ#(#q!>8Vq@JdC33$^lHCP`vKzq)n@)XpXU~#H zQ;Y9SJETb9%_ysFW&#=zs?~T!YIeKWi2Xb<^Zqf!88|1`iGAVkXbCb`S{&}tHPXpw zd1bF_v%@2AlXEXxKj?*SpwRTLQGm8e`Y)7D4qHl07iBKqU+}MJ z00sg&y#a``%s@5}T@NEe=z&kf$H`=7mP(C}(6QWzflv)Eah>h?hUt-!(@-p?>|8I} zrk}r&pgDZqvZW0-U0eG@tLGzuU1RL%`t(M++fP>E)^(AfW@!z7{J7h9O33gdF-IN< zuxM84RJ0AeO!6++`AAko-07nxFglapUxy;pN5!NxuL>*rV`Re`*G8Fo`Q+?h@w=v$ zYt#5~tud)K+GtW?M}NOGrGJZ?`3pt9@$|L4Ay8w0O+6-zpx7oy3kCv%NA1g+m0|Z- z*?hC(ivFr%)k2D6gam(`PnfvCK&BGKQoZqW?_tuhnC<%ZW z-qF>MZIP6eXvKf!JP;IE7@xd8@&hQ`eZT$m3P2qz3X%j@O8J@V+hB4dnar#k_lu0h z?kuV`FM1EyG+cdDEC0p+0? zvvH}P8cU(ejmHK%i*X>YKcXKg^_=xn>$w)`o%i(-L6xn1#;-bO+g~djhG*e^%4$uu zen88=NzcD7KCJ*SLSV=f7;!e$3727RRb#C?K%OPouY2IsMG!S5TwAN)K7`(oWtUdz z>8|mcvQZP4+g0L+c@$fsEnP*({P7*AGO?$z_U7>Kl$`{|g`WP{T&n-yu;gES1=RY% z$ZvAC6p;PPWdEaW`?ur&;~x|jen+$0|E`qunWjx{~*w!<{v6nCgYtBg`1|ag~}FiKajIHCW@8 z25@ZGsa2X`Z9C^0=N?&T6>&A#F2yz;$>l>;Lm^5HbEbhjXr|WOUl*N`rG*J-I@zmph&Ik6n}GYvIG&f5K9+_Pjf+UfUl~@i%u0 ziUX)rDtwa5;uAL?%g7CGh?AZ2WM}(!@&=lZyOQuoY05-qy!A{f?N|R?_HdoI=cs7d z6c(Nc-SGOA#J#K#7p4j`BiIJZJ+feyB52M$Q7fwrz(2dBNyDXT4{k9kSEW-we_OEl z&$@Jq2SFnRQ|VMmyyAb70!a27SWfJXC_*aohw4SHVmqfwDS7`!PqS=j>Q_oL%4Jbs;<9a6@ywJ1uti{ zrpt^=Uyt!h#6#!zrOnq{WAutiPL)jcDvRZI4dK$`6HjWIBIGe?z&RxLhnGiw%etVx z%CRq1YN;igWU=!KuMKS0*pxs>R0l7{E*!Yg9$=FHw4JG0h-u(ntAw#lRQZ#9sg)F9c{mwy)IZ_2P4 z{D&xr7cnK_E?Jm~gR-&DV_XS>=69<_Q|7qV!Tr#)_e=)5S{$FDSj@eFGtbQpHq3a@ zQjK|3zb(s^RLad&U#PgFE;NCEM2mqt?H7HF_KBKbxN$_UA^5t6D6b0b_(vF4Y7fM4EXC6SwHf_* zVX(}%-fe5n;ok1~O;w?Csd~O%g|?DP!i`I8>jxo5jkYdY6xb5|henD58gwv8;U5ad z?+s7@c4f7`Yj!H`pFQ@MBibc^e0v0=1;yYeP(l^CD*Os2YZ{=2uxYgVrL-io@Pu`0 z2O8TRaI2rrJLz$dK>cn8kD*k!pslvD5iUlFUoHO)DTkdE4|+f=z|Q)-206`2#x=oo zlK$cpQ`C;wAP+7Oc#W|?IWdiK)j@uDkmA8<4NOoIpKq-9Hq!~6hZkLClVh+oMV}S{ zd4f$~4oM!+@da}7M3#y~5UBzfla>$Go)I&SN0U0(L z&1QS~rfC&|{noGoJPAV41TI62hk4r-jtih;B~cC75VinPA){?K`2MgL*x0H-6|Ur) zJ*%aK$EXJF2(v;hsy2REz50>zWYfI8G@q}i^HX2!NYoy11TjnrB!OoBD0FXfpyA(j z|Dv~n#CSHm#=5g$a_G@ug(QuGZ5O^^G0+`F)&(drdwHlEO1!^Zm`EGpzNv+IxZ0K9 zy1!ED9)`3MyohHr+5Oo$64%m*YdzGv0Sg<=ry236W+O%S)vR&AR@&Ss%+xG?H_Bm3 zM9)fhrRLT(J#{f?_0C7|RmdaX`)8uhVaXf|nMu zk+SrH)sZUO62h;>L&YR)A0J_^B(?DASr~opeZIlHpXaQ)(~e?{8e`-T{CiTMtU{)r z^IcY0qy5IT%C?4db;F_?-?vkmsL9lfVoQ4m@(`9}gd-30bdm?8X8)~sC0RZ5yL3?2 z-%*amo}Y$iT7|{L7aJ}&E-TY^GAp5ZOBT{%+xZIy0e%j!Hwz z;}&M@vu*}=Mu)2`;pDljcIL&NCv;XBCn6joR2n(OrG`G}Vw&801>+BJs)nm3Uu%vN z^>1bR6J-IB(0B-8oy7XLZ6?scgAr4ay!9;AxO*efDtSRK!4zOz?EYb>ikh6z6X7h% zppl+PrxYmJKYD6F3O%Lq(oXLAAb_R@+27#d#T~m-ua&5Q;fTVz9|-miUKMR}KE!Ik z3^4#D!*>48&cLoxi^k2r|BXqAuKW+}>Vr~m<6?gk`7SJzP<)*pgAG@zhhA^_Mn!R> z8_)|b!S{$;?MR?ig)GFAGP#fFL2c z?i&ofAvs)1v<@gO3VI0yfA60Ncu0Q{_0yYsW+~G3!&Ka=PYY5~kM7`sJ+Di!r2O0_FF!U{dlyVO3cB-7u>B)daUp_=a<`&EzVNxHggJ4xN5J5DOLP2 zoRI1i&Pt7Ph))j~*i?Xoix)2`N?0@%7{$rk>w1de-4$J?iZ=f3sTD40S*id{z*=wK zh;(%RlN3RJw-ZKOqcedfJaEK)IE&+Xo<{UHS24W;QnaeE#!H}6&;e;&y<@_owf<&> zfe(Nu!vvRhHlEB&OLN(ALCI+e|Nfc5dBX}okpHS6cfdU|K}AmK9YlEy+MkVVC$@vn z?ijx912;Bqiln0L;(L-+SNY7b{FK^>;4eHrY~OfwI2+?MZ&Xit5W+Q}Ifk#VLcr(_ z51$dwY+&H%U>(;rZeHhZ4n^`@A&e-gF?ekQ{~f6IDPK~T}MpG?HtCZscY zUiaWH%rEo~{(T_v!Acb+nl|)~#>4>)LXWVz_E|xQqTI?{0aG2M# zzoO`^tj22AW%#7tn#3zO4nU~(616MwZB|~bn<0OoHGJZ0pj;&awRK5*y0Wru|J-HF zgErP$2zgm?v;RG~_3R3zt=6~d&0wyS9#ZTt>Qh-=kwlGdVttYu)!Z7W6by{XBLrBQ zaY4GWj(vyCHC@2{%Dw$zyjM!E-HUN1oc|q(wfPijAy>@D%jt?#6w z-rQX3$kEC8PQ37(TT-1%7+JH618OOq$(e|i+akE9(@{4;pjkfvV)4Q~aMfBr-~oS{ zvEr^b7f7UV23AE7eSfDQdy3=rS#T_%3Ig=E)|uj?txwv7gUAGQ(?I7z@6B!3MH91D zhCpi|^jjh!GG>X!bU;|^#UHgkZ?SKXAM88ybQ}S~O}0iaQ&%15gHYk|0N^fQ_!}U2 zPZ?En5sVJGr0wr_bg!H*XM&S!KCyodrs@JtNy+{dxj-L(uXr~Rs{8OJYEVb7_(?dk z{VHjj{ff;p`@#ECRmO=&g<+bl#eCmou+O_F=_~_{z-lF)1A+ z(r1>a6B6&lmYV&!FUX9m&As|=t-nYGJBSR|eT*+LYJ&SCZ zYU75x9y|*sV+)b?+t4`oMtgHVX%nIMO@h>zj|FvNg$F;QROxaztcr4MZ6`vc6Ax>ED=#pn%k9Ld2PTq5a88PU4t z`dY5&4qruTtU)N50KbiqPA|BUOoL}9-r<%drmno}MZbeLN@|Gt%N{Y2$2UDC3xkI| zMbLf>pJ}1O-akPO9s&-F72Tv7rJ3e@Z1#28_HAMA^RDTR@L`TT45vaE1b;2(h&TX^-^HkD^Tx${qKFb~sr+5297eA0wQv{8pwb zX_1__$l=;tLB3nSmD=7qkN(Ez%tZuo^jtZIs(>c~&4jKG#Z!uV8-B3Zz!jdDp@W*wI6-{8KDGq9vpxrRDZznyL5V9I6R}1xnS4W z18-n|3amSPH;P?|1sr_D(*|n6NP)O?v2Tbg;$mL|%F;C0gv6k`uzH=D&k<1xX;$@X z8fS(CYoGWbmq!$5NENS+G^pYf^V?DnrR+5{nS%sW^`~5rTOJG3k@0vsY%0Ga{YwI~ zW+a&-Hjo=Z!m)Zcv(qFxkfx|&Alyt}5)|`-1<@T2MO-m}DDzC&JoO@gM=_M(MV>{X zGy_?4HuA(rP<)-SJ#oI)Oq@(+p52;>+NWmpS2c@^+h5yKx%FfZKY!oJ%xd~M8S)!b zg1q1*>gVL&9-2;g4j%$>SXp|m?sR`K)?X-yGbh(9@*n3F&N%LUaQZ^p4feX+;2KJN zD_wTeJE1Lo;Q98JjB8?)G;EIR)F0Zj$}A0 zugKTtfUhL?Xw2nZKI*-*i|uAokjQZyMmpD8WunWQv{y$mEbx)ma9=Ja1hq?C&|)H_ zkSZgf&1p*H*c&N%RS8d1K3F81O~192q{F{y`RpkWDEf4}>Fm}-QXkpWU&Z(_^h?>H z+?1V63p-+)?*%c&P6D@`iN!}xGfH!vP|Nxga0Y>=zALxrQv%4Pio%MV@CQCN_HE8b# z3k(OE+9wv?I7O?&Hfh}w@G(fYzUzJNJP(itTKJ7hW z=;_1<$er+ZmI(3gbaqyfL~R6ybSv!>-Mu zHCl*}%q6!$$Gs;}Utn;pf^E!yow(D_rjlA(H&gl5M#5|!&elZTovpNbRt<_wgegaN z=allr`Q}^9cHGD5O(&Rs2kAXucYUm@k6Ao?y7l_zw;Ch;*cOy3!t`rYvwZ>i%}SE@ z_vL}yB(%fyv`&kctAJ$=o7k4Y?uH$CTN5|jutS6AQWs|eed&)Ei*4T4lp!{LF1naB zRImz__2&L2D(PP@r%}gmum=c_thFyf@pzq0ho5kCuTf23Gb_;e&4pGe03Tq*6p|Bc z?#0{7a0ZIncm*-rLweJwwt)xBXX2g*n%u*el>Og-?$@aq^2T-q4k4QUIEi83`hFz? zor-SQbcfazpkSMY5t^;1b29N$`)>N$Chr4Klcm{h-6=G{3WXP^w;u}FND|FCu~G3| z-tmf!k6VeK zR-K7ET|^RT2Awk-W%zgu1HqW%yWxV%`*`HcZhUr~4`7cuJJY$oA}t?RC<+jhc_T0< z>WG#H_W(k+ONq15St9%)=emGuj_@IM>llBU2HHJ31Om_799 zR^o*9mNNpFSG?{FL~-V>lz5h@cOqJr?B~JQp2&e%0MJ@UV~&9PR+1u>9L7q4!E-U( zKoL^8u8(0J2HOM4aZ6@3$LD5%b=};x}`$nt6@m+In*YNJ;Bm9^%$cM%6qS)F~V@KhIF^l|d{ZcJygB)wIgL9D^ zywQ)<^o$E6AC`Xj48A1Sha;dg!Aek35H9)sPFtAZ#s+9vajN0z;k!%nCF}l)LpG|B z)QKwjYFT6PUv)TpRx$;;0kT+R<0_()o-LS~7gyt4YB`|dH>d^311NKoSLv36t+M5? z=K^AzDHlyg^2Qu2RF6qVq^CL@Ug}=oeU~m*1avJ~})HOu`|GAf*m_p;=*( zw_*_$d){z<%fu;-l{04I=cUOR$XGw$di9+Up70(#FHStbN}ui3jRrFGpGmD>MRCQ^XSv;MF6ED^U$Q8d~f|moc%wq$nYmE=cdiR=m&sRv#U}UA67x z_Y8srbAC|Z*?Fu*#Dz6Bf!5gHGq1%|iCkt+-luiI#`m~8u_eemgI z$n~$WC2D*BWNxV|TIf}shmK@fX@GuHx_c+r;wGZqdNF(re~u_NAVMW;W^>d0!DT1X zxRbU;Po^TBP+v>jQf(McF`92 zlPnin_;wO-X+?cXea8~H9y67;C{Ekx_4>(ti>|Z}Uh!2~;>mMq1zFvfm;1rcl9L!b zWYlv~X2H`E^`@CrI!5u@pfj}Qe8o*UqlSEJB)=(= zYrYVy*O_QT|4_UM*C0uW{v{-#NPj$Ice?BSgBK-6XmqmBeMYonHMpkVj>veSWTb>6 zH<~sY%XBQ9lcQK$@&Xw1nRx>8Vn6|=i;7W0gq$byYgH8C(rT>qoKW`iF4dUk9u7No z%tC~Sd}E#MH7X|G6)=*x^g(@W1EE|3?L_hyp-@*s!>{y4dxBA&#-SB){+rh) z2rWi!NmpYrU4cj>&Gxva#ly^-QO9Q7tqQ0v!d}S2L3g7%2XE!-k!n$sMg?y+@&#Qc z*z(&&RzbVKwt?*5`=RlZDck|023s3?FrT@lWHK~SP{4=SY9>a~zrqpaEl+`@Py6d4 zPlu?Aj+T*d;_^+Od;JQVl+v0XF^RObo?9+^-KL^i5o_*BzBAS-vG4rhMx|7ZHyQY` zRl-z$s)wxU$-7r;#-cWZLmcx&@c}4$5J*qmTKG~#4GdrwddJYzBz8U7cns% zmv4dtb;<^F6pp6H}DTH6-rJ(y7QPh_s~AWUQ5az!s&6 z&=3?szio`#RM>^~gSobyPYe#KX}KGsn%5hc7uv!^fJruF)R-r4x~${jijhTK=P{y1 zZb{OZ;ZMhlHb!lSekMQ%lW4AYu>rN`HL9JfNS~DEDkT7`MpS0ymYv2n>v7u_A-hH> zf7PCWE;c-cbSKIoJn!8?7ccA?Lfxk7XOa;EZm#jgi&sZ0cmv^{BvKEl^9Yq8GZ*8Z zh^Ib7jROY*VyRu0iil{RW3CABZs$tPd0DFSTqiV znQhPf>Zb+5e#IRqqns_5YMB;DD8AF^{MFM#1xM@^VoLv4yFksRU-4)Do#4pVi*7m_ zQ*+zLHrOH>bN#tlm~8M5+UIk`MQgIW7tQ32ZKXR`LG z>$eX_rFw_GU(pL#b()Oc5%<6Qy(Qm-befD!yZFW&Lk~z@f;pYvRFx}s$n5Y415UiK z%?Se@UgO?+Gz-!Sf~f7Wm@;YRsf$ddW1Y2qIVIHYs;S^*-O!EX3zzKpq9Aj!Lc3nblt&%LoUIifOr_O$ll`P{aOaHsh z@prW!yf3l#C0-OH7FY~kkmvp;`e3P6vZkFr`XH~ zd10NPG~9fZ`u;In7H3dUvwO7CX&7qcur2TiN~@34rJcR%R}@!Ark}meQ6Hk~;zqIw z5aPGlg8k+}pAF_EV_L98LEaRhyrG|kmc7e5b}WJBfu5e@H$E|VyL{C|4TFv0GJSu= zd*F*MfAG}1#GC_O=|kR8J{!6+?bk;QnS-z7mvZMbO6YM!8`(9k!yM6B1KlvZdE-;6 z);)2eHE=`w`SmP{sle;HaiVN)a5M1fJs^6}Y{@7Q|~{3-kInK!E{e?IH8 zN`QW>XzPXS9Lumc=?+^S^har$NpZG$QK}hTZ84a&)zW{@#h$n(gC0KoceR+t6p-Nt z<>ggCc&7&Fs*yt2u#|HgB^WFAX#M2p@T`dYFr0{!wVPc;sa-vZqx!zNC)r*5Gng?* z1mA$!=DmFt=o9g+ZXNoty(8KD-zpwx0@%`bM$rzc7q;fVKH-b* zJl-rM)<+N0!aJjzJT#*ZkQ78oer@O*yoF?)y+zj=T`Ap z6Ae_`GbD#mMXonJHJ##b$mHxZ(Pn|}+gVeeIqdVp`lo|&HJj|$Z2oh`_b=_M?mU#U^Bt{ z1Rs*cG;lXa+W>o);rw9LZIfc0RI@*)6f>D)m5s9HtGhX&xyS{LjaKcXgb~}kcepjt zG;d>VFVkjYbZsbopcCvYzX>}W1TnqFBuG0^<1YGAocHqsjGpU7YQaD7I)xegJ zBDG2A8*UX@(u@`Qfh$T zj5a%cU4(ixGR1Q0V1~gU89`&@uWS?|d|1>IljFFzOw~MySKl||wdcMS9>q@t6AvlP z#Nsiv=KfpgW+|4V5-TbtkFJVXtJQ@t=$Z~|p|BNNF@`}EW!qwT6~!KaZHi93s2P_Bmw;aQEHPT~7PU8K64gxUWW=pth-t1*z$yl%4I*VVX{6 zTETjJfruYAIWU=vL`_^YQ?V6j!YziJyx$vo0--%We9r=}KbuefJZYW~K!ldF@}wLA z$HAT?IZWke z-u!U3gk;(44%B~T^=ySvgJrLz2GfHp;zgEXLc3^Vs!|u;T4^+9j~4h@1!Ea^<1qCi z!xahuOe)-5f0$oz?m^GmAYEZIK;XpGw>o#kHJfK4^_tA{*eb8s8v~Sw9sbzIzQhZY zP@t%I6i39=1Sv1UJwIV_klIlNmh+c41aQ-`NKQkZB`I4PJkqf?&!J?N@?m7cBEOOD ze>G=z@FE@bjF7u>bM<^$l%$k$Bm3S1s3Kdi5d!*n6<>9vo3Z1a97Z0H`He>!f0}l6 zM9UySGWC%qd!SNgJAZfrEgAhZmiew>ose=XNJVxs~M^q2E~p9WuZ^s>U;zMs!`HHn8R?q6W5eC10ijt*dFY8x2v= z4t`9;nhf}uW6QN)bwiN}iB1zsGeIddPyW|C|3{Wb8P&EtcX{iUZUo%13Tu)=*bttFVJkm`6&d;jt7Xwx6%Clo$Ok3*62-Cji zxN)s0!*`t{N6_kZElQ#;(pM0gfKE+&dYwY}F7s1NR}n~7Uk9ka2go)ap~cb8J|O!5 zzP`f}Yu9LPc$l9~9c%dBqRJj!qtZ_XP@aMt<3OYuBQF((KVJYtEqhun zBN;5$@sjczJI%39@_N`S;0|2(OV;?<-Xk5N1Q{uZ7?n#dO`H>+9Qc4X5UQP7E?o#X z?eXNANakrqyD>YtbGh&W>ls6M^wTl=^<+qPh)iDM>1nM52r^qlYR zrB4|}VV>>Zl^f_Tj^djamHupz2H5MXw1I!(y zSeRpesKQ`T@<*LFK`Pa728q4E+&$iV-msX&RBw&2T$JsCeV%`-G5^uTbz<_E+nM6= z$nib00Kt)2LaW|o$o6QQI5uSF80<%8_{U#wmQ^+v5Q6aiUG;5#G^jdZUm)Lp5pr1Q z<$9YL^Ir@6&u$C{(~3hyqDme{Ou>e|{e4&);4bh-2CX)TPfGuJ6U(vG7^_yRU3|&g z*hDFNf-fnk!ZU^nQJ+b}BdrdNx+Qn>{uPS;v)vWg015A#YU5H%8$Bv9Q@+@j4ALZf zbA-4a3*mn{=}6_wZali~F?^{G!TAJ90F!6S-A%+=KI>3O=SbWBkjdm z|J$<(#FN&4>s0@j3nZHb_C5MjpnSWWE;NAtf4(ne$R*)_Zt4Jw)i}pYt4{uXB=Gm2 zW)g%S${eTdRg28chw3fI$t+g?W7on42D@s`ht-19g@z=hpEQE<^7BS~9_66zIFsA6 zJK~_lj#B-4AI=>mkE6o%o!h}B<$AM+*HyK@1+}tm*HC#RzvW8WXua(?Ox5Q9Ks3L% zQ3f;o7%lHK&1b}AS4~o@#b%}kyA%wZTuwuS3LhzRZGNWF{v6o@))8D51 z2#;B;%9yp{xnXBDRUCbIboM6S=>lU3~rj_`P6oclu%iO}(rqxiFC|z2NNjC*I%AgNSH|fso4IE&9oTV_g9j9`2n%?(R6t2tX=Ng)ltW5!_Qt`#GI|( z6p2wxA5BWf#yKok$8$x?UqHKpLU-Ppkx0&3dL_KMOF!<@UP)VJe(j?vgX@tP)3Hf# zyPA?}DWUe@5fk2ai)N)V`KRZftJ%_uzcI#Nj)c;`lc=M8IRam+#vSSDBEpix@Wio5 zsMz~8K4$`=o2BjbI`?5k|4EK(lieaaBx1ZQ!~+kH?hv8O*>62I)bM8|-%%k%nDm8Jvaw3fHD#pgl|A}&<~G7ho_ z2%N_rkKX7;dkpkEx%lB5c(bZ$oH?Zx>EF-3?kBX^WKPL_OP9nq+Pe&kFJzb&#l3C& z!qo;MHLVKyVoaS;+xo{db_PXv@*+z;rKeZgLsg|BH_ykqRs#2!g!aGKr#Jfg_ZC(= zM4;{99jd=Po%^T=wWQTm(Enp(-~!B#>nn$7hUCXS9HxS3o?GJ3M#cSWCtkzxAHGMB z$|vN(&m4*x2lFnr(}zTF;co!W!cX6g3wGB8yM9L@l`Y`U_D;`{@$dRdxD}uFMnMOj zkot9gr3*Um=w(UvJ2b2%UHyZ8(xR@YsS^HVX7wLVjC{D`>+dt^sP~{%h7#4NeDUjr z8Z|E6NtOVkp-kFZVss-xI6_l}_<{^S(@pw}yj)pyrK=%vY>o*WrsFL+{qH8FM;?-2SzWE5su;PAfVFJnW7rK}|GmaU=*@SC5* z`z0NZS8?Y5;dR|Lxz7dGsPDzE+qOnjVd3c_Z}!;~bUj>`Kb;DG`(FSy#F}~kU|Ofy zmHzFG=pNdYo~Wr7^DBSa*Cw4G>Ci4so*f5dWu>zR8LH_P<6R7;!ymE@?QN$% zdg=l9C1L@W<>}(`sB<#z=C>=f*;|7=YAem8swQ|8_yd8yOg08Teja^^sI+Mrr?qxH z_vJ@dEeN4%ER1*0atn^Rp0@%dWh~LOo=wRWdM6;PpWh765<0Fi3vr&KZz>tUIz^HBnI^Ov>6G5kzE-C!$CCN27FwcJ&COGAu!qv73&i{uLGSWBZd zmyTtPsYuo9LALK-DlL5cPWH3tdPmQbmtBE^EC%*7NC>Oab2rA+Dt$7w&J=YWPRSTlW)VniHO6WO9yk)z zfn1*#5z?C-sJ*oth?$ivFU`t@vu`frnO3%IoEAL-|A6tr_##-9Vi@DEA}%i zD+5DzR>{=~Y7tDN4szd{k=PlKYaJCGVNYD1l`hD&b&XhCn^9_gtqLy*aDueoupp+& zsC7l3&w1PO#`B!vo&)SGRNawr?0^=R`HVz|=@s<21uE=5 z@3!U9tnGf{y7g_>6FyWX+ZiZ@P3XI+RNBcTZ1l5AD)(3hi+Gf=`6)np7A3jjLTMuB z5n6wp;GZq00CLUNFG%XnAyhctO$85pw31M^WGkRd;IStUfN0zqh(pd{hmzr`EPE;~ z96HP8OeiM~Q3z99;O!Av;ge}&wLtVXaA)U>gIOKN{r9%HK4@&Cx5sR?=!uhoXq=-v zzbbVNb%vR&J^Y}Osh0q{j47FVU7^bOd_h=FXb^c5CyVqS~g3(v$?gF4-NBQK>+Cqom{tE$$sg6o5*(>}aBv0FXq;^Ko zlmZgY6yqj8*0d^1aTS=@RhC!mBK0v~dFWUq2*GGC>w^Ft;SrJ|K!i~xA}qQPdf*7Y zJShW*2kh1<@rdL1KyWld8`E9-Y@r5w7KlEkCo!Xms}-EBN~a=UkS~KSu6jx_A#7j` zlx#r!KYYDqSX|rEH5%NZ2?^RrLxAA!?u6h@aCdhacbDMq?w$}JL4v!xySvNR$=>HZ z=l;3B*0UNKrd8FbQB|{US;O=BuuK&)X%JHCyj#YX{~AuMSj2Zrgb8D3phN+uE!^L| zDjTOO%vVcuOiqyY2-pY5ke)h9iBeg__pOt!qbte3Bvf>cvtzw<`-$Fmwx2#mlTcIV z`Io4aH!duw{+N4cT&VW;cBy|YYt+>|T%e{_(ZYm-(=bl-LIb=NRu%3OzKMEuUrBX! zFlA;*Mf%j|fc~?;?Y8aoVJRJS`+b+UIIew1o`p$B5CDLMg%Zl)1B5aemCk#tiKb)t z*;yF6jNFyj-9$zeE$+zVl~c0w8S%YlH`;_0Hr^W*cG1TO2BjWR8OGq@b{6S1UK0V? z3tXl#jvJxdKyE&PwWesOS>kOexV~zrofCRI--@0rC#CF zoM+I?Z$gB;2h41Z;fvh83rrV6 z-#_F2OxX$(gBKWV&STFX+MkOuFe#ZVv;Mu4dOp1u7kMTk408y@NSZNT0>`qoZ`!#O zeQ~|_;|!EPAw6OfK!nr#R37+j^{{W!O+1pwNL3I90vZy}3WT){vvN6YY1Ld5`I}<0 zX0xaLuJOyRrCa!6a4&|lH~V^*Orx?`8BO6y&&C>i0lRU!^JRvQ@8_m3IdC{4TSJd% z2h}*L(K*3skawFdFw!J(9gRTad%kG^u5E&=d)7=JVS&8EinE^7Sm_Uu`YCH9#k$W0qxQeg3qSaG4`;)_*f zPA5A0`?A31(7}`&6B4R7Y8WCIp`+$Xj?MY$v9X#0gpEc4?FIdy4Bc!Zv3kYucS63K zK1b3;{tgfe9KFmIsMrxcv_c)dfDu_HUwkl!1%JtoFNqW@au&*jk4PY+lfxT@M4X~9 zEBXE`hMB@i(9Ueql6k{FmK7I~1W{|T{zbaxco4<-m}qv!xH_ikV+7;qdys|rqAj}q zWj)yz+A&2w6jrRrOK{66QFL)3nZx{JMVvQ3S!RxybM8RMOB;j2GC|Lcw(-yQ38&So zja`gmq=f60FOydtPqovj@ms#{NU;lUBBBd?yK#kkmwq%DgU-L|kV})`*O2nq3bfX!tA|bmQ_7&qzlAtMhh>0T#t7SRlh<(Cp8~5(^Zfu5xILsp|dpeWKe*p>c zLOHXF(&J-qB!@XcyVS95iC3ziy`YWrT4~ENi_d2Vwo6nbr!&fEq6S_oW z34j>_q`HO(pBoYMNOXv`KV&opoJbw93VEhOk=x^Nl40j z>~IV{`hH^)kjtKi&M`T=;5L%^+{_t)#}AbOb-I6V&ib(|L*yoWi6R90>8XSxeuGY9 z^={6EEQH!o`ip9ch=?)UwpXo;45gcI>Yjo4kSKC30%pAU%g!sz0EFgpS{2swp};oF#x{3# zB0sG+saGG1qltgdSLU?A61*Nh*`|1Q*cZvS= zlV{%XQWD=g<_{`_*rzP+p&pFm#746Ex*i|2)e;Mr2S>y4x zpWu0FLp)KQ*YiuTIZ^S~z~K#A=DV)@eIKtSI>96{#D7k?6Fsc#E_)lFtPJC!#GJG} zq(^N+%a$p7p=kQc4JVp(xXQLEiu5|dFf|vITNE1&vxeGf<*KLdbT|@5ZY~v4V1>DX zzaSX&#u`Y+`#kftjaCQPx!)&aeq`M%x>E!0H7Vbiy`?BixRm4(XdH!0ym*d5i5@3B zjc&Zyt3B>oVd9O=F=YMelRIz+cZy}y8IDw@qA!)sObWS*zR6Nnd@>Jo@5EOebvg=? z?yF&^7!k!M`HTl!u{f!-upCllux{gqQTYwc4X!-W_-y2p$@or$^a%+q#?DB~RfauZ zP9(`9}u2Hj_+lBEznH6!;kOz1P-ujxZabVvaDpy)_17 zM^fkY#&DLX&vIPe!H>tyUL}?(pfmnsi7&o$r1uvQbbo1qc(t_?R;?<5Glb@Hb;(Qv zqK!!yAGZ(--A)bAsP#(z&F7dRB~A&}Kvb#RDKIuwUSDrUL5|&_&Y&Bhtg203iZj`5 zQmbqu8M*!F8OdP(E#)YeX^Exz2cEym$4MVHO^2{?k`#LwXu6Nrf;{_lC8ydAkWEsX z9@CaFf*!&7w z2=H}M$-{GrH=mXakMm8MAuz<+jrnw@32p5IL;*oR z9~^2<>L#t)pr89A+L-uS=V(xRh_X0)B;o}=j%*seF{Wg${p@|jRW@>t7XQ-*L3=BC zPW-daGg;y=s)r~P5)*YBA8!nEQni7CZ_z1iyQPH#(O<2ILPmEqQkXt;O6{= zwbF2u5I{%5OCqJMV(T5tJ{71I%LlXWu!#J)do=B;4BrV&>^34ecLxLyA8j(yYku8{ zNq-!#*DWpsRFP2dx!8TgQ=DI1K(m#tp;Nq$oXhF7A!v0Xb6Z_Aw8TBkl@l*HW7mUc zGKn>pJhvHzs687?aGTTjl^3_h{(K!`p2aLqV#&{Hk@=z&K|SYMa`mRuAjc+V!yl`* z2e!NoM*>g#c7yFJQ0qY$eI;8pQWV*(32KTU-RcoDiEQ`bZF6JCJqE<=vE1j9EOPn* z7U?X9CPLpg+}9J}a6M$ajDcJ;cV$CFzWPdr-hX7n7l&K22Pz#QJ9-a(;6W( z2$^dOmXVA6A6XcqhO`JD9L%=Lkw~JKKQ4~K6%_cn$^9_7n9X&B0X-q-bE`UdFS2i1 z+3G_}sWtcA{y`lX1HEC&O2#d%u=WTM+J@xKF^~{_Tb$*GijPm@r<#S6Pa>cUMem*# zG4W-h4ES8X7#0!g$ELLEdi#t_M;sQlnQg1qK`w;qtRrTnxx?)%L#rPG41s6+HZEaZ zOH%0BPUafdv^rk;rwYjjQsn;tIcn%*S#-QfIED=FwAh)IxMkkOhhe#3A*@aX0xFz8 zF#3;6o$|LX10JdhOTap!X|mi{x}6B{(#N2k1hqI6VHuY10YzR<<(5q%_t&CoWGVFcw2 z2*-YpFPbYfEavoj)6t>|CgH-@9f0$T7FFnS(h-MD{YvlfJ{uvH~mNQ z1b>j!cr1F0K|gQqt~MEwbP1kOOc06n_#LYIY;4DHOuW7vk{Q-6Kfl1QTY%pKES_~= z?=YTCpJl zD}}e>=fm8{#}KiVlh>~DhSx2;MI{H?|I^l7(2^j5Lxi7&l&6}~lj7*g^L?IP6=JrZ z2Wj?6EK&LH4?@tDM%0vNIWq}_$Lo;8KOReG9T;9W!Jt1nEW~BJ`_KCSyMYV1e?S1^ zYU?FA>uax1K`|u4R}_s~vNB?^44+YLYgRDSD!kyjf%<%qeHsqt6U6-Mr$K<6JZzTd zvB;pCh|=4Sq#t5i)eZOTJem^W;|jkHqqBy7$rmx2i~|05(*M9?!f3&eSP>5uNSiza zk7V(y&w27UBxR-L#ml|2ngbBz``6DF1bmx7{FN>#{h!x=Ki#83bo$6;1pD59(%?TE z^zYvd_@#?Yl*_NLa&?y+u)p^`CmOFIO2QqyuXAzUD%#x6GIE^NOP(-+RWGL~ZvW=_ zsy^4I*|o7Fe{#~?%9H9I%uz;>T_iSHzItUo!#h+Rot5JF^&wC-j-wjsW{?4X^1QRk z-8zk~1`XL$Bc0XrO7B9S@Z0BWH09rM@Vl-=A6kq$2VD?-bcyk~a)__x!qtlFE>O${ z+q;r1I0f|Q^ahz+258Fnw&sB?>I&v6^ay_^aK#E+h08TH>6>)@ze{CDj){0%ZD>#! zNBU%0y~Rpzc|@`bf3U5ejcZoAsh921_)_9~qxmXVoLR(GDrQ05h}KrpJ{}N;`Z8B5 zpbJhg2$1<=ta6#^ zchdOElKhWu1mQ9YiX{1mAi)<{&J0rk_)%JxIv3_1GEY17g-A3-p`DM7#+@)dhj308rG5`An%WL7#er)&!wdt5-ZYGT@axM`Wyc}u>m zp`Rk`D9+ZaeMQmsA{5kM_wWH336*42rwwuU_g?|uGe<;(oUW>G6>9$#rIz>5DDdwl zZYfQ^I9b+k!s;9kBNe{t2$al!p`?62X~;53x31xgMpU*UM4{Kf=QzxSzwk&3R^59W zKQtH|`SIa$W~xZ|lBmH~`1xS}w|2kNZHg808GGCZ&b9-$Nb24fJ&KyF46wgov{~2P zsO{&%D7?59$*9MpMhP=L<)A{^=AqF#A1%AQ_Fp9+~>4w zU%`guHiw47rhe3iLVwjRB1_`9f}A%gULtrKp*E8qmmF z3NsTP3<_~9c8LhV8$V#`ez@538XY3Tw+)h*gByPeB5N(?v$BS=MpLp!x>oN zxE5PnKof?KZh*qNVvGvsaFMdo2h7gycUO_))!Axf*QOO!`u=ngy)Sp_6=nJ6I2Z(8 z`8qpTJr|Xxq=;Uf!N0YX4|yEuQ}A;+x|;;5!<-iFxWB?Pt#AJ>0Pwcew3G2-Sd-*8 z@bL*m^>n9pPT5(nBf+0r08B<{Ii&>dheT!fA3P3^@Edl#$Dg?u_*<=*;O_3Zxhn@) z952m(;}B%d*l!oesn%vMA#RonRav$7E5ViJOvK2D~@vUl(j1l$QiuzTDB z;Pcjbd?QyLis+hon>yzEoQ6aUxp$X4($VXtC0{xvVRDpnaJDNOow8wkfp641Q;I}c z?~F6;SFV}0zRzN+aCSCh7@+|B<-1|&?}DEtwlw-cu03-ZctUr-_**Xt5@nA2uVIdZ zuiM%=K1~O3a<)cT%s(Qm2sh1ew0;#&56dm)K+QQe?NUih$-(!y-hl}xkuthqSoGsa z%(om%d;INU)6|Pufd>2ack1tJn+s$|)#^gW{$}m`vMKCj1(C#0Lj-9;H7y=kLdED` z?#3f_BN&qG%+WXBHkTKl7 z=D?FTJ5nWNd6Jxzbh#z4YE~+ho)M$T7)7EORZ}OM`15;3EZdhCj>`73qf*qAw0)Z8aMrpZVr7|I*NupfQ`R*w)PB zPt9=^D*siTRj|-FoTyX*aG976&XhLzh>`!f3jk6u5K3*yXRhsG>tXIn{6lF$|3-M6 zQYh)p&P*f6l`nBN?S-|~#}j**^~0*vq4=z8l9abkR)2)Z?6f984pBD%6p2Etd1>4U z6CBH#Qklcf8~x55Zf1*lsA=^rMLDZbFo0w6GMP!aJe@QWW2e7>u=CBahJUJbJ>Tvg zevXdi3C`k6b+`Rg!uUJ>fr9MB$9e2B296+H1Ny@4Z40Rt9hn$5G&Hn<_`Yj&h zv%QNJ3xEurmwE2bsTig#kJDbwO13w`X9d;2!TJ9 zHq!s$SYMJgSU+O>k26j;^xqwwq9<;VuFP}9q>m!kt&CP*-9+n?-b)kBvj8|51M|%d z_V&J$JOtOLt_Q>x^_ph0syLjnoaQ+msl zi20g3BRRV(9@z(66+?s(VTi?JdRSEM7go_cGKE$DP@M37MXzu_hQAtt{?}c&LWQj& zbc;U0iX1St2vlGVsW=`)gH-sl#@=iPmqZ%J3`-Z6JEFW7 z3V3&7Z7h)XwY0&r)q`zf%q-qy_(#YF?Xn2CG`ub3DOC%+Ir9uFN3_Q+1XDtWYBZ)V zYmc#%-F6d7I%F4xxe($`(pt&3B@bDk??E?gar8LF1!5GCrssjElB&dp*+GjKV?lfp z%Ht9QKZ_o5bR|H3P*;Os+g8(K>k-N;& zveH~A+sh6CfBNOTrYSWXHI;W7c#`;zGxT}bYG)rZK_hxaMo*(c0(QA(ABL+w&aDXn7_Gl4IgM0G?4_4Fkwea zS5L0EyPn{Hk9is*g9;km;qT&(dl?qqiHC8Uq9E^|o_Y%>PET)b9*cdFM!pV?W;Yg6LfZ=YXQ2?GFjm7H37;$V{Gd{M zMU57qLm>Rme-~}c1<`H}l}Ob#ou_`<$MzbnTDcoaI6IoTe?xk*cREa>rf1ZQLViuC zo{UEelf0_Qx>VxmS3i#Q418qw`UtVt*!LsjkQC z!nB1iQatgMbxDoaxD(lbXQB4i&sc3Z52MMkgpP$P{A!2e?VL`_l$o>DK%-rlO)6WI z>ha3zMgn<7g;;2T|KIQYJH<=_zsQX@?^S1#>O~hWt7Rn`jgynw0Vhp61yozTie{z= zj_S_5JtKH|Ar!_Ah?!I$hHT(O)-Rrs8Z!CvB3&2-0>iKkKV5niG|n!F4v)HM^@Fl# z_^plqjCy*BzBxN>fqTL6sC(Om>=^EE;K=@uC$mZaomTz7<`~wmD(2U>JH>G0QDQaJ z7U8C?SeoO4=>Lp#ObGyRC@I!5*C_taM}H%Eh){@Hy>&WqG%k6B6CFR8tET>1{XeW( z3o^7Yx^p58`Q`tYDXAfOlSwM^MJ!3Gj_f~V3?ei=Xe8&M)Ba_u@b-1gm+jn5ZQ8KC4+>cO}`xc z784uuB7F^Ii?KdUlXr3x< zl-kVaBE!@V5aoGV#V@NPjhu^qz^>J~Y2G_Gc{yojck1BbVo7an*jY>-v3_I>wStz^ z*r@!oI5P&dgq(O(Jh{HrnZlFNbt!~zSQ!4gFp$6`PNKTVHzvpX)4M4SKjtJK3%K45 zu1PZp8KP=ThEOmOG{Nj~a*UyTe{`O2ZnnD9O%gjiK$D}!|FBfn288U3;HZ#bUv8FT zrE%f^?$JkB1AiH+wV%%~X4DmD_Mrn;TPO#9z=E-_u032I;(#u8sgwo*W&Nw=euAjq z3?3assHhs!*o{S76txeWK(H>RA#nm&K79S2WL+Qa$AOJo4;NA`ZqyO@hX;uW5NN;e zs=it4^g@e2{}pwRl>YY^IT^wNsM(on11A_@FDQSlOF<|L6*DPo5r*P! z0Jq>A9_?$MZA3SqbCQA_o8~mHO?ra!LR^vXBBndm0-wk+u1@M1Lb~m&TeW2IEdFsJ zvzs6-ceY37MDhpU_ei)so8lp8Ug}X+f{wTnA$>OSenYu*y;v=-@#AL8OF{fIGaqln z=_wBPjJX*Zr0N3Y7ZOwq*c`IY8;@@spD8F4!l?=4!=e`!X=c4tr`;!*&`q7h74x1a z2`c#vtR7)iqld=ZI7yo#^PmsRBvex-uXzrd+XgqWrIkdc-kqObms5-qgAE_tz>_uJ zR0mTo3yxD=#FlxK`D=3h|TzR}Dp z%AGE;P^8=FYm>-{yk18UmC-lYVWV?PV8{$iO;2Ng;kx@J?>c@_bgpo-p1E4%qDbbF zNZ5yx+xrt(fiZo9rGwS;)KRvc&@UP>K1Sq*%Vg)O-Sd)hOvZY^;n~*HolN~zcDAzQ zx*$XiLroMo;JZJzg3~YQ@n#kcPvOcGy}rJ&|I_cQ`u$=R^-TVdhjbRQ{ZzVVr?>_9 z^R~K+Xubg&6gaJ@75>;9{xbjjUbFy|y_a(h)pafM>6NRwG*E)}j%mfgg*R`!|EPm{ z{<*i9VXUlcHPCu`6obNaq7i0PBT@UcN3`4!sJ9HEJUD11pdh5nPHpNwE7|ux3 z1%aTbQ4(y4SD>Gt`bT5Z^~`|tB&M?(pUiuG;w@ox@ZieyApezeFg?J#gONJf}bh!`Xjd=1+DE_j?3naBQ#te#O`6T>oP9qF{Xr5& z_i(rQx)GI)yDHLq7<#j2!h+$1Lo$rxcK6z!w}DMB>fGM8`}~{wYhB#;tCL(eXX0G` zs%(laK`rCtdzz=U)T^aVGU}nRCSA2?AGX5;(qKEe!b}VU;jREhGV1$wbNXP^uhqoa z0cerb&7_l&hR3@e-)_XaS~@jEpT9?y!bSIXTovC*6`o0RjEW4R>C_MC=c112X zd=s#qVoYN)5skQhsdadtn55RAE~j>OcBRZMl6*kWCjd%w4l#*$m4CygJS#tcjymva zQCua(6i2~V<%lCiYfN{1_jot9g(=dvI-3lC^C{#9R-S+8#l_({dVZPTW zG~^;-+&Xe`HBH2=o#ljfnU^-^g8pH?5`}>T0$7=nDsjt+8pbg~gMWydI_}hHp>V;< zWms}5VWS3)Up&j;#RFE}jTFG3;!Un~z<`aB4Lp(G+?F<^lc7ISCgY5n5`-e!zY>reY{>zyOqyo zl!r&SXd0VUC%Td(4WVg$AT3kez77dhjyM9qyX=k@g{GcXz;dGl>U%Z!a;39(0cz8M zfo~VQXGB?-cy21VLm1osL|peb+7@p=UYzT+bLgxZwiMG+YR`2v20sVxnqTqP71J1_ zVm;ky{;1?li4>`niy`%F02v*ha-_8ys}k8D$3r7=El8vC4a4T@&;$}9Cbih$DLisvgdIL8M^bTL- zjXkOXV&H`A5t@=0F5X68=2}B?KvP7M~v#TaF z8U5ySYS~hSl9I8dsT7wwnZnv7p-Bji?g+48$8u}BEv_=OeLOF+4wTbOcTGvH*s`mI zq*`%bUr3RQ6S`h2C(iJbP$fNWdMK&rfbQMWiT2CBXR(_h3h8}WOtb!B{@9WKAYWKH z+D9jEZ8(34NF>^&G4}8lOa8QS(dz#XEs(+Hh~;+`Kd^N8#Z=y3blHH@D98ohm~V8s z@CLF&5*^6{L;ogBHeGXX;CA+&0b2}}(fQ7|Nz!_|QCNKi-EjNyU1zpOS`Ft#;9SDR zx-^;1o|pbGV>lAcOb0@sBjiAYPGsl3%&J{86no43L?(9x2g!K3F_8&&mclT>apSq* zG`_Y--ZDhe zY>m#!YPxd#Iy#;h?slromR2Ciwx@dMBs|o$vAQ2PBgL37isr{Rwk46H5fIi$a8&r$ zgJzy-rMBw-#Gd>Gn+1R2N*QU%vw_W>0wLaUQu{`Tw`Raf#7G7_vY1u$#^$_H>15DNr^a6fRBH%fUaN> z%s38ZSt_SZtm)Q2$0EbMPbXQgJC6uHbiw)Z>EhYT6xrHFAoT7Xf;)vY;8$r}OXbfkkf2RW$SNW5JDi|b1^5xQyCRAZ_&!aY)TaD#+>mi>HgYiPKTen&hvkB zdzKOb{4(cqC}jlNU0J7S%@}6kRcwzQBLb-|U-l<{!NB{kh)+6eX(ZQbe|{twUQq#{goH$lQ!r`-N$WB0 zJ>fPNk>#BOA#QaJ7u+P?pc7%>5EnAar1O#Wr~@`vAUL-TyNG>;pko$!wt}swK4!m( zM|~3!uS>7*%M5-1!rQ9?z0>+P*ER@QdWRD-rR$q1IRSSKm0ZYd^_8Z)I?a|0e{&eU z9Z+OElzN)zj%T$PwNGo-pXpSDP~9I=`*H^|9LqePtGuYAysC8|ZmZ?amxGpi$LVgS zr^jF2Z#lTXdiP`&DgFs-wje=oa81e37to48-u|`nkUV5LYh20dB_~1myw)}+20|KC z)j$d6iLA@6NB)~PLTRTrb;&Nb3jY0PL|^O|b;#dDB0R%lv-SY#nZE}_DlzW$ljKi% zjx+^Ho3JQ_D^p*m z6Af9!$mhj-3ON)vT0F6^RUD82qIkgC(o$ybg*7go* z;Y3FJ2ChjbG^<4}9(dVR{bjN>9;(tnmeTw3At#c?KLJ{X#fJ%;Vrip@dT*=IHoIqi zX9hu6q}$%LmG=XWsA->UPd?WuBYeNxT4Eh!a`M-EXfb$&xH92$U@McB2~3MEMsYx% zkA@p;apJl+Y!&04lu!Y_IzRXrQ)&|ov!X@PA}H-%FOI_+w^SQmX3<&9S8;aemEg7s zG4?S?h->9V1zu|53hQS!)OGx?Vc2aNoZjKib&5z@L)6M}EO%7$=;k}jq zxfaU;kQyVK$eT&!x=+wG(lssPoB8Mk!SRB-e_ZYnM>->l|8=>)K_c>Ey5ub=F_^qH z>53WYExx-5ovy%C^mzxT74<4UjYwmU*NzzRF$jB5g_v3kk3q~^vbnx!Hp-Ig8*)tm zk5lqMBBqDta*+3gM)5KB!4r5((80}nms2$^c(oU4*a9?4yh%IgGQ{l%6;Lr$-YB~H z*)YC++rroM2cA_GKA-w9D`En>@)*7}#Ecb{t;CNw;^LvMu%@Rrq;o_neNNL7A499sKnOlfqPL#gQBQ`#@NQp^EdZ*&ktRmU_$wLttHX8RssJ z$I^yYf14C8jW}T;q@qI@#l5qAmImja8qIw`$UVw^lECSi>B+DPtB1AnO4a89KZtg^ z0>bioQjRn}k61N5{EqJ(55G=NOXQ*1%T5p!dAw0jnK`)&&Ph2Ps!HV+D&05T+L_E% z!W$`b+57Gu-=nA~ZEG?Xv42_Z>by61%s1D$AJ56pmGla8p6`$H`>I-H=Cz-bK!Bau z-z0|M)B4j4R4K!G_V|7V?}86$X80ief_1oMBsg!&04|fk+##aM(kw@WQcmgS`=!ew z2;3Q)z@L%SoD~~fPu}GdPV{7}yFkUQDL<#^%*F7RTYC>ZcJwRV-ssXC<9{jz?&)7?c3m%<(1d;Py^%cUM+W2eqjiW4Dw zDExT+8n~jc91eU~p_^5LM%gpJymF#TM_OU@ye+bPPgSsJKrmviJASKtRRP?5m^OsESj5>^1`J_qwJhS!sTVT`r63Ee$kr zAVgn(#f_rkMpH5RC#59>k(Y5ja$*m{HwWu189$uZtA9t6BYAevvWxOif4XiFvYx9i zEf=8YEFx;pG=}jAY(ocJI4*{2wQMfe(vL!|Gt8p%N`wKWlm~J}5Dh)H2_{iUlX>F8 zlcV1B4Y5%!V_bee@*5`fjT{3RRb7Pvh#@qR+JaUXcl1n9Y&GR>OVT(}nz)=d+nB`z zNf*$3b1$4kzny#e>NbtuwMi^xYJt5SBS$DOrjn19D!wgSy1V|EYjJZsgUW^nEZQN+ z|KkV!;>*Iu9Uxxu&Izu3h@Qk#i>b9?+54=7My2o{IvX2yAqrR*`HRP1`fdo9#lPu@ z$A~uRnI_P;I;J@Yx6HIU^XiC~JKgqegCl$4-3p|0_3zoZWIsuN6box@!u$IN^#KKp z+7ZAmjb025c;=UAEW4bGWl%>O8yiz}yX)cg)y9C_wfX!%*#L!@>h8Tn6hFg~s&IFm z2=||EfD1Iqk2O#E{i&?kEH@SWL^7{S$3)-ZM&XQ}`spoS0DEQ^uF(UzJa;fZx{2Mm ze_dLTf@^rs#wAtg1^y&$ylK@1T6eRuKT?hNaLv8X#q)W&6zx1#r>*zGe^%f2$?1D*Of{Z3hX|>`!S-!a$8kKv-v2 zZ0-Dw%<_l|HtH?! zo0pdZL#bHYFN`N{U%&C`n?vfmgkW=uVQop&6kk>A)Kpwq5%YRmQW}o}g&s?I3_zBU zq!ozcT23~mzXebvTNz!K^wDXrD>t0k-i_fjvVNSHxUQO{y9$GTlHPZ~e1UW5Eg=Z( z5i2yl8X`EI7;Sf^34%kw?D5lyr)d%R5mTUm4Q6=O>yO&%xE**iQ}OmMbH3&P@LfAj z;QuW(rfTUfIJ=u%FROrUS&J*u6IiU`@cbWQtogX7 zgMf9vKJqN1LV4meyu+RuPFk{pTts$YW?gO)ANy~enjgDRj!0i_rvdgN3WiFc9}f{I z!bGOfuRly#M?>sY{d?KGziAAC*cqp}nOTA9Ds!CdnLIvA$jo zWMYQK&S;g3-;-~M1WFM@7k5TC7>nF4u5a=V7QT>kw;3G6mu*bN-k`3_eIBC#$ubuOYa$vK&{Xu*SbUk-wnt7xGm3(-0z$uolQeK=6% zo7BV<|NUVISYJS!E6&j)RV4k)B$shMN#mn%>20t?Uv|?(Dzp)hgd@08U%qd z<0tJH;^PSg25d?EA@8orCbs(KT~4tl%Ujze_sV+o+RsKzPkNBaXCzYoce* zlG;*ZV#9zwe^4t5al!McN2vH_vw<~l9GpZ`mMs9)J@<^*A~Q+vmNgT_f`Y~{lIayYdlBuSYq5Z9 zauK`IWTC_YE~D106}sW1);Z2F)wr?z0_~gF{uFX7n?Fa0A8(k+>(KHLto^?U#8P0? zHlsKtS{-WwRoP6R%-HCiJkG+x5KW&8*RT4HIm)^A*%hR-^y%(sjiD{{vPH%8^nh*? zob|>iJ7dF+MKo*wu1i zuJUmt<*V~Zxsb%~EKMfd&+si7&*BDvf2WMvd01K_a){uchX@eL3fxYot0 zs;bp4taKaU&%h`wk+=5zww1}zp4X?gItCx<8(EU%v!(_%ES>rPqwW4Lbh`J1$XW|~ z%&F!!=lj8z5)c~wL*vJeYjxXXG}%{t1f#zDugtQwS>=*=ZX3U;LFNWE5enGQ2VfBrF@=8CCZ}D5fFh5e(V@MBDl$9BHxlnkP)EKtpO*A zot9C0Xe2|&?P9ZIug|-NvLIdARUlt(C~ambswl=zr1DL)bo^(|7=EqVnWEwD1${R3 z)@CidMV(9tN-hOM>nJ{Q{q{mPRVMg4A%SV}Yww_c^Fw(6-&z5rzMvD4#1Nw|&F+=L zR^DwuYs=~jwKXq93P&Py4iQpe?=cpPD!7Jo6{}A^DI(IYW=l?fjVQ$c4@)0A3c24r z=}jY2Y%(Z7JSY`Y%6JL_X3~A`kp;N8nV1+2Q)4F_sX)69P0GoPXkcl_sYX8okdyU9 zE67~h^-=U0vVld+aQd&V1do#u5$Fovbg{%g&L+JzdAleE&m7BF^Q!+Abwy-)$55N2 zuQ*Fb+fyFXx-YG;pVmvKNgD?$P^}ZjmM4Ub|FO||&v;flaj2CJ)9s*)6(18Ex3Upw z)Dt_^1k9(rd7lE5d$Dgjrf;LA3$Tb7Jjz0WWU;s2;T4k7jM^+b>O7J1I&2_bZ0;dr z%sf_b=}P|zNqf1+|KirkLpY0=DoexX&d4%nL)Q`9G8t=epZ5;_#!}B>VPoL4U3cnDfI35>wy^_)@EJ8#`~&z}g+r@DYAa1I}*Mz5AphcmyI?(QRG z3~+@jeGzfv<{nFE>>X4>(BEHKS{3ds769`--!J3?Pj+M|HJ)7Hz#Ce!>?~#=P*4MV zL6LZBF^uW3+@yh-%PMK1+|_vI4;5-lBLaxOw19`!B6{}AKYH9%Ac59c+^Xe)zx5Dc zv1g%LmNXM#*PkAYJ%&wT`dU|M`+0iX6GxDQG)MONMdHUt*=4w-DXJn|7S}vdyCa#N zfS=z`ey*50m)$lnz2ox6z23mtstITL?zAIdS#i)kl$8?-GSrt}g`GZm8VPW+xg>H% zo&Y|a?$UbGkBeAI|p;Q$Izdlkxj;{`hy_hY)B|T*sc3l7ZUcCtw7M}K_w5J zZe$thtJ{4*Q7ji>8e9zMc{`N7MR$28`?PxI2Wx|Eow4pIkTdS&EfXy2b@om=*I`N= zuCQ*l)k;-+LoG2Texyt}>WcD0xD>;|vZ`&a09@Ng&zyeP33Sq#G)Te13Limgg9QzY zP%$0<0=MT0OFMtHSF5;JWa_Mw*B_KGI4iE_<&p5^7ZBTHhDi97IE>s44(@@qB$mnz zYnuHk50&C;WH597G{>H;mePKG#quR29BfVtMiNTlTKXCN^D&B!-uAT@cmr2S66hyp zw;G?a=5f+OcGY<;^P2pf2U>X3YFH<=3dZkv)ssy!DBDj^Dyrl|LDlQph;4%S*Q$_8 z3iNhnLmOVoM{NQ>ukX1|fnq%zwWeB{>hG|SUUbmjQHly{{-W}_dIP%#QjSYCyrvS! zv~Ilc!=NLJ6-mRb<2L6!3uA5je`I}SR2)m!Zt%e&I6(#p8r!`a{3y zhp%Z)`%-x3lxYmc0Y>Xjk>NPO^f^aGxGkeh%6K`;gD zR~SrRJAMJw1p%XeY@ndb6dttGGM&)feBb=)t?^X+3-IxY)kLwS`OWpH9}-b;o|kL# z8QCQ`L#q$gka0QAzzy36X3n`UtKfd)>*MB*WOy5Dv$rn~KR*HfPMMWHe)PLDcvIfP z6Ezg}aoS&bk{_nfn1qx$L!wD~?2ys;>a}(2Yl5Q^=BlfCOxzJ7OG49&t#!1&51E>{ zx3TmC4DfJAb1psTaCz2GZUWcs0X11PH}?1Li27emB{@LFlH1)t6hT=HM&~)GY8UqK zHIqwc#OgZ^(C@q7qlYQkJfoE+toksT^(%0%mo`F+Yw((vD(Y@lni?2_s2kmCocAMk zh?j=%ykSlJAe#_**jDx(S?R#lxz6h?RNPLOF|1aPYb9j7QkDlMVF1YRM@c*Mc&A;N zc_;YSh_mRdV&X0~Aqz2Ct9gLj0b3zTu6cB;NU%%EKuCe5Y}jzd0mg-zSq&%k-1irL z5AA2IT4tV6TYzt;Fwslq#74hiH)0^loE^YiMDs{*uE{rsNfYC|#TM-4mp_?Is@3>?<|5DB_6Gb?ET$|k8cA`e zZCHf=hLf99#cEqRMkck@<2cEjFMDIn?d=$j7}bQ*gu##zes=lEY9Jd@)JQPXu$dOQ zyCVvL@wm1=G95r($O6w1Q@=@^D6a!`zTi*H#j2 zocQ&vw=^W4DG>NK)6@g|V_GllAvTZ3njLiRA_faJRMTMF&zDYaPLG-$2*>Kr*Dnzt z7&;>nLZiOWYVD6X_kUj>EmgBVg^6P-w}Fzo2ch)Xer12w@=y`n|5US(MP}n9Gzz=n z)%0+BiB#mw6n?aBg4y!69EDEpfzQgAHE|EY=h@EL(l9xKp}D?s5*{lFw*`__3!rvP zzS*;(>mtbfCgA*R5+Q6Lh2a!Sm_p54M8#ALVK)%l2{AZFdpUfzG-Y=M3r|M(YuHK) zCRO0ePk%$U!So$yI}De>uXH%kR(TEgY53m1wxQ}s7{%uQ5Q@-rh2%`f>-x5d1D*@6 z&3W-Tg?S}EZJQR4(_whksk}IvPEZsY@nbS(l*n^At7u9qKOB)0R`IEZxe*4&Q8qu7da2qhLBCWanmGjaAW28d8XH`~7RtSgJ-w zsc|%|r2+Kihex6QYrPtpHE~m>`flz_uNxZNHM+pUNCN5BZb1yW06rkm$_xIO>TQEF zUtyPi+-=C2&~F0Z#0@HYhxh&XvB{K#M%LQSi%Z3dXe&)$cPG`{oNfO`>^0EjSg>(k zf(>60Qt>SW4x_|)Sq2PV*?+|KB@tpM{GHzz4bJBZfwK)n_9c8ufV_PmH0oZ^zzvTP%~@jW@nW;Wq>ms209G^QgVsEHfme3HM`%$-pEx1zDdJcFztQ~YA zKhqP(bu6DzcLDN@uOMvOUgM0JC}Rx~j1dJ2@t1XK9O#j`U)&*AD6z&h0ev6+K*ZdwRevAHXpDY6vmQkYd0r zg@7}>vUtZDCx}wTx+Fb!@YC#8F_q8klknC02>lmbcH&?WgaZjrYJ*uOZ9Xr7$bIym zy6a@xLL#b0Iw%M608Laoz!!e+gPf0S6l4!eW@s~Wm_%q<~;`2r`c`rPw zXL+l&g7XaMUxm|e5Y+`PZq@5`k;+wDI^`TwS)52C31+T?le@!cGwF>v_=6Zsc4Ed> zf-2xo1CWT9{l*%7-eypiLL7ac)5h{+F-x6nzsgJfj@a+Ofua{1kaW3ql1HY?8EA!T z%t==eapnDxM+;vsFSd)mhS|;ZLm&&5Wvk^ohR3`h5Mg0Ud>~-F@Cmcf-hL2h`Z&G) zdiN-BeSe~G>gJ3=+F* zP$YG|Y#Z-quvf1(v`9Au2OvPdPoc~Jm3@5c0K@?bn9B2WUYujvlnl8pN^m~W)6X9K z@E|ot3dIPWAHf=6{&JX_r%b^2xT0W8{7dvi%68NzvDJLjv*xHV)bwSZ<|zfQc-LwF z(@xASv7hLY$L*I+&DY^Q-YJ9iVZC_zfQM%<1#d0M^VK#{SCQ3W0?Nv?8rY+_;AFtu z3lHnB_(v^B1_S0Y*c7P9TSk*bq3=6WsIH>}L^I}QTKB7S_ZxTki->i;5wIpx0vhIX z116BJ}yAUk0M@Wr@pNDM%9=}3=D4oCN<%t#N)Sa&HLv>@b~5AcS*eg2O1 zj`OfLKewD5`;5gs$lRXV9dWZ|tCH(+N*!t2vb@R7x+VOWu;IGsI`^F)IZm7XrYjU9 ze14*|^2Skm-hE&mlN#JAvNl3PBA%cKLo&H_Y^y~Fgv0@;HAjI+y!y6lfrdFIuQp73 z`3t;jDk9Nouk0K2VOD&{qky)!boV{+iYnHV3lcqUroij#8u^g_fGX|N?-=-iV)}TT z?Z2O>;~>B=pu3Fkx|>c-C7051v44L(*?myD`b1Ns_{d<1zGZk=866PswrF4i@6vtU zr9sb5)s4fPV_kSVaMgwB zMuxe#mwM6cF3H{E1X_cx~i*F6@2Xd|e<*vuioTljnD+ zJ||8~(l$=5Yra@Bo|VIztAaH!cXVa3Po55L%>|U)D*QeXtZ@m6Xg_QE_yzg7KYT7n zs+_*zNAQ(Q86t|gpcP!e<6@!cJ`XQ%s;0e$dM;TY8T^8fL-)*Un95~&+B`CPYBiS` zQ5fhyRz=~Jz!^>d6H0RDu*~;j#Sh=e))jjW!Ts$^+#S(?m5VB|A;RIoDb86exmx;~ z>1`W4*~bKwpAq-flT4BwKJ@K)_Pc9Vh!ucXe{zhy;`XF*h7@R_kTR|y$&UNl-~{~P z?5)=R@Av$;MTI8TwTA|j7OLLDJEUv$X;ZI{b4JJ?xPd8x!718DdmzCZkUoU5`6ARl z<;S(_Cr@ss;oI6-hH7CId%`b4XoESXG4?JOd&g=bI|`Q*4T9oGASzq1&!$XJRMrXz zzXnS{2RN=W>AxR_L4N*GOcIP5f4Z7Vol=ZvP{gv7T_zj={lU7p zp=4DZBs4r0`UDYMP8a+$m}tsVsomEQDVmEuFv>kq`vL4Z`|c4+kM(OJU1xS4|C+Ur z(-SkipAzTeTM^d;I7iMvFn%dKW4CV4^<49V$XT5d1h`~!0H0<3PAYBEp9)@MC^iWQ z3_&C8$K$tnKLaoN*0j1Ibo5$7vF#elTOaEeS59VaG2q=T3(9T)2f-QvU|l7nOUfvc z!9;indctU`6pt!+!~kSe_aNDvxo<*7Woi(_!fA8uw#mAa6mB~y=`D?%U>i`o80al4K<@wz)&*=^e!H^vm95?M^}M-LMv*>>QRPZ z!dXoGB#gQ+3&nK!tf%YvdI&^8xS0h=CpVZ-%W?jpO@gn34%h@=`%*){CoZvboe#CH z;%d^Y*?VjstfNV_Ew>=2k5=)FXRO3YF<;HVieFO1OZuDuS+zq1& zpqFwb;ZY>ezh+C?>@jTLfXDJ<(jMUSQ07X@!N;yk2=$^s1SZ2xsYudjH9RrPjuE--_2XgrAiyX zAj@L=C3o%jsVSr)f_*dDZ7!UD6-}m?x!Y z>?VRC64V4*a7le@3h4YOt~a%r~OH(T!2;Z)aF z<95;I>l<^Q5c#g&%DFQ!r0SFUylGotFd~TB-3gq=ge=R+2(+nAp%i|$D|IEWD3f@j z$$6bH=PfJ9S30h)b^7T)QHo9G{~P5k%NrsgBm~GE)04c_ZN2!+j5~CKbDegA!^qRD z543lxa>o2w48pbNoiQ1PSd=f0_1Re@dz;(TskawQ&yCux#P|;7wH3@&dR7Oe2O8AP zXlGT9Q0lVAlaG#n6!1j*{)t8*%g+254ON`7L8tVwm_1H{qcrW+ss0q877)9MISYzb09<{0DLyVvZex7ga zEl;Q>J{pk&U^i@|EM%;#buOWg(*PKJwr61m6pzum$Pr7CblasGr_5u+uHfpr0^%Wq zSy_S#OLcSIa(57(M5YNZaepkN1N@Gy| zR)3K8<8O%-nwYdzl7Pt_yuD>LH%;g+w0`EuSKOaw_v zEhR<{Ot#?H(-_KNsmgy3jroC(ok^BV(&c^vOG?s$ey!(lkZS2J+CM?(htnzoBtz8S zwL387`+R-JHx3YRw*TEFkGFKV5uTP&+&rVp#Zxx(c$!6zPp=>MSro$-U4 zEC5LAd3?bgF3Zz}c>*h=v2#u&hT;EK^|iuT7+Aj-cD*aF5!cHG3nWNc$#wPlhMOc4BT>}!nL$yXB@_Qd1Smgm)^M86zDLMD)c<( zr>&DSi8L+Flv%9l=x}?+t?9q$h5WS^4=er0cw~e*lbMZEYYi)A;swt5A^LF`47u21 zP@bZ)swEH>=UUSZc-TaHCU&namodA>+@rJd>6}jF9{I*Xh?eUuZ4nU3QG{twh3XA5 z=qQ!8Rs|6jiAnl@m$f&>QmkTzw=}VEwxpAJX>4hAPQE~T+VVqtER&z$ z70Gn+-R)f|6BT)baoWpdkum>}{dIB5R+e$I`DsOCQXWk?@w+J zt_#1MX-K{#PvATrGz`*_$vZ0iW;q!0)Ns0kU=P7bU=6jtuvj|bluDB<6f%dh*VuWO2ucMICtpZQN^WDnuupfr6UsK+D z?`qYUegT8BGp0D*{5B8}h-Ch_VOmz=gWXZ%u_hf5f=|cC1 z#xW2P2QWY=HJD8!DSv1qvN|?7H|cVFW_fMP(RifMJJmpI!`y^K6+ChM(KNIAti)Q; zW%@gU(`6@G{M~MSA>-OFJsGbU9uc91WEGzxsw)KgK-4aSFKOiFiA$+EwV@u2gFlxu z>v-$$^sza=FY$+9=#=Tg#;#JSMgN%sI!ONkz_h%iwz=G~t<`@i9BTqkN%%K#Tnh&b z2}59F-qPNr{%Kuf;!6k;7M=+% z^J$DREi=t!ToOZce{xwmLb{S6UQzLw=5m* ziYJd2;te+5uQHnBmTyV=)2N|2uESqvRf-i1jW#}C6lD+sy-ilb455kf^_&9_CHH^^XHESrf+bw@hOzo| z9JQkUrg_L#>5QXG^bdhK-`hX3gCA=8phNRNtZQ~5e(t!89Fl!EV({$+3Ah}u3he69 zxTQwk0bKo zL&I4Sh;{f|1&+(ZV;L-~nJO~KroOWM^h*v%8mzu(cL5R7XZL#}qeS>pkaq1(1~mzL zw4}9n>nlA*{L>V&3Sz^E7)Xsq1M)eSgu-Hn|LXcCr@B@W#Ec%U4_of{_1vOxFy*^K zg3T{^{-tPlKst-b_F~nzn!^lYRG|D8>O!%=5eJ2@zaNM%bs#@TaN)s)RX)J`6eGot zEjseD`}wG1;J)6!k0I12{xHXqImvclX!S1N5ZhlkV6%?lUtOiLP6Ju9$O+dO6H!8oibEu(&2!a--% z_kqfr(0joMwLeO@3#HYnj&G@nt92oOLOw7sd!PJ`UoK8Weytf_@#lGRfu4}EH?2P<4l{?Z&Pr?ZK ztT`TKF71$(M(yuc%JYs2#{0L>;fN*5cM^sj2}I`jBwns2&0Wo1qR1fCe=M0yxt`Gi z5wgl|Aqv++KV`6Y)LZw3$P5@X{3 zRt^CCG=yLO3yT(0c1)06qoM>WYg;_o$Ha}r-r~p*nmmwT;SngI73PJl%yxYlEA{eh zUFvg(e9`Rn?EAHpj&lTJIDR(R64%f~dvx`*e*dCBiXz^QvQehth;-cC>`ioo^pg?! zYArL#R9wEQ8R_Dky&UVSPsT#Yji4C1Yh=SWMABOXNMgh5eXChWz zo`x`{kNaDvXKC#GC|7=LNz!J#*zoLnHf5C9!OvEMf792f`#BIw0&1RyW5mB6!8m}# zS~+XB?7x0zb^XyhlCn_ZRS*lDhy`d~{;2*wq3d?4a;H$KEyX?C&bur~&31D11<&x) zzgJ`PC-6TyNMs&b;piJY9+A1};O-sEn^i^WM>bl?6>-j0;3D)t}lzsqrP3{U{Gs-d=bVyGrkrF z<8zbpjW0=vJdqpJg4F)1zMwMv7N6L6l~$z|oTxn=hnH)Xdc2=*aaP+4W{fc_ZIWD; z;r$@eQO**CQogR^nf`-iX;I$$ajm~FST5dwL7)|7&T%T}`0Xx(vi8={S_#q))?BcO z4BLkT0O|eOpQERsS z(zfe%h-M=G411>}5q8yTV*T$_FF3|`E`n`#G zepo03f;njZFb*y@&kjpw)Ul=qK^+h<(8Pt+V{wlc{&)Od8y+As_Kj|d^i}lar_ayk zWca#3YiV>SRDjPbD#lT#e8!Jo5cxgS;m8#40i?aoe7K8cn0wLmIS5`q@NpF?j{H`d zeyuVjHm72DLC^-&UtaL}5ZY~;$tiCOS9(q7gZbG?r?Z9H76qw%uQUHPGL@r8K7@B= zU(q$6n-p-f1?C|m{k_E1XOLLN3tUG3)25c3_Hn^pX^StpggL@IQ~-=aD)7SNCw&O6 zOJoO2XJ7cyqIq(Pz$OoC zA6dp!>iG`U_JS7>mr9Wo6Obd>1|wjqN5FE zK9|~Fw`RYhtV*~Wzls>Rr!6!wwsD0bI*`{&a1r^#t&U= z=5sI>h6f^m0}8lGJYKWWEo3U2mnsa6QqccMm!Ra#oyZ4lKiqnWUYo4f`nB?oYoDuT zJY~A5TYcQ#`26Lxvd#TGW%1l~UcL6F>`)liup7SNLb;IyoP1iTObEHe6ugM-3KuDVC;U zUk4CSx0wr^rrnIwwQ!S2;5yvh>TpNSi2dIYj20iV@P<;3&U#i72qM>)(WkY~j@Q@B zbU*uj^`eu9go!7Sh30qkvFj=8Y}jz|%^KT50*S4p`1n+B483A~+CIc)Z`UOrG_`Sk zNY`qy7>(x9%O>!BeAhG4S}LlsXQ1KiPt?o(g@!_tUt0hN%+3@y?lV0KHh{ML)KwWC z1aaq&B?C%ZtXezpsAz0}Ig?w;;`at)#A(;io`+b9cr+b3&2}16>jMG_aWtVsYd(B9 z;TH%{YHhe9r&i(9c%L&R$*ft%LW#4%3RP-;vDqm9b^a*0)Ld6-vA0vPO-E0uEQX<3 z~pHLrd5 zL%K)BH0?4yUNkLg?N5b;Xe7s>nLcSl9|;Jb^g%2e!(%H63Khm4;KyEBj9@4LEveao zQNmQkZbxSa>rP868SVHq9yjIDw5I~2+Pb#*I!KGpZcNBTibN=?TQd z4k7CKx#UI`r1j3AxOq(lN=a0*;2q2kLcBv1LJ5hgPvw(g;H1{fLM0hyq|s>|Ar7Xv z^LTrok#pMZNfD2zOk-IQ^-LxkHPM4H;0Qy=vDZlP=QMi$8e2zz#*6U$B7viK-|1kI zG8$u!Fv5|9mw<18g{jg$9HnEYQkVzhT!N=SHW%^6J)0=Z*sXV4`^eN&um+>q=)8LX zUNw;TPt%jXG}0P_->sx?Kx2M5VsCA7=c$|VJDv;au|qmp&Ig~UPd94~W)}h?XVd#o z^<-=e%NB5V8lr6BzxZwA6J@Y&K`b_R>M~Q{%$d|hz_Z~dD_`hV{P+$$zVU~gplc5v zYiLX>9>TvCilcZ%(q7=f$E*rM$%45|xaK^)@%34im0yG|o;x#MYo0l*0?j=w8Eb(H zA7)6`93}BbyffsU1_29_6|OT?_pK7!6N0<&(0pI&44$-+5+Y6S7>)tSqDm5dBo4TG z%SyuK>MM0VN5pK-=j#Bar&kUEI)ixof%}yO%cQzcvo2-I3dtQ=no?B*Q&E#p0INdaA zx8H5%m7iZ7&r~!7#GQ%O`|+Cqbu-?6pou(ZozoSp?Ex-6?j~FxWa*p+$Qc3t6R~+9 z+l*Pjv45IKl{WzfT@hEj-?aax!+4_(`l) z(J*j(lc2_PwHj*jsY3seyPj!UV`b?_UmHUq7UL=IUF6~}oY^_k2(6Q;^Y}f}(JHb) z>Wu`;5Z4q+Emk7tZj(eiIN60cjat&{Ut8mj;hd)Sg~D9HXt4yPHb>w;1>lL z?PnWDM2i+kq-+=z^8Pue{Z#E+lN;)%g=B>>U^EFe^NZ?MO`)FzWbHMCK$;6@H7qK})#c|0 z_a0)DJne27!{g-3PMk+wdahDAhj;G*1X4?+W2xT(d3!-3RD8C5CFMG*fQRb$0742s zl*XmZ2U|(4JOKgpL}R!w8E?I8eG1id00#+3P9=_j_#0CbUuR0QTCHy5OrgiRAaK>X=O?$T_1v`#yl({=B5pZHzjr%$A9=+L+b-_zD z3mD&Yq*FZixeUsV1S10w^kh>a_ORr71OySV8|OR5?8KeQu!>u=wr+uh{KSY7^icM% zJ1*gj;5Xg_R-Bwn8f9vM4lgl+sXbJP3*`N1>0>G&o!@Qq%xTNKaZ05=jbZ0v^j+Dp zXQysp1G-ZE>Z?^ZzaXDYtGmIWm7^4HGT<}6UX0!&?$1W9NGn|R?3HM3jq0?G>flB> zPPAp6`hsPr)5$8(4!gYQBu$C@alv0fruf9b5%1}66=INz{h{6II)_6NSAeJ1F2zhr z_KUzxfH^=Zysf@j$Jqvdc<}}^ZIB*+9ImI|dcg=a2)NR2#Ld&HbB)KT5C6^BrcxZY z6OuMF4V-LNTutrfxDvW}(?%O6v(J%77DcRhkNMUzWt@-Wi6Eo}#Y@@-@#{ z79Ok+4^oL#fK)d%Et*~0-wf*p!?5$T?pW=DIg>Yg4ZU! zoPw@H3c+pUGrfV$?yTaeiB$6E5{|2}~iuXYCoH9^RVC<}*= zLOWmuom9y0#lZ&M>WB`p&*%DS1m6@V2v#>ZqvWf0%K?zW*PWa0-P zX+Lj*2Vl8bBZL*f%trtX(I6(l*ti>UiQd&Yl}^8Gxq*F%2uE-N2Ki79VCUlmZ!ToA zq+(D-ogq6{_*ShaITw{Q3N)_SC<*qJc6#uAZLz-jB78uUIL59#%1;vj+@{}tDLHQO zr?#1!M``TN)|@t)eypWfSZUSy*#vW)zPi{}O`g!EM~ryCy(YSGEoMgc?fvPc=GLq5 z2uX~uOT~qUKLtx+eFIx!TjA~4CV`jBsg3Z;mTTWlXKSIDA*9`WkcD4k1HYgFl8r57 zEL<*j3Vb9ExZ?+vr+716fKU zM1z-@`rof435;5Q3`tvp`kl>$;JgBH#$1mYx+$k!l-p*zkBEr|&Q6KrDZ=NL%SOeI zJz8v&LgD)*+u@%!)4bj)4+K*VHSp1Se+}T*T8tSwzIrQ{lAdt16?6a6;ok6== zkEo4%DHxSBnjwkX&hHRu;&);wMsdh|aC_9Gus6zLQ>3E>V-A)Q%r4(p zaT@}y1v-E7?0QYI`$`JQ9vwl)ajCoOf~)X)XOYeB6IOEN19VYFff$yEaEvi=^xWaV zQ(7qa^ZB%Aj(f+&&A4>Ak$9pXG{1#dxn>%8 zM}c$?{+9OkaZ5)A(+z^7wWf0p>NO0-ZE8I;%E4Dqo5M??dC_r5Nhjud`I}J1(!fK7z`GK1=gQJ3uvr$SIs!*f74^pSE;zp4XJR`5^cTcGiMDfLMO5NF;O^j}gamBk;?-p&?l zQ_Z2RVCePY&42xMi2b-9)wXIB#)u5M`2+CZko8m!;}9dYoKD}`<3Jtts7Nl}Ae0Bb zR(sx;ov079hwiWYQ0fhil~pAt|Co3Fu|71r0M7>`$Jx_7p2aqU0vDT^hDl2-2Y?gQ zBLh+7mWmEAhQO0vj3Yoq{%>d10}g-#JBJ~BU@Rnv+rsVCkXaS^f3Emfj{4URm!RJd zCd+DF29_a~)`TTrrn+FvHR?>;V>14#I-M!)H)7>qji~?rw*vw=zBCd~yD`M(_E1Fe ziH_>8g#2n}sN~;bhyOHcvi(u+chmEjQx&GnOUu>t?Z9usde# zys3>IMB1-lqmMU>ktDa9!X3;5*(V}*9pW4C2r~6mv}Ftyze}lhy%7`7?peT|bsC>U zo6-I9fj8fpN;oJ`PDp{|l*3MN7H6pvxwpTzaf^k8WwNOYK0ZT5SA6!w2GdUP&xzRa z;rA=NGM4{S!v22)J4RvG!WA!;WBCdmx>+ZgnOu!iXCzXUz6h%p>vmaB@@b$w)QjsJ z@W4bFph`cB=ryx2QWlN>VZ9~dw=E0j^u&%3upMu6@`kuFrQs-Co}j zF6U#?{AmT>;SnV|*I24%I9|H+YYvfv-m-QopFP~i-rkaWR6U~W-YChsXxaA-T5Q4R z41~gurgo;U7zz}`pK51SfuZ&I?1IN_Yimd8=zqWQXpjWungKb@zvq1;DXNQ}3hpL^ zhP%qR3vAY8gDR>JFfiK=TwrGa({QI$fjq41AQm~8tHenysc6-XMHt~^8x#7HsZT8= zC)JO*ggZl`O~4nO0T`KzD~VGTfgg#(-64pi#o&}r92Bu1`ScO*Yi@R9K$oB&B`;@~ zU(>o-UXUDZX$VN)z^shwH$?b%x6_h8dpSl(iKQ;l2)Or`+3nx+kN=5ef~`3fx>rfw zwVdyCC{kaA;OQv!mTgtNWeE-}e=~1^ z{N)#Q#~EK3u-MI+5vq)E(VF76YvP+!&c01k+ij_^oNqkAl;<_&iEg)e6RFr82Lk}O zi@PE>vZy{JoG;QY+?-yl!E+WX#)rQ`&sRiI#UDqg(U+(>&YbQ&M;)FjgueTw1t-e9xxr zvy5`nIEj5bGpSt8Kh%4eksIw_4v$~2cL&*rFX(87^6!6eKCTA&);`n@V!)EGH(4eT zD<_uYiDEbwdK*M~=18|EQ$0?UISH<_l_!Vjr=}_k%4j=ko`R6#2;(Fky1;}pSL<3{ z;Z3~ogJN@Jv;k&IV9*?aRKB;xd1?434T`c<*Po!IXDY+M{u6uNXk3R+RA>&pG!;aGEK@%U$Xz_D zP)k-(aIjVXumsjXm8Uj%Yr&{IepX;oQl!bi@#ZEBk8x{XnydIP@$(HlUn?Obj;zA; ze+>Qp2tE@4bQLHneE@?8u^(o-hY4f~50vfwccn)3ykD~W3r!~1o&jCWx&Rc*ae8kM_jSREHI*3r z10_Rl;(OIlhy-cOmhjFJgn;?bE&3&EWlBWDUBxf_Bp8a2azx&`(;bT!&QrIk9Rdk{lE=h~qzoKBE4H7{-5{<<3!DR@(B^b|D+tvu-Fz^pZ#!h9l zqtGk&pK?=BY&=}@YO=4aO8tB9s6_>}t(O4V%>Rk&)F|(&!0ez%CrX6G0y-vJNz4xh z9&ChTA{b0QaH*Qg8(?xB7J7){yU*2-|6x&E`WV&6Q_Ok~McP#kvf#vsfjSAKoV@C#cg@bT6uUt|1~ED;#@~);t>D+-dnO*m{61m5+a*@-;~4Ob1Z?F>jysaSz=ds}=r?x!1nMY5-n7{! z!Wnz&l~Ud_Q?dSffG;qjLR)N%5IAz_uJA+}%(;&L33U-#qCV4K>lIJg`20Pj_`(|Maa{MSX)Y})VRW! z5mp=n-?=Ch7KK7PJB*T%+L_aiWtxKk@+iFZjJBd%O1asR zqvr$P!No)}S!UmKeq&})P*u}PssTmF6d*6Y+}Q;XEM$(cRk@`mj!~e$p!_%s)||S$ z{G6-*xVWxk*Wx9rc)iU(Nl&PwQ!?1jPpBRM@m)gxl)ehfB+8S1Y6^qn<4I0<++Y74(?L>stUlyY z|K4#9s37?tHMtJB3(~}Z6v4U%3bZ9O@pM41Y*Ig|op%#5Bb+%?gQehUgp-|!8G=Y= zY-~K-j6t1(i!5a=su3KzEP(9N$7SbA+yThtOzya^eeCDuCitZeAnuo-gy^0;eVoLb ztuW?`iwGu$3e41SnYQ{kshUhJv=iZU;?t#Zora2C>{$6K|I2w>ipTSdDvx0^j3ZBD zqZXHC?vQ-_{`b1&l#0BD{xMaU{I=Z^9A;Jnpca#nUyKkg>0iQBNWX0$kbvS?e{WI0 zH!%lRaG)puD?b=WeK@4wAHlFy6^xlXN3+;Bq68#tA`+3?H3S5eGDV==DnMC|i52^I z{cXsLrZX#E>0jz~Zzt<~>7RA5!HtelQCv8O$wW}cHr?2nC;~8Bd3~)2J)`y*s$l9c zc^g>=fF^Vkbv3WqKbzcNS;k7f+y7JS+?NV`3{NOgvlk+nMaR@=?%=J?5Rd~wsyHWZ z_t#Hy0~WBmR=BIi>(7;UWOcLm#i?cbVw?XMhNcy0R1QsAwrZ9CgHdQQ0??J9z9+K| zi)JX)!ZK>}^i;W@W!Q+6UpA^GKwN#H4n6bs&i}}SqmQ&`OjiR1^Em_=P3HSNf!X=C zV7bBZb#%GBP*PE88E@ejkzzT-+FM&}{Z+0OsE}O0OEP|_6|C_+ntueSjQVI@S|Flax-ndkehDAs zrAIEIUL8ne>O?$Sa?cHv(+wY?+@BSId0WW%P_V@@y4A@4wlX;{Sg5Cpq8O(j5q~u_ zZ3Yxk^b)3@WlODq0oU>#93lmkbCz&G0MmqAk$0tV~%BNxFh zORDwg_aoLIs5w?lRIkrvxGMCO(jFxTyx0F;ZYu8n$EehQ`zb)dFaF2BLX_y;l}Rdx z3!{8zHyjnXQip-51#3o>l2J%x9)wJLyP zHJ+FnJAr}j7(@_vrDN6J zrw2mz$+doNrn`(A7&(lIL?7_zsVi@Oh2gn5EKv%t95Uaw3Yyb=UZaHI*gNC=uxNSg zpzYf-%TvL257SUGV&G+rMccjs#C_hdEXkVk6fL&drmfTQ+CmUEzRnAv?vqn>gM<1U zP@Fx(u9ndK%bzbJiPiYx9d7Cx$ic`1Zs)|p%a~=#oFRO!Pi_I^&uwq>-p2@y}m_7cPza@zQc;| zO~$}sw+6J=GKMJ6hdFNC>q^4i{8MTL5*cJ9`?m)v;mKk?4J<(kJuqoJsu|I{XUq!L zJn6`iV(r2BiSdBXS$4F~pk|9=rehFpsZ@`)%9vOm=I_JfhP;sOL%Le+*JC7QBf;ci zukXJLBePYM!9q+lsVo_DCj$C&nJ&-+E35uD>JuuZonB z{}}wxit4)Pb3E8$GC3otHSt&fhLHdDr1UztMpBb~v*Cs(AQjM)SM(tQ|g34E&EtBLM+6d8ds#FQ@$Pl;U4+ z>G!}@KsUXEVKMdPUswC*u=*zv19TmtVA{xIiqikV5C8iWFo6zgNYcF+l^w7ad-DpFHv1UaStofPG9%-PiT#}W$xn?k}SLcMsBFZ1Y{~kdkhIu0$=D$Y3S?PNQngm!ibond!7mvY!#^zPWhxzuvFbnolqlhK#Qq*(xVko)rT;p@h~WEz7L>E~F+>4u^_Ja2 zZ?ZS5p5jAUk~wA*TKel-;t}Kgw#Ty>11)>qDk@mTr2`@JF;(&`hV&Dsd;KYxzc;}t z@saLo6}=PdOynVUL~4R*wZ=!2+D{FuoSBt0T)BzD(0EkT%^kY?e@S>%1%KHmOYRy!5n`oGM}4SD{X(IyCF}YbyW;pC z6Wn^S>^&-LA33T2r@s7s?)1h0vl}|KKA=PnSbR|jD4KWGkWr-m@%z>2f+pG~euDxbSNlf(k4Sj)h<>+Ltj5p@piW>rl_TYVtWWRAFGYQ zs(yv3F8_2s(#mJ38$hff_qLs5*FAR;`3R1DEid_8{5_ipQ7*I~{=`h7f4FW=K{fB` z5(%LeDAIr}^`L_)8b$EMm!vz8Kk{vlt!W@m3M|xxgFEM>>-nUH|EGg>efERspv>AR zN~W(~*$3Y+lB}hEmKGYyfKGX_O%)H9tmi^by1~Fr`Ueq^Xz*un!Yu~8_Z4YLHtCR_ zJ72Agv8wKccnI$5bpm;Ti1x?Xe~Ac2%mq0muX7p<=W@;y zimz9?ZMR5BuX{Xvo|h8Xu0|g)FZKhhsRAEQ8>l@x^C+>GUi`!FxGQoow~2%;=k|LiaRwR_-b zyxMpH?;RmLptdB;PoLI4a+nQH zE2qI8k~ZyIm7ESl7B#ne+n?k(GO%7>UtXQ7v^v{F?r|I2%KK&trGz7#9-W{~N9$p= z;_k)6V60ufB;%*qdo(I^XP7U{x@y9n=VqKHoD_36DMX-xEl&DniAv=BcBh$wpXgf# zl=#Z^M=yT)s|!Z> zkC}#=Bc;c*TtJsbdgzsr4_#3eSo1OC z(^VgZkGuy5aLK8Mv&FDPTBE<>gIPzN!oR0cik^pN6RIe$&r3U1%*s z7mU*NUQ4o}^nV(hCKjsK!mW7+m?24F?}ba4I4_-y;ck zCmHr5_m7U6kIEDMU;p%OtCdo(F7ap)UQ?R8r1AV|Ck-YTHxxCqcO?SEvNzw8v=Kl_ zT3@^9g0g+VEaLo2OB${>^mN{H-^Y8{(9Bjb{nqF8kGB{TxQj50Uw#E2V4tfxvrHh| z+M?V;p5}n{94$2puG&E}lM-c$>2cO3J!? zy1Y(OF;cAz&aTUUYmE?~^~Su+MJ4+0jtw4a9ox?$(i|!PDXEb`?(R4Cjg2VOVXX=| zl1pP1c_PKj(u;rOwE{Xx+dPh2$kl)#vd|-Qg*-wWJljY^@$jiG=JJ4z<;GaiuNBY$ z(BW~TZ}w(v!S~~QIM1aa!MISFWA=kTO-6^W>}eRF9|1nK@#expM;Fx+cinBag1C;tx#oNR$)K%+5GbbqJcRHz+FQZ71J;y+4K z$uh*XqxC*9Sw+V+7c)t_zdN$ASsnD}Na~u&oDzCCu5l}%jWn_|g%|YFJDCdq%EL;G8_{#5D=KZr^ZsO8RlBfZ< zYv;Es5xx3~=(r-BE}#0?=&H9jO&iZj9f{dJ)9Tiog6}pLyOubA-GF23HNOPO@9%Tn z2#%PksS-mP!4PvKRQnocf5us~Sy*Niu)))NfhM7^Iae6wltv2rs(B?HLhAn*OK}Qz zwRPH{a>p6{yXOV(y9hz}oymXl(@vhIgMYQg8{5oYVvgiVQ5A8hgZ6X~h-1V!0+KV6GQI1#u+!Y6=k_*i94{a#%3;n;2MpFDpRP?RBcB}9&f(SN&uz_L@h3^D zxsU_Xrv>?c(=XlwCmL>3T1@MVJHSlT0=!Y{Z$$!&@F!a-fPeN|IHx|&EVrx z=lQvja0^3RE*tHn%}0gfwJ{~&33nHoG5dralfE)FioB2}E7JLmDc?Q$Yr(=cgt0f{ zE>Ea}XBMxIS;6LydeFM@;)>tR{go=YkHSwQPjyC=s0^Qmqd`5V_84_c#rP`YCx?l!tViAsS?kc?=TwL~kZ)J6dT*15KX z@{yxfGPs2<1I+6m?+d5*rqf!EJJyz4d*W57%dHN00L-I=)Vm*j&fC<9lG5SM!N-*;(W4+2Isa9AIDyC)+(f|3-4nU$<|% z@6()hL~Aj7mu7Floti#^lC*-L1ol0l8|S%91>m?EBL9x;@`TZ(AR z`+s;aQX>W|71$3F!}{OmKPcecV^*Tk&dWrSNIcr_6DgVwCSy)7ZXZ=W&oUeks2-7Q z@#y}q7r@%|rr|{R$BBGZu_{FBy=S=VKu;F+`KfW@N{8Fs4L4^A{}r@JNS%djnbiKu zB!veYmVVsltNj$$272T7i8~suY8HM%!x)hnD$8@$`38N5>=n|&sVz8rcT}NCP@Erblysm`%f)}P=G>!qT)XvT(w`aVKZkDIh6RlsCpc{AW#p2I>lH&N| z2SiEslE`BXzd+xA+F>pzI(==nWl&run2YJeLT+dVzt^rU&8A2GjRp{AinRa;4VA0x6{2q(=>PHHH#i4C*fHsz7^h1qzjtf81&r$1Pk_o zto+_Zuw3#TQl}!k2T+T; z^M3zC;w4dbMk7;6Vy#Zr1bqq6p=RdOBBToeZ*4Y$XBRmS9<{ zJb7(q3t|<)`z$0SC@*wwil`fb8>lTP$gFJ1x^aJlK{jkTT=~CRqK?pi-DyDZ9w88; zHb8rm<>M)g0^Zi=c9MG)?U6oB0+PB#qypOYQ_@JT6oI&`!d^Wq?sY%#7L zDWEy55mZ>BPx>QLpp-j1CAXjsXzxW*4M?JmE0NiljB118&J8H2v^#vkTvhn#Cllz6 zfyt~XQ|cPDtq0*3$SKZ~!dfdH>w2rh*V4q-4>X|&T?4+0c^x$Bj;v29R$t%wn(<{= zt1rS?Vx~-IQBUqG(v|tAYbsRXAfCj@U`M6r2bV@F3UJ};Par@MMs!_q)mh9h5K=2> zvb<4V!maM_lQ+x{77CjEAGNht-&ZmA`HRwjwNd905PFri(4TnHn0}{h&FaCrqVb>O z=%g+XNV*hRwaq`Sx08(oO{j)!`4DMyjD4WRv)nr?$=12uIpwXy@~3q#@ayX>Dnq&N zp%~0)W9Cjf;Z^%YhoiN%!0hIvaEGmVyI11rWZyQ+F(<6x^s7Zc6kSB2==JLz(>!a| zrGv@Y>lim)QCnibF4cz5P{q-_9wo`wf69&p-1A)_GnCN%Yi0@dZR-W%WNK8_wzja? zHft`MojMg|%pH9NIOyh_It~iHc#5F5%r;TDihb70=Na6cIwQy`ZOzmzSb|YBrQSi{ zZ*crhp)0BTPgk{q^>>PlC3p1Cru+ZNj@fM_e;z1s2`F1X^Z%%OJo1p8I38*__v-@l z0v12hsAOAGVnLd}tNm&LhPZ)cv_?sdf}B^_S$lKVmH{`PKyptX0f)o{Q> zN?tPePqYCwC4ElP!q?-wWJ$*wm%Rr?OblEh5+NZKHAP8^$vwsW8d~a>CGLRGRYLs% zEV$bvSu)uC*{8Gg!loI%A2+7RNwm7aLq>oR=O0?AY|@FKU-c7&Y>dC<#t0q!76@eX zpTszE>#M*SE~g4PI|khn0=~*(9bqB<8Z>_^@LwW$5*!q`g8{Q9$-(y*WePH;PJ8bg zZ(UTm%Hk+Hb4BShHR?7^VB^WFQ7;>nPq&d5u97h#_YAEuUKI8DDYrW+QRf<8G$?)U z_fIgXOv;Hda3{Vfla6O{27^!fY3B={FDSt`u>-BOn|OW-a-*IHD9#C!p6?sOH-qY% zmb#LE^~Y>w-~;&XLv70jwNHBHV!oVJDIhUSQ0zi$9{sd@aHlNQWJ=%JxnC`1ct(kV z`s8bJOqDtcsh1Qn_80v+xO0%W_F3N&PT+0}SB^8^7oE9IXV(4yeRa%1TdTOUGG;vo zVKrnt#+10dC;)#bXxcs?e0pAy^Wn)DG`)6V-{5qVoxX`EGT69SK~%K?3q8a z^FV*|>9teYpE_^*B7L8CJFlBY?efI)fU1-6{gYLyr~)Fne+*o^;X!{5XgPk%AT)(afDXO#K* z9>d3*saY?$8-Nt{HYb@07ZV46-cI@&4NcWY z3?*)B1|0L^@(Em#8UBJHR3SFzX!qqlgYwk(WUJ0jYc24|7g=_=4zroBe>t$xnz{`8 zbTYLap^V#({T%jLIe#q(sPj7r*%M;r?>hem5j_$eB1C4?{>oZnBp{3n16DwG;0+~>RII@V(K&tQAnZ)M#=UuAaqUwqOmzxe`Q ztGKU?&>&&|@-$3Erbjs63wPQ!nJTP)j5TK7c% zE9NWQ*B1%-#Pix~dAm{h{4?pAI)ZmW#LGQ%4C|UnS=o?mG9bjNP+7Tl6v+PQkvCe7_4` ze=hzGt+vY2x0S+Z0}p4*?!y8JwYPNSTyHtaU*`DaXmHrCKB=N>fT}KsBkL1~LG?X> zyVL89ji!mtdnbGxN5U8uMZp>c89w_b0SM1|we~(5kv)RFYioOtLm3ASoOJXnXt54S zh-FWgGFM$dtLmq=tvKqbIhD8hYoS_S^xmh7_SZ+TC;EG&w#zUolXkb{-f$)|N;19( zFHv#yN)bg(TtWe8nLBMm|2qK_4))@NMq*Ck1U5ESOAlC~oZW*1>G|;YND*;us;qX) zfEojZ^RWzGJ#_7k4t|vhza06D(W0t*qWUe1(&eiF`MiiT2ODZuV}sy{=XE7Wqb~IB&<|S*s{s5$1Lf0vPCqV7@SSVCIa;j;zgwi@DfF;lMyB zkTfKb#m{*#nLw1*FIsB*_WMK1z^!k)UGlmeqd8EsTEp$KrzpPe(ZXpcYV!5yNknSe zkGso4_(I9cYDaJ-nXqg>iYpM7mD&m3M+gCefR!TgqpGZOGNboZ9Z5ZdKv>0)D}e%#P=(&l+5F(?lZ7 z?2p_;hGd(Q?YD3fD7O>MMY}x^RR|+VTfmPYBZ}@x3YKB5p)a4H`b1)wf7$;?b@m4Q zBp%zL2%Mi`&t!nt^$unV`8$>pkOq&XR7V`WZxvwE1<4N*;kf!Gn+EFu1?zGH*?iDl zJD&X))H<6ozGBw+G&q$;d5>D&-^2<+->4W5N`kntbPs%L$ zd{)82I1-Oi#oZMBcU}m2uMvV)y(l*F&mi#7?r+`Ryc|az3UoGv3s!FJ@yE?md(^m^ zhU#Jr(@ViGSWg1m@eXbU%8TO?f%eo$wuNv>^w|b1Q~}QDFTa2NDLp#9!W3i~jHo4* z%npM*x<0i1i8(z--G=u*`6sR|Nn3*GCIs6vn!Fb-e^wy5eWXnx-00_ex1Fj;@*1<2 zkqz=TOXP66K=nvrj4Eff-rwk{>H---An#$ezs}^&_I`DBYXy$SJn<2mVf*9r^bm+gqPG-V=%9YK3^ih3E?365t%sJ z!a=00%-$3C=N?;^AQT>!JZ0}%RVrh!(qn4p)wVgM(!MM{E8vkiYnV0E>2cw>jy^I9h?R&!UGVcI^JwG;r;e zoZL42z0v3lwDjlE$-EFt$m}aDkW5OS=LQ#Z==Ite+I6vxMxBMpT@eLF__DizL$g1w z2LXUL_y7ujyV|!BH7bDxN46Y7!nY4feFSm_Jbu<##U!^e=qTS80-6Fz!8~~wt>1@% zV#FS#1!}d)_8NvDJKW4cq10l0Q+PKh33soTw{PgjNQ1(BIbT2BZey$Tg+P96bYqFL?1E&t*aQPBc&R=|KQsp| zKXg`aP9o;P@#9#|157Z7DC+%U5veI_CWH*mbXOnWZgc*Z3I0TKencT~@ct`#sX3(T zT2|zm?%-xj@b~MVylu5lQ0Ll9AJxia51u98QJ|=<`N$WK{=ghs1(zk4_xdk*3$RI-pd-nTqFvwt;TefBAjThgw^w$sw^bx-BR6p zhA%Q-*R#OOx1S)pFABUV(re05&X|h8lT(!#2F|;IKhG#knK!LdaFy=^r<`6^%F-|R z;GHj`ckve9tETSd~{vN|%k0=DlXZ_Fh*INoph1#%HCNe`DKtV!0Jg!*W(-B1i&P_*J#SsHX)dm1bnpoEenv27TLXJTTjvFJJ$@EY zOwfz@M%U5;`*#^Ii_{6IbL2c|gn7=eMyMy^xGFr6$W~ak1$%`mLr+W7ADsop5OMOP zm(e_arQ-N2ok-kiawjKL#Iqm5J@EI8kb9fpgyxvN*#ll}m)%3<_IEWUgz~@3vzh44 zI$!0>c5X<1U8g83R8TS`*iurk@r^N=fwiI}Q~dEPfg#dGWa|(yIv$7c@?jX`bLg zB~rEGn1kkWJ!w$aOcmUQWky$Xs_|Eq=ZV*n+N=Wo0EYr^DCvU@t}?$13W)-@Vdw^c z*8nNp_RyZ_1SGc|;H)&13Zod$aHSH%sgyE9ca>S8mflL?EmKUNfCfwKUp$`FUNG=$ zFJc6Pe9F-JWx8W|1uQl_@80r$k_{z$$L$18>-%d={NTC4#!9bsi1NoO6u+u(&+~%w zvNF{^{Wf0pM;8Rl(S{MX5&SnuzEpz*Z{ELL#Tx!}!Fm~P^B?yE(BT801etvr6{r-n*kYSIp*w_GU^$ZY#za2#F(9ap@X7i6dw7;%+NBgtghW6@b z5ypw#Q?h(0hg%QYmTRereNe0K_7k zXUemb6r)roGrqByDQ21eS#v})LIyJa#Xw!#A0e+kSS3T3&xn9LZkoRT$S8x;_~!V- zD|yq9ys(-c$O$SVN{^K_j?>P(#r9GjZty=Ko*wfwADs)N0(e$+akoRki;Y`c{}`?yaRgw*PQP% z5v9|*)O+*3Z?8Y19`!LAszw`|b3WC%m~Eu+dvU(TcgDNk*1Z0nY9#g^1Sd4PPpmRW z3y0xcH9}ib{FONbIRvwn<3%(m^!x{riL!MHg#G;w?@sootWOBqm>S^NL4ld(^Wp5x zi{W@CVHA+D2S?cx;a!A<|e+ zUBqlS5}5)WPmOy81g2y8?)jsz;`Ihd|Qbt$#YeEmU z_V+zQXUP!J`njPRW`A88?ob|A+yM2xfDfwnOWFewoXv*wO<;k?ayyMBpsdjVoS$r0 zAaXm z0x5w8dT4b9K0l}E*+sm1wnlOCYtgBUnT$I6QfUuMr8kRHPSC04#qHP>|dDjPt3-eG}ibNr39q12FPGlWNQu|7k&m zx#aaQHIqBF%N*)st+&?z?OEbVzAwY*3_;v#w8JWUrCl#OAu`C@_8%o^ilYobifZ($73YL~Z(cE2R4X0)gd&~hNrS3Q zXDYXEA@@<4Xn7n-7lnZi&w+(@Csxm6iElS8n&Z$)Fr8%C%`>JJ@6tTS`3K1mvOkJ* z3d%pN#hE|xJki;~LHpgjkL6R%smMEZHU_ix2-f2SOm+I4(2Jf5_TQ7n&19|^6WAle zet3*QlYI~Pjq{+_4aj1buk6+}Yf=M>h$VpDt&Izch1ZzB8eDAF1iU=@PThwSEzZ)t zi8E1W5jKP%wuOsO{VxSsPw1EUj=HjuG)knWbxpADgF=Kjj#!cF*rSsRV-*4LnM9mwQTY$ zhX$*mRmPu!rzqfKm;&HxrPUz1=h4mje35>mFZZQ;xxbQ&Lioe8{Vu}u{zKMxs)SGw z4Nk$sR?s8dL)-V)5C>64(0djKJWno2aqdTlt@a(0*ha_}Vrvr92k@j%2*U~AOxm}L zGs$EMpM3_~yt4wfM*Ogs%Q&a%8r{*zHGki4eg0^b3kEEHO8=}3Va{W##_O?A;I{Bb zuww;Dk99sp%(riRi(mgrl$I$PH!H=pqs(V7JqK5s6|xxlr&NDzc0nOH$=e%NJ@fs| zDAdVMNa6IYM)f$rLqgt`zyQmJdsv44tD!?y&0hS&az5k7Ghfb0y48aycr>Ug0aV0Mf*>|K`y@L69WxLLJ} zc!ZMh5O;57%@#U|HCm~Z8$eNq0J-7U)3k(zx=5L}P7yPX z`X#3AJg`*xuk#uifPYU$7fqI{V2wH(&)*;FI7yx>7)>H?bue9-!Fs~~bVVCgheZ&% z`xjKDrUF@acBY@Vq&JRU*PDACl^pz<-4;EoJxK4k?C_~O=q5&XEbb0xR*zUgc|g*5NZjuAq;{2Fd2H;^J$M=giJOgXrT zE(^bfLodqMTxc1fjf0(o%~x$v8>3T$MJ>>EdlQn^n~}0KySx^hH29(?#KY=GQ#QQ?TQm%ck78?1 z^Eat8SCrB4wtC2b2ozM{K{}7{klkG>ZC zC&L*`cV{aPlL$hn4nRhJ^B0_eeDl4@NUO~GR{2!zook$oC4tiZWtC+}QwSBN+6g+* zMh%#9r~T%rMq%rFnB6yEWD@T*c*6&2s(RnlCACQ9bXtDUiakZx9&b4gakr<&^fRU-p?8^uP<#L=4em3TeeRorRKt1Y+ zbNp5+U+L{V^il|8puW$>#z*S(tV#Yt6=H$suc2Xafn9SR2wxJZOz53WLhqrZ5#4nL z6}4Bd#Bs^`Xgq`TVbPOutb;wmr^y-mNZ1PLWtGj;k$CDXlM1AKoO?LbUPminw zed*hHbqi>L%iYC|bcK$E9>Jk;exX<>P5lLJE=xF$;TRbn46!Qad_}RTF}}yIEQort zrD?n6XuqXl0t#kS2j(}wZ(AX{*QOka9^WHyJ0|)~xdAJt0;CRqOrCyogvVBrmmRdY z0uZ}bLOyBVJONsLZn#nhyW4YUd*SZUebGo5-NkWxU=D#O69a-!n8sjM$aOFMKf@Jg z0CxsKj|;F4hM`vBNbrZh2mMB}+xk^uMUicGwS$QRq5qLV?|^`kM@gf($73*e9$jBg z|AHW*j8X_%lmn z)lFoxob1T~0X(IP8++Je-EGqh%oEGh6AGxeSe0eu@N9R@aD;|YZniaF1IqAz^OJNn zRp2I=+qNW4F=R>uBE=b9mARi43Uqp0@spTBvlf9^QNwPiVB-ZBcfeL{F7$Ziq?Mw; zM>W6)37q!G%IziYOdL$fdq)M$X7AUNeV?%Jcwi45Lz(C$Ey$t<*p%zvxxZXOhp7NA zZl;fGu)C;Ax_Rr}{tj&F&3_C!E(j#tmipnuW8?7&Yg1oc-ypTdYvRN0KBMBVa48Oc z!Px&UqXMUS2B{v4aQX&a7cqQuy)3TETZmph)H+MxJs_8)G$#rV`pm17BZvsfZkDr0 zg#z?NH^Fi+tlc+47GrQO#8iO)n*3&QhbZfSHmveI-Gm#D0UJF^kwm^J(JryU8LfdZ zTpS4!W1H-5#|0@;Af*K~vd{(|mWm-HU8VUU5@fR>NR3aGrZgDUH=9AH8zRyb_MX|C z)5{q}Z*?{852RgZrngE7xllA0SqLMxtO`$Zsb(TwJo5@edis_(yZ=qKBgXF zCQQq_&MRojQe=K>;%iOd{~w*r4c-NT3xEmycIfx{I-zV9d_^y-!FxusN;-L|>ZFDYo`cc$N|)7i6;LAd)Fo8yfQkX0y{;+ttLK9djoxGOg5OD9E6D zCs;OZktu7OInoIgp2oBAK`Fvs&CNgJcve+==^Z|M6#95&8fTMu9AQ9@Ws3vp5zOun z7DI<-yiq=cX+`yGn4MjBU&RTDIb&p-9Jb6g_~S&%I@V5|D9P@IKAPjBArSr*#A9-D z07;C-jl4-2X*8g?RU_0-k>4~TaCgGb;0g;gP~C~S443cS;O;{eNm$*lI8*;F_WuYs z_FV0(2YV|*K}M5-LjHWXM~LHIi5`bb2^i7X%hiv+<+8Eu)LgWJj?a5@PQSyWR}0n5 z-}y*F$h#&QzPZ&|!yszv?*BXvh}_&BxoL*CdDc&dK@_UQcuF%`?3Ud-8h_28b_Q1C z;U+(^Xu>pQUdrq@OQUYXU=$v_f7{HbfkHkv$s4Ota6moIp%@bilcm!T?WY%jU(h8j zB|(vFT3JZbtz)Dz=B)tl@HJRwg2+GgT3deHyk|H)&3p34|73K#q(y`w3{vN3!~20v)){ zOsgNmHqh!|33G?D$^O889I|ZZD_UXmW z-_r?25cxnI0M<<@iT!YOthTMpCXYRR-Z~;&&a#E2qpiGebrO6!d^k*|``)vxhguam}4*E@Eb0i;#Yyw}ox=0YZybv98I)ad= z$|O-RukTZFCzMR0%Uiiuu{cr4!T;7%N;T7S(k#RkM9zU$hDhiE(M0t%J6g!>jh7yX}2#?kw??#kS+ES1d3**4zO%%1@jbyw78KVRG=~# zM$_Etmnt~L zMh<9!28gbF4pt{`I7Zy`T7BNfUykwZtWkA+!j2Pqu<(9&_^=J#576tX|IpQV23A7R z`5(me%Raae4^&Jz<&WOg{I*;kaire6i++$wC>YaiVr|bB&VVR@UpqFqR+pL6)wad% zFnjV267EBt#D^C$~d1 zd^A*c7R#AA_QtR}lk$~P?Og1=!?X(Vls|R0)Eb-GSbwtCdN*r12qho7*4Nbe`;j6+ zAf5?=L>#tT1F!yo8(|IFBBcp_Af8x}*SCxxI<_In#i{*5$yJBiUnCb7DQBE%tA2LU z*qDAZ|8TqL9L0F4Dp^Iho~Ja&#A@8^JrK)1bu2%Q(CU!E!+2{d?Jm) zTi+k7IsCp>-Ktxjp%)Ed^kP>&Nvq4Rv?y~pNpOE2&nPT?f=Tlg2reX_`Ad$O{)Zep zcQI8h+9c#qg20d*(Ef6-sjcy)X!EJBw1eP3V_%@dYw(I6%bUk2Dm8oa%@Q~=X7xrE zb)+Z)&u$nqNbr|H`|HP${8(FoGgkt9Tp=*fplCV^)$M#%|AW>0H_kj?hwXa0C8;#X ze%_KThrJbyHx%2~4x2)zWP>U0&(Qv(nPt&!*Fj|qFlsklq)W0W09Z_E5SLl4*Fofo ztmTBG@5x*5l80@GTxO$Er%tbRr}rCgfd!=HcUKahXSBpM6B5ttbSUBd=br~N>3{VB-4G-R>CTYdo))Je<*7utt9WZ{?TkQBZ+&ezG$)BXIn?& z@5rLz1ku1*u3ubpe9i6=C1_#a7wONO#uxEHdQaYC?U+ zk)DJ++RCx;!-LB|*eU-~wi;hSWjuwk7B|=%`AnQQL zYS(Do%q^yqFJOb0trFo7*LzDiE|o7x{v(1uJ5vW5C>#n6^Bd95WCeyPWO1L;Y^I7+ zdqomeF4CthY;Ua$lm{O z{vX%|+(+@gGc;tV-@H5%&qiHnjA>G6U8{H)it7;d9dt``=*_f^WRD4s5%zgJPWW4E z%NqAq{z|;rh4jUe$v4e`yi)<@$#y;k4(6Npi4Pm<5Op-2 zyCXTL_Ub?%kl(fe`$22neG~-|x*WO>lK&1F5wjW93cBXcnm2LDUGsv%!j>^B5Ur{% z7oOfC!#1=D`U-6kySr|CA}DGay!v~Taf?qU`pxIs=LtMCW}L<@*Ev6LezO|o`sECw zSrsPDK|W?)Ljz?xeCt}j;9zLCBbjjF`K9|h|4~!{^1vXGb+fO#=#mNVH@Br}Y|UES zYn9uDGBt;edbGCl!)&}TrlSV;uMS|;<86H|0C{pR?pUK z_Zzyltad{mUDtlIRa$j*lA12h57YyOnc=CM1J8Dn^(vVoaG$HeiN8({-}9lj16|Ke zW`+`9oWbt?@8%l)foM<1_`3aJl;4DrIie>bkq?NpczULf>=b>s@gp$?iQUg`(umts zZ--cD)=DW7{-*`3{EL(22e7nhd2q!E5ZkXyF4k$Ik1e5^bc5gF2i*lol-$f~VH$o> zj*^~1PL9lxIXjrRqcVUli#DcvfIwP}Zhwe;Ri@o0N z7T{bcFkovG(WPYbevklVQ^e(~N9R9EW7uQig0Ka@_?!%QhGkDxYJzf0t*z$P!bh-> z56?6#?xWlnXVN8&Re_hly7vY>z(64W+yLLRC0QIwW3ctzaqBH>mhM@0>U1A;ZN)af zMyGL&ywds`T;H83+kZoYH zu!Ckm>JWMglqo8In`2R4im**#Q zAOC~2Y8Bc^G&T0)QfT=a|mTBm`-Rnv?gc%T&dwjc?Yr zVE4lv7%K-?Uz>|13j86bA+eb$fANxJJ{6Ido%~4VT_4Zx6Rx&zjuhJ7n`r&cXLL=# z=aabQwm^ad(Oc245}Xm-1pm$4QiDr`FL;RNv+R) z7coC}Wi+18X?icZsaB-w?gGm-2X(yG(~m|o_+1F)7jJv$m7PAU>;12>O%glQ=)qX7 zsq%_)q5yMn4ze>m#9jGf zO)#&>%-?pntZEZtv=z;75q+d3Op%rr+nrwcn~AXa%4f6QG9O23b;Q6y1j^6+<}e;Q zL8v2!0pN!4`{P@JnGz%S*Vs%!RRoK|x%hMoA%rXltOFK@`_2t%`bysu7lEDK+FX4& z1MI-2dYB6wK~_JdN=z;kt%{3lwbc>9pGTKBfIFVx%2#XVzfBvn^MDUKt|7FRTV?n! zD#3K##xRa|6`K=0!f!H&BuLoD?Cj4=Wh*46Lr{t6`a<&d=knUge;iGJr2nF2&7Q7h zSHEq$`ie7&;VcVZb~a);v;YGlHEUc*Q z2Okl`BWmOOBk>DE^PP$9>f;S57`gqQzIl^8!q&Gp4#?yGwK-Kj^4n2!-TV8PSAqpc zl@}U)^Bew6&-x3Z34vl%X{y^c2}KTQD)bM-rIY_-iI>>Uv_bO2#AY`0S#q20uP1^3L66HeH(AB6qh%T7l<_a`0 zWyY3SXCFjqC_BSts+;7}^YkzAHQFU(#RNRVz%F(k$<$g5iU1A3%uiTpayHWnCV3lC znxj(7{E^cd3x3_sVTmlX%Jfd19Ayuz&)a^PP%9oE*dkycKUVErItMGIB=O3VSAMLi znmM$}9$xlT7x7IH7rsJUFUz3hd6Y}sk~dBXzs}fFqDo52!2JuKIq?6Z>l>r<>bhvd z#!edBZj#2f?KF*T+qP}nwi_Fb8r!z+)A#FpzkYX&`zs?)k~4PpIcKdk=bC%Xa)fH; zA3k;ucrJbiVUEVvo~$HY3Z-jbFsc?$+}+Eg4Qm$N%5*@v6FN29u zF~g04rUc}b3Dy8Y3w`^xI&Gx4AvATR{u2!YwPfW&8J-%_pf4U*lm1~ib()ZL;ky`u zJY7;>uE7^A`L0cpzqZ7hhNp8Woc+|UXc)jaZr{c7OzUGCjQ#DK*MJX5T#fiiv+;k2 ziOeuQ4>epA$Y8Ws&{;5vNFJ$KKBy~wFV}(a*CT~^tgW$l+hgISZ1I>}DGFwW5&N2) zJz-e-+?A%x$fA%Q5x*Bqy={OJZ>$2Ov`#*XtJwx$n2{kc`Q>z0t`UK?<_QzL!U-ye z^^sI-6`{yr?#>@(L3i?p4#$v0sLMJ2E((aYKTh9RD_LpKB^Uon#!lOh{U_y1n1;%; zt>kMHm8KpzIB0ZSgH<(z07S7s&Y_HaZO>%^7N3$H3^|1(+nLFDN6aDH#t&(khCZf% zYNP~p0_f9JvLKtxoC*;2uM|~rRd_bObak`)ftjAC%=YU0lgxbN8+gu1d@VgT+R8WF zUm_BCf-1PMBPHi1yKgfC+C$Ya^ntJH~eXI`#oROCAG1_?46#C>KB{^?tOqNX9 zhnW3lmnDf4FLYSlzcA$!oOn3Ux^)5MZ4dfn4Ut`*sDE>K_jVOFKfm+t2?g2bws23O z|83Hn{E?=o0LMO9;o|AL_^~y(x8zkt-PleyFfMh9rf>>xwVSqTH4p@+4yIJ17 zbibn2Lst0)%{!t956FRwg53}L&Ww2(l^Xh?vfy@)vCH}M9Y&c z>Cy%j!CFkQ{XElamMzF~wV7!McsSlT*-%th4oZ3nh94Y3! z<^EKX)oSJxkV)6KjSN0HDZ-qRK874U0SP=kE3;aD*f*C63JwhmLcSV=FapFjNW{8j zsitjfQ19ThX|StQWGnf2?j17z!-E|`e&92bc#fFN;+B#qQyr%?wly$(!h#S&DunE> zEBSGld5t4^4pLpdiG1TfGoL)rg{Lz3@U*frf(p#ihT9bf6eVupfMZf_;3Akpf1kgvkM_9-^Ak8I{+Vtyo;Oo=9*S_bDxo$9 zq3$(PZI~Fujy4{@fY%~F2**3Swn@q4zq&n$3ysRe5bz|h5FZ%G16!~}cm^4U``BTU zOq&5-YQ}?N8frIZ8jSRg~3&=O)ciy&aFULD>A1VluO&5gh z_1KDb>TP%`bQf@b$9gku(ddlEp}feZFW?aDU>y^{cF0$}WOtu`+R~k{8&(wq7cK~5 z&vL@<4Ew``5du~r(`M<+1G*;#ZK?;UuZuaFO`>vRYIk@&k9?Y^FBO#!+~&|u8&SZ2%Lkm$>=e!rMdq=hp+O^& z1B^7UrX~Di^&Yt_hOk4B1}rtWQ2;YRRD7&j&MY@9Vn-=m(F9XgvWLd}ng)>TxrH`6 zNP_)RL#wJzmVd}tN6ZMG7PkK#+}A{a9)vkO%_vZCT$Y0HiyLnZ53xNF`JRgw?_I>u zS2FPjwP=zOa*@l+`kL03)p!TWNGO7>@RB9FpGm$Kn)pKUL&rUdtYzLDhr1FpBl_Ob z*b_L`lrAV1QWG*GLSs7jEj$oJdb%J=XP7~JP}%!j0877q2&ZNk zMMf5mNQD~-SNf)(NAZOrNv;<5(>(AMgIV|JSUt^1Jz#5YK|l@yaGrawpB(lYY6ox8 zKNj-`>pBA)3fSB(vBOP~u~UB3h^Inm!ztTl9oJ@nxE-%W-o7V&zi)F~Y0^11>8oYX z!Z>Iqn!M!A?i`Yx$*-==vaE-HgROc8ZnZO zayo=IGD=-w+tozhyPn(j>oXRr*oH=*siw^K&Dx9UL+p->#_~oav>}1rCZWUi0zzr& ztN`@MPieFy$1`#;#p6Ln$+F^moHF{l0(3uEB53)YT<=MD?1e8Y4Q+{?!6X2{m-B#V z^NwHp5G4%SCvb?*`$qPir7C~EzFhEEy#?Oec2nUlxT?Eiz?X0?2HLRl>|8wT_JqXB(E;q)< zZCI)=W5QKH7z7{NTZM&<`kPlmA_>g0Jq6=*oXYMf*Yds^vmmsxHJC!f<{n7@xg_$~ zGUrg9o{Mht4+t^*{>+%C`3Cup z@p)(oLO&LQ(R@KU{2j#ohSJqXteFa!XqKxaU z&MbE=x<0m*`qZW1dyNmHD2tVDh>bCZtPm}H-``Pjk@inxzOwODecPSx31p&O7;&*H zUVjZZhM}P%zX3M4r`1wf`q{^Of8hOExPr?_vpgH|q9I23{xMh}&-V+cvGdu0Zo%L{ zeWgf!rHQ2>J@^~P*gsD-m~T{sq^yYD?8B(!;A~O%M<1=;A@(c6zUoFt5h#Pw@CQlV z6TY;)zzDS3SFz{ntiv;k$0mL%{ zh^qx^d~z-IlwCfQp+BuJCBtrYsNScbh5a754>jz3 zlhbOe8j5VPbS~BLx3>C<1CNh!lu^*q1Sn_>w{*c~+r5tQH#hSqYL##TIoAoz-V@Gv z8Om-wFeLb- zYZ1vuT7N!}T4(3Bzs4+sf70Z6c7IuGUnBmBrWn{*zfGTOo<${WQCJ?wH=GoKOKp?=Td9O(K3)asF9T<((#-J9T}1{wjO< z^s3*K{iA+1wzuNO)7vW)UgJYIcO(B{UCK5#DLg&<7rMsY5w z{5~d3$fC3~YJ;Iu2Yin%h_m6C(sEap0(?LBYb8L4ZZ36adaKb2(%$r)JJla0yI>Ze zdBh=R8#~Gb+aGky6VUPKX0>r(i7|qSF>^1biC90c73G#eW6TS(Me}O8hVUunyos6b zRXdXH7^5RprnTPSRd9b6T(ntP)2oX5#9MBbl|G26JgP&qp6PNLuH@#jj-)J&Z~^Ge z`aN}GOd3FqS8bL1KR&uNNEG(D?$m=L%epf-9<-d_AC*r5Nj0lRO(-irW~pW5PU3?h zuA3|Qys)btQ_~-ol(7iHBF&*e{ohLnTy zd_b7O96;pA))C(x{dmVVOe+ZGZ9OWJ*?C{2RmEP-L2bJ?_GSqoJYA}}Ay~WbmX*&` zPC6X>$iV9`tep}4{D0{=zqA!XGT?ykTc->A+E|A%V9W{ zXm5T-6u39(JVX%(5eBcM404r+hQz@wj=yt74}rp^nM2Sw@g;#sPEN;VwdwGN2!&m{ z7GDmAT0KS!3}wGm9M`+2|0*Y@Pv3_b9LgYZ-3dHie%}YG_CBrGR(r*Aqy0zb4P*4i z0%KXhk*n#PF@@1>6Q=)4A`|a-rZ^b}sC>!XlekNQRXMND_N`-gAUlKlL^jZKxk{ZX zcC`1~ooEp!wvNszWEip2!O34=0Hd}96BwZ`j--Wqy?H80=o-u74q(r@0ox6Ee-Yorwf4qcEeF-5eJ_WX>EX(pyPX>FyY9dP!Shl);CNhI^NKkslFn1kwldq;?3*2R ztv|}NqaV#6+On06I_4bxl#v1efs2-#MO=3JBi*TpyIZbnQ^EkPW1ODS7LC)ZG z7xO-gXDci?EF_qcv0t;4>Hz9KupOA;Znzp8SYUkD)7coild*;KR5|C+VHrY5>~G-= z!}bp$^?FKOb$C3+U1mV7P( z%1%wZb8d8=cbGuSEWS_+ChzI&y%H7uug>Q5+X7gJ%P03#$c_L|=VS|z5O!OGZlSQ) zK{79XxpHPK9y@Yl+Ct^vN;H!>Q1qv~s~D51Q$%dxLjqd7zW<4vF&HW(b623Xx}w2Z zQSOcP+Td|7rO~M$t@xGW1Hx(LN9QL3jnQ(mqXXG483I>Ls2Gkk41t#e-sfMs&CK5( zs4jBYk}!z&r7)~w1aHWiKg#6$tsbI62yfl*{iQ##2S^z01d~eMF#-|)HQn|A97If- zJ$bLv*1uYDSQ8kwaA#s~=lhX8-3l8Ay$c8T*M|~GMZe-10M5`fGhc-))rneP+@NQZ z%KdrEw(7O-_=^0BqC&K#IleXO4m4-)ysmolIGLn7c}gP;Z>fSG<;bFxeeQgVd3eOn zA98LZM=2W}$$0;4{|Uv$9W2ety{j`XPyNYPpH8|xb)sC-8P}n-@+&fcYCR{MKG>Z$ zr$Gpim2dM$pM7PWtbX7ZRiZRe_Qvs4vPUlr@!#(`+vDEMKo&X(g4~b8Ags625g-b|r%o z?7h>2UKoOz!jMp5F>7hX%i8|jh!hZ@zS0-$sVV@iI{$OId2*UoX9fUEDqqbbv_j=K}?->UH{snU^!1(1NWfzobHep2LH76FHc}5A^kx z2ppmzT2XFxeb7XwUQS8H&;p8Oq8AWl{&$=I{!UW|@>bHWq$zjAXSo85k!6J@Ah@AC z@L0<81RFatX`f|KBt5WZ^L{pE-_{~+|C9=UP1`_+1$kqv96x1BK*ZfbJxyo< z7D>0OiYm$b_6hW;zclm{u0n z3<=vE8=rj@41y!N$l)tvPn3-$`_bVFf~Td0%Hu`>PCBG0D9)aE#w{>WWUg!ftuum0 zUXi9$GEubtGzyp55f%_cj`sBYwyrQM(0!$-Op4s7zH;_8-)M0i$eE>ks^q|{x*&=#gyat^osXUTlgh==WWQi0=L9B<15n6@EDPq>PXkH^d`LjrFzMMDg0to+Gr$qoB zjU?pe=AxjbjEc&l`_i;bmy#$5QEwNywr^-WO6Y=?s<;H7G0rd;`#)tq;PKzIAc}FC zk_a}#S#^bdA4C?0<)2aP`bbegcp4H?c+Hap*yEX+RaG{h<%tnW!#b{vV8>Z^C;)tx zoT%W96i_}~uo=AAs8c{pHv3YY#K|er)wcCv7k{n*fCi&eORb!Wx^!TnA?kou-prQn z?v&7SL@hC8w6c(Ubf%3yi7C}TuL;348pzwMJ*3cd>a~;oVfwzTvkSa_5D6yQ;Izry zdB4c&loKvvl6=}b^!wfqd5@Da^}(v3K{Cb%W~br*nI?=51cLHOWjdpmboXG*i}>QS z0Yn|MLFW(?3(N6d;euYArnndBGpUP@Gt75}f)pZP2ySpY`Fm4X#XYb&KWDcgO&3OuoH{N5sUVfD;4W$r}MN2t*BAWi`6mO#XdX?hz zRj^*LON|{!$&=g6q0Jp$SXUNrhdK3$WiQiPe=9?WGBx;ikIVd%pV1HTF1`}dtCg+doTm3gt6tf2QDkOynCAle^pYpYhObON& zg;URh_i+m;q4wr~9rHVPu_i&6t(1?X!CN|Cq1Q*xjqfTfsG_h1Pl4Uwl!dm!gB0F$ zW6vIzXE^buK^Pm(8jg^fb>rQd*dlV*SdlO{s!clG0qh3p5TaQe@p#j0{jSSjDJd&t zEP0iY_?)|0MVxsLs@2PX%6-?0O%wg{fpJWcM^`(JIf{42kl^tqkncLZDWtDXKS19W z!NvwO~+AvX3$?wL@aq9=?CzYz&{HFfMrGd(#-mYi3 zROP206V*c&7G`-sDhONk1b=e=v^(VOH@idGYA>NhO_tD(r(~!C_s)CXhiU2VCs7E$ zLuWuSR!|t@VDn{T6(V+CMIdc(5 zTwr#c8D63)9Cvk?;eYNm3uj=sC%&C{7~f^Q))OcUh*sCSkhYaVhSRYdm4Ef>)x{cv z#*1O(Rc9Kd)f=|c49|lYnxaF<*}dez!uu`_kZX>!hedbVSyb`Eb2ENG@kFJj!ywGQ;j1U?;7L*Ij^|(^I&Y$(_Ux_>{u%2q8jlS83Ujtv)5qiDm^(ERe zqYAd-TNOE+IMy9oxRp)N5}h$9{YXNXV0KKXF^DpoQCQ@QBunf*4^m=7l%TCR?|rpj zUlp?~`pUF6`RevEOKoZ+fWvJ6j5W{SG$1D>1SXBmAbUu8(B4> zKU()E$Gt#0bj8_tNAMg0|Co|AZ=PHDXbbqSVU7sFM!?K90&oXE| z(_XKUFp*|*Gh9o)rG0k18!%qI$YktU`bbihiSGY3zKkc|T zG~Yfm-aN{;mXCuZMunOG1SBBwC~lBikz%9X&@~syp)3mgL1_`Jrfy zSeE#GV&OBQ+!IZfsk#bwg{Je>?=S}n7N#uF;G^S5T`9leo*rw5lX`rn1b6O zq^cY(haBw9bg`aG4j5{MMKBL!jA0Si^n@inpk|Cxw3Nv;)X)GKG%wNF@8`*gEJU-= zT(kP2WBo3N(L2Awk^{!5D%}5W*JQvKh7|=xPlQ9B;+-N~SYKeMilHUEUu)HA##8R= zmk8jmlrL(yh1^HeT5+4ulads_yionHF?Gkcwr(@JcevJ@H5VO3vR739#}EZTJ^+K@ zdP^Mk@|`;c9x?T)k34d|Z`9vPl7&J)N{+K&J*kGE|MZZ7x%fcYLr-2kXZcyK{_M6F z{UIjX+1~r5mdWW_KwOxa`})=WA0m03X6)}W?e-hMl8Zp0f&?)H6KtM7L{5g)U*QuN zqCy2Cfm8!T^h%Gcp<~ilssiO@n98===BW;8eEb2p@p5;pI~9b2&(yh!3p&yddO_jf zj8wO+f@@&$rZ=FJ&LIJEFm!64LIEu%=-d&aO+U!PK-Y5L$?bTSg!|~w?XO?%&$hx0 z#n5kbw}rvWLlCuIiBEuDH%Cv3mz;XlNxrj2=YW|}l;!}qB3aRodn#o-j@*tgL96Z9nM=Pnk!|sV%dJ-$!tlt0_ z0=j5mzeB>RO`jn#mi6#`Xjq=tu~DdZ5YArq1?0c?F+=N9-0WpbfeZUF`isv~$4 zA^=)5s{SF)Y(7?mWdqLV6DaTb4Kq^_vnFPel#kLYdkpd)e*eY*x+zDyhO@k zx&CzETOxW~h2dL0RA&Fj(kC1U;4(%K9K#X>ZDhV|efTn07xA@js-9+ll)zuE3~!yA zAWG*;q))8_74L)D=0tItp(3h zhv3DqhJ?Y6y>2oXOc_(WL9oW7zdWH@uSyE1JD2gK=?J(smz3(y^PKuTHL9SRGRyOM z!20@_QJ6Nn@IikY{sPlGuc^P$(a~6$sKazM_&nh-*EeQrqQE7MnJU8x?{r4optC~4 zEV?8K$xx6J^B=RV|6fZRV7-OuPeVHX@HwCa3RUHWQGGTCd4y-miWODMohGOXQ=Tt8 z7`<#%Qw(^HbW^^NCS0=ZLBzwA%CBp4rw`}(T(Zv8U53rn{%9RzgX`094rm~u1o!Py z9&BNZ-}2YjXob{AKZP>-kzA}Q#2`^^Arm*~9~0TRLHF0q1rS7zG?61XLX(`?3YJ#6 zRFnvg(bfhSq*|QGn@^xjrX~J>=5lEW^;H`-#kUP5^-7O$JtJv_BV9RIQ-8A*1$6I5 zSvYJ4p3EF%0IVxEI^RJ<<>MhdBl*6*Lf^*q+KaNB&>JmZI@0i1CwVA#Z(8;hNn&R% zXgVZ;e|MtPqKk)TG#?Vw>pC%T_}I>7`Cnwh2%^Hto4hLdKR$I}zFvMn!}ysEH!6dC z%;jh7NnsV2_>A9LxH|O_Et{x9MQos601$!d2Td@ytJmv{Sg>&cTrMt4P5q8@dQcga z$tC~uT;gZu@Jyq%jRM&;Q5TyvNFI8!UbZO{w(P~zUeaT<0lC=tFw;v5fx~g~&MKCy z9rBG!xoaa~1U!y4m@tCQ3F?|oEY1Dy4P_Ff6#&aX6^Jl9EYsDI29;Me(c3r`ZTY-7 zlFXYUBBL(Y(+yc_j)6}__=v@<`VEy|T5|~;|Lgcz_Ns{<A4KK`me15G+?WAhM|)4O{`t8vtc*3-$C{A8WpK zFA{<*)_T}46sO~yH#h6=bu8abvgqEP=@PI0Lq`1r$b3pT7tzs4tUUT*!nOxn>wk5v zAH(DEXjxk5d>85MqHTy&9FZG+7YJprP5eqz7G$Rm)fkohdHB`Vl?B z4`b5&heMSb_fJ=qJ#LJgbDTIy(vDs+c{)vPa2vua9*S>ZEJhRu{kv;OhXW=z>J?78 zR#80#nB3yFK*_65Ax&q$@6&!k zS~=tn;U7$8<3$7*iu?4`HB#|6-gU#9EJdV zm~gLRnE(6H@8RrPLYrc?H431udJgJiXbZm^*?-j1o2SIn#k+_dV1Iq~`$u$IU^>Ay z{?tjo1xtTs)bf1@=S&R~I>S}G&-M8nvV!i2B4O7Fu2`qP~zT8Jj!uYnI zU=QbXHga{l-|MG<_~PVbj_wL&^Afu1lDXDTWP=K?iOF%!HUzFNZVKl5D7a6n<(VrZ zpZ@c2_`U}McJA%uE#@DKk$1m~vjSKSj%l{!i38tfe8$056VltxrKidW18gfE&^#RPg zbm9VhF?t%$Z|m+D_>Vn9VMKNd8qPmk@r(wt%|2hf4xbwF@1lNFm}{a0qVZ^NT=t2pT{xy-+74$b0i5R_k@s z7y-*)#|xcM$GMzb-5v-4LVWgu6|RtWIo7Ry=3-D8rL=9v&NRfKv73&E4?wJztwkGW z<#>YUehm^&tkckLyPLQY`Ow)gdfrJ4reN=wTpGj_zU_@wbF*`=tDVRURJC3zjLMWp z?JJN)Gp#DkTTcfF%S<>Fcg$gf^`j&9S=x{;daqcsaQLFF#FWeJ4l zSN8c+3w^(SEemqm4Ve3|5K~;e+MRUmeKYt+Ti_IgipB{&V zuq3%N$=(u|o2NGy zbF+pTiY$t&9^TSezko@~NMg5UX6|t6;AdG5ISc`DT}QA+xW07msPU`nlY4oJcttiZ z71tb%Ppu6GE`-YSFVp5P+Y=LO8iTHhKcA+>$!tUhRm$19C+*w!?w|(QD7PBt`$%M+ z)Pc~LY!mxPl%?eS733N(TY2C2bQV4vOabf($Ypsp81Zhv1`Qf#zK{hWURp5*mmh%t z(t(B7gDg-sGDQRjjDFg2Ds*DRA9H%@N?erB=@zclZNn#9on!g)#?4_2@i|PHcOM`fiT_Qz znjfbG;NF0X|V2Gs4D4mX>v)8o>{On zP=j=}Ev&B6({WHzZ9hAgRC7pOSsyN#zA|1{82b_{)BW(-kCDRY-hgW5wsECOyVD

WoR;0Kwfc3PG7ySzv=#YjO9_Qn`-3R*4SEfvkz)A9&jjJtvX=SiYxd$v z>*FM_Fw!n?Ui<`(Wms*_BdtdUoWOnzIT2XnT@p<3V`A}w0OjX(PqGPOHhqT|NClp_ zQ8h^=B4c#u*ESjz9JtU5=KUye=Sg#CuM!SbL?PDbu|ih(0Yya^&>s0diK6oXLD|lw zOe>j}N0ERsmLIDR*p~A0ut&PRrJ<-_O>%0#|4R?j(Sfx+NPF7qk{JJXLi#uF@O6u9 z8mQ|8KPfZDg4l`0li)gWsE5K?$oB^Z zS&1ygO4kk&3~9IyQ0U*@M)5yizHKk~D+`2ZD7s<%#FiLEV+Tu&`Q07|EV1WDDBxD0 zAH2{R|24cH9T7x2W7dFvd^e=?ZD~K(f&R>0cQ)d(E{&!6!nWgfJ(q2zXOw8wq#lcB z)ymniGjru=NpK1iEQKrx{xkU8V(Zp1@bzJ`eU#&2!PMALeSWiCum}rvRn}rBeuPTm ziWO$IB$TEy?QnBom2RJzfCu>6+d4+Nd}j5!?HSQM&hdGcQ2rE9 z|K_fq0KkIDz8J{=2YmmN@&P?eU`xP6KfP~tw8l`#KQwh=zTK3+nmSmZ{ZK~}!iv5H z&XgP=_JpJS{=QD@@Jl2%|K)BMEetTBa8+~~k0($?dG4VoLm`Z?!1`@*C03-rP-=Wh zMA<(%&732-?E@fXspX7<>#)q{JP3rgX@maNOrBYUmVZr2*&tK+llki^`GrMv`67yb zex@6|t9vUe*`Nr!8-lhhv{VGKvemj9--cLtU3qI!=XOR`_`kX#O`PBEZnhm$c1iy} zD*!WsSYjaWOf|C{K<2!KPHq*YF$U>p;ma5|W;*b#@DazB6BG^iS2}WbH`Q;y?o%SI zU-p+gEX5r$Amiub_#UTbghj-ZlvjuUZs`o^&)tE zb^grQ+17N^(T;`kqJw&dk1Z^p9Fcns`q>bzEEb&n8`bE-J}L*c!2KWpP0bughqp?5 z->im=q`%WKIyT6vOmKa(3>-i3?Wv=CqMjJF?YJ5N_lbkB50NL{cZV1|>bFF1Br*6^ zpJMokoLoE&#~nK5dpxwU7!B}1eft4-w2LUm)4}4vy1bzGT~(bnLEDfaRfGx+ zAbnw4Rcw6Kxib-N=vjq0#GS|~1A66utV>XAwsiPJZoV=%ltZwRfmWy)&v(1Iq$>s6OFhgIqvE^)kq=pT>giJD z|JY%3{sK*d){&;csr9+tO$$6D2*6S2vC@`C0P;_Ht3c^py6l`~v8~MF2~1e2&KrxF zxh1I*9gMUjA-y-RnWaS@O+x9#Xn0AvCyVjIzR0)qs=7Z-Lz^hX%gc0*#Zuxm$2qc@ zGFjHle9BSXzcE9L57Oo@;u0yV49=4ZO=~#gDcl6dj|gSfs)Urq!b5AEc+uusflqt8 z7p~p)BaEYi{usbVU>~^=c`;Vqrq$~;;o@0F&kN*$E-`h|#8yM2ps^qBGnVi*!_bhj z0xq><)1HvSh^>x-nCs2GNnx82y&ng3ijQ2K>i6-58xX=ETfPF^UHd5mG)3>Io&hx( z25de6yHirzV2`Ecoz*@r{X3TUhGY6B-WbiTep5dhk%}VPNsSpY|Mty1*io`GltqKb zovd=bc8Jm-PGujJ$n>uszF$wEe~&Ji`sE>2P7ffZ!+F=@t*Ei^;V^vsU-w0?(=_ zt~0PIB)zIowd~Zhzvk7P9JEA0Pe29-c08aSVM2$dpRTP&xc=GaLwA4y%dvaJ9^`-H z2mxe-2-zO4bx zzj1xjLl97d-kjmaKmCuaatN}=Ljzmx;a2XFY&{m`{O1?m_mVY-mC7g?tbWDetm>F} ztGaLhCWDquB%3|a3>Z8xcK&~_{1+{pxGhAX@E|NoaT02SP>{@?fce*t8V zaDW^;RtfNjreamcZWAv0l^2jxwfFxk@hAQR|O~9=>`?q zXMqPvXQUWf8#TwjCblfHnWE4cbiu$$2jf(AfS8k16@K^v4jz0vw4oXS)i=G3K@AIq zES?>uTFJ6axek|%yeIyIkY}=9oZr}(XcrzvN!=Z@qGLe%Z$GpgkXYu+ZANweejaYU z!TdZllw6-va)RD@)ybL0=@1GAYTOn86H$D*xM}u|G96Cp*W`U8ch6j}V$gl1AW5q= zh48Y@prH6iKq>V!IRG+f#e46c4m~TYW8vo-T`79`L=k7DUt<6r@_f%BnQ813*77q+ zx^xjjeqRynPM|oGRp0)G{qQrl_h&Gc3rl5`^ zyPjnSvD+w(w;)9YKeVvubF>!kIRIud@Au~E1nawB>L$a}Z_cjAD$S0O4&dS`Ic1=L zNj%j9kea~q9`M2LW2fu1u`?MGUI>B}=R*K6RXzBZC#Tu~S(6%~APut<0E+|6yg08g z9K*kh@>z-?RF6JeA`p9ZBN>0KBcjjGza(*i7edxRaXnQ}A|kYCi&7jFdszm<^mUY~ zytJkv!Vlz?l7lPa_07X{a0xKVnTkl$Uh+?txP||{Bff9=iD|#~Xs!x@To1i@-Xo~W z%-bwhH=MMbpQO^*JW?ha`XG^)$H*dbiI>@LuSHKR@5lZ~i}<`nH{BKMOjRT(D|v7v zWvwor-78q9_NG(~r}<>=QW3TJyS1{{(*?_G-)k-rnVa3F9jm3B*zOUEvkRUCr=}zI zuMhVZ$vG^H+d*AuC8+ZTrrpX+E{nLIa&N~MGrbAw&d5(XgL`6zHNp&jgwbJoo7z$C zDLpHGj?cIU88`qn7hPIiFvV8-l6>Xv(bkt8l?>*%vXP7(*MDN7rUa*abzo+!mGTVx zuy=JDnTe_*N}zg@)^RwUs`DEhSEtsV#ZFmNBSd~T1171+w@IL72B<+kfw9aqDQ+n( zp6->rurF)bQ)Sz&uks~|)=i`tB+>E=Q@#*4w9(-oV2LYoum z&dA36Y`ZtMYIm3w}IO z{YdGFUpzfPt>Dn_tXp5DLuz^ciCZ?2Tufv_h9dpE0#|^%zNkSap$X?f_FGxL3BDVW zF>lG|QQ_i<>}fn}3OFm1qv-ZILFU2xYZzAAs$z;}W^nu2cIv5z#SFh+*%VICV-xF8 zI_u2C(*-ChD70kN z79Mv_TJFlH$t*li`x!($WD7(=g1{U%jts|@l#!SLm$s+TRw-0hMUvu7UlPAC$Xxo0 znu>!^!$0W57X}@ew_3%_ev9Y%AwB3G8nV}e_+)QJq}S`bxDlX|mv(7EVXYa3WNn

FHS68qKWBt(;1C*!v(<{t5XeWzkjsJO<-lObFTgnAw77>$+ksn)Brk! zQ2YHG&qj!G%D66z$8v4%s*rB4cBFWzkCYB|qt)Dr&l|jkTw)e9)NhfX?|K`fzMLIiP zs&@bxY=b7cU}b>oCbuL2hInhb$i*7$-%lnPM`0JvpG~g3-ApWW<{dtSH@%**CMjbE z!|FOBZp;0o)K9MuObLNZV=)5joz%rxRpE0DSbDtEGX8GZ{RbLgLpr=WIpy0srwNDv z5SRGf<<)&r_PQH4`14DxYYv2``3T5!ck=q-WQ}p<)L#55y$FFVGm2mem`8%v>m^Ft z&Wf;^Og(ud({OG*i#U7Cf36Eei>W0x2az}v-i`wBWdgI3@}6Y%C|2{-kpcKJ4a|Lw zux`Oyi(3I^N5p4xf&ImIK@XW*+%5A{Ky3jYI@LO2YR{pJBk|aGhaeOB=$oP%yZzcQ zNLTNEx`owSJ9uzul64(!VFt~nLlwIR@yGMKOJY(WXvCfpa)hr#Wt|(o3}vVsSOiB) zW^uMwns~k*4XfTxD}B@xK%21QlK1^Atk*>XShXn4+I_F}-$acd%wNsz@N`3)Q zw3}afv~SK*9B%LKgq)w*#6~-@_@i|>E5b@{XZ?~kq6F`YON-h4X2lNGo`Uya#vSv8 zsPfksP6A&(qCPe(Frs%OKDUTw73{GZH@(gVa(>UMGVE1)<=B(fh%36LuW#sjA5sD^mBNh=IQm{;=?qwZyfvam&74`(4aCoyoM~*^w+^ zBYuDXGZo-OtLje=37BHpB3*yvWu=a^_aCj>`#zzYv&(adsRUiGCs zIR@&#t9WRTmMfegupf8%H%H!2`_RC7;DFg+DvkufNl_Fe_){uWmF5q~z_m!{8&!xs z6Dzv`(9c!O%Fw%WnWwS_GL}B9(9dh{_iO^A2vLQgW3()zK%EHHawa*_BDx_&!77Zt zH<4HDVQKQw=IXLgj%VtkP&Zasm%^x}Tc6KF(rpghCkpD1q4-2>8f<3ZAQx51tz??A!{NC>E8)|_I!_JIa!1!)VP>FzmE3Ja|6GukY-Bs2dzjI^e z#67)>gzK5313-rAURgM%l{;3hd`t^CaS*6U}j=Oq;>&Z_`sk&vK zhKBaw1;`sfZ#=**UfvZYCzEesDGK}t(d0NI9&V8ePLcb*>QRI?wBGC~4$h_jL{6GP z(!K3GsZuF5-X|8eQ3m5uNPz@y1w#fIGr9&h{pPkdH%By=8N-uMmC2MZD1km)oDyP_ zHa3KdiY`d+aasE$mzgBHe@)*ar9^0@^))%m(z7B zTIe!-^1)io3{lerrVb_m0Z%^&{+w?ZR>$L(ef^6!OT73Qnn_Gouzh>HWFS1wwEQfB zI6Yp;=c{dq?CFsX5N_JU{DwskgnY0*XO0_Oe_Z;c zaCdx5lr~UMb1$_rR)B^Ybg!_36S-r;DRt=Y@l8p20Aexna9U~ytb*QHIJZ*_vQfvx zdZTq^e`K*q&`Mhb@0D0r-xV#>%iS}$GzXTuN|snaz{S051p|W4L=TdLtD_pBTW1I~2kH4_$8= zRaetRYvK|#NN_knaCe6T1b24`?(XjH!5xBoa0~A4?!lelPM^GXzwRFQ7eCKn?_E`^ z=9=?a!P1#uN_`GlSgCZAiZ04%_tjvLrwh?V%MtE^4#98AFV=(}W>)Gg^-}gun$CH| zyQPz(r0RAL^Jyt|eQ{tD#?LpB%S9&eb4~Q7=IZ=0p8Ibf+#Ul+0MhMzN2~eGN8u5fw{3U=+t-=AK zp*vs1pjdH*g{cBFxK-G*XPbdxwEGzXP|A$^oZY30t-S0$SvhIiMPZ3Jfs&Y9H?Q-C z7~P8Ud&RBYqsFA0;(Gl>^$F?(zd@4wwVe$EX)r?5md1kOP6^tr410I~TBHT-pp&Qk zxgALEi^@3O^kz@|Dv!Ut858e5mS{KXia{NB^g-gij#!2Ycx+8g4*kqNTeoPqD> zlu|7~_K(8jf#Uxrh+LD$(gE?i4eKS;2_OUSKUXf0_A?AXA)>+@_erxKat4Np-y5zw zqBXrUacoATK;?+nw7{%eToV?93-BHFa1+!inb|*+6DT%zWKbD|WeRw6^NaJpxjhjU zGat=He1mR%E&DKnQ{u(Sl{o$-+T8~mMP&hXP4kP6Ib-Atc;WeP#k5Lvi;mZRwthHTtZjv})=WS@`2yEfd zkU{MgRKlR!0j>7tnqnKh3friJ&$T{{E2;Zu@)&p!MT^${B~by1i0uMK-F61hBl2*` zBjU&#qT6}sjpyaLGX_ZNt6>vG_c=|JYVpj87z2?E`yn7WYD>6pUZrXiHRz*?4FhO9 zcRlMA^NYcWh$=r(8`th(m$R$ZpcPZhj{z4_l?-I-!kHTFT|(9$w!~@2akRhN7;Ls1 z!=^B!$Zt^mHTkC5e_))~E2`spLcMKgcpwtb|C=UJgo)u%lA+_g^X7Hix23hG&+AN& zi4dai@MAqR!cQEp*Ef9A2G^vZJZ+Vj%#pRY6Xu~FEo^%OPMak|0!PeH^b#ee zaWO4sCA~?QX}32Su2Q@E{(;3-0q9@_H$X_@7OMH$aDC5=b#lz zxqohy>!P`Oal!!dl?Q)bqcfZ!7LW9Hw@bOsA9LSeawpOBAcput6yZ7qtNQX1iVs`v z7s`tES*fjnnyb#V3efIBbM&S)2WI3+Oz==_(h$DgMYG%(h)!_M(vSgjeLs-vfN1t^Z-d%DXu>cvc6JqDaonF@{GNfAO}4*|St zka4kv#Z!a}*$CdZBr*5Frh|_$8Bv>%DrL*I6Inp06c_mqdl;BXXf$EM8viXuGcG2+g zG3DfKcuczWb7>|?UgH*?5^wJ3=8M4Tb#CN+bBBnOz<*f)cuO$zA?2C=bN1_SdMrepuc+&A-qLggIDw0fS!kI34Ye*rTqx32JzaeWcSh)nC20CQY{a7 zwHuI_-=<^F-RO=G_N?J&(JZXb6T-i&Aq)O3AmbUnd}3?6>Y=)}g}b1U>+z#4-eXnq zD)K|VswxbKy|8Vm=IKu)dZAnMWm#AnC+Ymkxz@b`dX~IYr6kU(+I#%$uc8^Wmvr$# zJwbCpu|<%pA3rX_5CAYy0iX8un4{uE_a{GKQd$8KThIX zZ_{NYYJ)*XtV1+VMy;eU6if=NegW#yfl{`av66<@m!B&w6r%}v%|&G0llCBn8*%1j z7wcN#4FmgX$UgdkxAb{t_E3}On#nAdUkV0;g+S47*+Q14c;mmc?I#HT*yV%W4RZ=}&gUDTg#6}d z=^O*mwG5SbzE<-LwxY<|t1)4=03c-RC}56ujg=%fyT#;7TdbDc1pKer_f-Q45mD;p zrsnS}0eOrEl`5r{L#15hiSL9fW67X=)(ieJ{wSIg$c*57wOh z#p`Nb_LlnJjio&h*a-+7(45V&lWe#>)6*;&a2{2;#>bs&LFldsH#FavgCBt$T<_3n z*c>)Das$Lc+>Q4mP-bI_?yi_6PDM4xWm%_xftGVQP{FzbMr0KH zWvJ(O;~J#dZ7_bH@Qn^?(7y z<0c^F1xD#t8=|3s*4f8_ch=|J#KlOgFr17I&BkJ=-Wtt{5j?NEG5>m69cEoySo5-` z?F-OAV7-2~l0J&|U~cTjCR=B3_}xj!HT*>}+nQw_15eo?5@o@j!=0Vm;j>{Uii~X1 zXeG5{i15fxBuZEOeuOqO^Uvs=fuzTXY+AVJE$hUgK=Qy;=+Yv{z9~nZ1Vj{itNS}M zHpaQL%QE|Z=Am5{w)lv-Ztgh`aXhwAc%KFw@_7&}tcn`&>jD)8Y6X)?VNS1Sw6ncA zg2D=>LKV`(C%fo%>F(6iQh9Id_mMEww`zsoz%AGzBp#P?V_tJ!Ae{M0uL@2VWugCp4CUB3rqB4@waWPSj{)ZE(SRH zmuB4A!5E|4=`ZXjTA16AWbt)fT>dZJ4CE%i z`Wtgp)mom)CsA6CQ}670QmB-_T-x^F$2(RjE#KH5 zt`HHQ*P2PzPmV0_sUR#UQ&vUyh*v3%dM)C(-gP@tkeRulg-uPt6D;F+#03RAqk6uw zsjW#HblBFS^(g%G<&-U)&MRBqOvcZ3U6v~4;TXUsny+RI&9R>^K~!bxGV@@@yCSI< zh|=7qpro)P6-c)ovo+qa3hxjDBR^CFiOrl-z3e%at5zGKYIo$QgjIcLJoC4}r?l9E z5zc*ffcK}2{YY;)$3g*KtDRm_rejA0NHaH$?nKRu@2ib$)%h~6v-IOTU)>+e6VlXe z3heEZM#P_?Xu>Yvp$_zs@n==E&%GA;1gZqA2qk@&q*+4_zzjH3ygPFz9H9}e@t+-9 z%&uj7db8Y2cd)F|E`zU-MYfaBxgN8uK5rFL{p+c{L$%A&Im+h}q~>;t+Y^F@8aAnV z3icaQ9+kSU5tzVRxVrPez2B_OB=Oc(>dTF-3JKXu5zyQ$wOClHR~Bv$WRHO;Kq<2Y zWpt>~hIDx{#h^XWx_#je{9qfMF>j-zwcESp_P(xK!aCaEWBHd^Pe53JZaCeapQlqc zPp9@;M@?NwLgl-WN)W&dS1ej7&LC5%r{At1v2_g7WaK0 ztIr}$XV+;9T~f!$YO;d)&;NK9$87Z-2ofw5oPLE|GSTO+Co#hwQKosJXN(wOmJ!SR z%CJ-$CVrJEJczZB0d&R5vM1Zheq4gRonojsVtDeR#`VJBQYHrtW*LTle*$UhN%r-1 z==}%B6qceZuRJGZ3~v)-rI9)f&W+V=j=}!VA?OQ;y|2${i9I_)2vDHQm zZvK!*hLAdX>Tc>Y<`6YqES1=XH zWBlxVzf7@C-lOnt(cZ;Gyu4nlhx=qv>v^)c z*1E%&#~gdnAjTM1S@pS!#-x@(3?M7`9n7442XU=E0ELR7C=UJN^lSs_*sHVYj5%Tt z9y4yK^nXc16~04Fv<5vLI}qQD8YdvJ;v8yD$n$Dl4RK5KMcVQC-pVz``rJ@!eEg>z zLt8|!4MX(-2ZVqgM<%9ymJ-!jmWrAMhv%86=jtQt;s(Dfj@;i`ArRFL+P_W+nJ$a1 zeY6Fm4*ptT^QB9EDfc%>Lz%^t?(rKF^jP3qWKiKp0N|kBm6_;2r!gbILw$!ZUYtH} zn(UC&T5h&MMQ1(~un>>%$mN5m$K-W)T1j3x+&Xe3x1Ui@g8U9|DEKijv>kXGJfG3z zvZONE!2{5XyShEO@Ch7g88@u{Stwp4*XS)%LLK5hW^!%CI|gpBSN-n3_;YyM0aDGI zX0Jy73f8tL5{hbbdKI{%m!DME`;bGaXcWqMK=u++Db} zx%@+fU~!F5r31Lt6@`m zC45pCR=PaL{eZM^t!K?15x+CBDUj2mQB}l}MYQ4OWw%`CX0IdA!sp4&Lpsg~dzO7& z`XWW`|K?labcJ(!kjb+2WY{!kU#vkh0)l-S6_|$_IQiLsirClVB@z_Q!YlbSZ=T4P$b?*J7S) zxpAF)*Jh(7_@pIf+ z(>S>CIQiKpOa7lTRoe)zB9kLyW205L5J=SxhroTgvan#WEm?8$iBAlVE{88c^6!$t_GLOy_8Ho4Ku)amX{>WOcV$)>X;63{g3-LH2eu(TP1C z7T6aBFS=7EacU%(K zEl=4Ux6bmQ|*v^4I*buWsxy^LjBK zc|V84(6t3LbB8k(#_0!|b=}w}KCbc1^(9$51J`{QulfrjE5CYDBNc$$5oSc?ulij6 zKz&SQutp^93>!n+ng1X4WRf@3gOTFM1Noy{rgwzAzsvzHNigF4=A}xk^@E7m$aGFG zhdA2_+7fdDsiFNuI_d%cX&ExCBPJQT0_Ysg6DKHG(7kxVjK)geW+evP<~Jx4r<3i3&;oDghxjmPJN;=mZt4)+;-Z=xr4J- zzJp;Ih$*nwj#m4(dvcG8x(A{hy9-7^rO`{b|1O_kyi>#-+mP;%MkW}ZP|zDA*=YxC zm~j2q;79Z)j&Hyij=)4k50greqAH%rsU6{_Vffd_!sa$R@srWQ##+tuhC}_SS39BS z*vv?p?GNrDkEPqGXrM_dmGE)w*XChKyoB~_DZF0Da`c~w7~n^EW7daakUO!>dSYJm zy%~HL9jyR4=XHR)jG^AmxY52lVQ4sih=O)06?bL`esPp>ePj_S*nPdS}M%fAd@*8X7so zLG6}^ZT4Ubw&lNWk+t7<^*=t4HFRJc&I*CQ0KMEkhrIn(iO_tTD44Bx`XX4ISbTZ~ z*7}~WFgIoOG4cIoMjB*P53;~*|6>@!-JO;vPbBQ57B)tHO@@zSkaJdbFM(X<^{@9Z z?zskOOZva2=V7rE9s{}4&`t?0Nl@xP!{;7Q2Py#~$&YKn^) zYP8)e1?rl3LJ(XR$tp*d^jMOI{P@@itw+RLmci{MqK_FTtP^jA%rlDo&(;|VcZ0(f zMA~6UopNpmQ!D&`HUWA`D0w86?+0*hOiWH?B!1t7PT+hvDy<2jdSJ^kTBJdp4obe( z^q;&diQg%6R74;HaN*0a>z|*$y*dr@?93Ux*^Z*(;;9u5Jgo=x-gK>eJQjU%y+$ct zv@RyqCJ$l!N|ivx7=Cwaq4EU*L#mO=_^^K2lM1B!0&W z!h^_QtLJ(A@oFIcx~H)QBE8yg3yK`3g}AhGI<8T+TJ>NTpUKA+d~Y2v=UE5y5dwt$ zgm|U;ojyu+&>p=zJ_<=+gI~_xB+pTZstQYtY@Eg1$fXq)9+qovC|dHJviBQW;uV}X zyHER~hT8H!&d@Cwh^)@6^+Q^je_VS1Y^oD<5CG+KA6rDeng>4;%0?rxDI#{1LQo(} z;%(y-^hcA2nQSO-4P5d0=(7}G@f1+l6c$rZpFi?h09T@U`)fLy zKC$QdyIms5+|2{XtzanS@_F0e4P;l~F0FHVmScfM1=$NGUJZ}H8=m(4{XJNa_6=j3 z(1c?dH?-2?gu$9jAHBgrFpdXe=c##YR6&tCrwEM;p46DaMl;G zCR`;5`^2^<7DEF5Xxd+)^DLe*rKb?XEAs4A%K^EpS4JWq#Zd~R zi7%h}7P@bC(kKq^B#ILaN`hBk6IH&f!-L=$LVv?C%2NM^V`vh91|_7R=HSPwR-ccl zI3EU5xFHgYT!7qzNA?2{A1H$cN{T~oep}>=aakiR5m6%MVYyJ?3e$s}#HF!*kJ5Ls zJ;GuMD#2`_v$MJzvm0U;t~XB`MGWw<9bsJs{<{Qg%bR6M-l4oL5cC>Klf2DS@ZW0} zgnsHjg2M0;;AV!=|8&0hROXe{HD$XiM1_|B<5pZ<6%gQvan~pPlU4LTC;i%Lbod6C zQTjjY6ZBbatpRe83h^olS#PB+06DQN|r(K zpqek?j=B5pFj?7ne|@(1HSIMccYwP5IuCZy`SUuftT<%Qd&0lnRE_n4eF1yNWxa4c z8kC%ZfLpEM45TvjPm|=GC3cc6j~3idO=|Or^6_Jl@ZZDYP<1EOR=0?E$0JAth!9%L zdG7Ozxp5U4+FlgX8NDd!GTAkTh_!wg{e2H71b|TeC|wCv|L4pHnY%5aR?d9rSeO7lMH!DQ=)*1s86<+PVky5#$xD zMWIw`0mKpbMILyCs?ag+9LqlS*Yk<_%HifEY+acQSK@$iNxXJ(2gndY6CK^3N9jzgZ5Cj2Wo0l~+jw%I=yh-9LUlMLRd;3-y@ z6^#d@XL=Fj$EOvFgj1*Zf8mGppobEN0FXfc-$Ho86bd+G<~*TuDpx?0(CsL$#$CtP zxmgR&_T<+GZxoCmo{5=%J$xE%xLRC(`&WAk{S?%mQZcSNa3z~=m;ScKv}_>jRne!2 z+|J`TKNwuf5{8+XpsIZ2z3x6v`5});b2!6Xo8Uafkrssc-mm0vhizfG<2{e8XPOe| zTxT56=I!5W#WbsZ3ZNlGT z2f6ZFkkXv~t6cvqiWi~W(gvM){}Fv|)tKS=NCMrI=#gTOmL++1Jcn{DfBMN5OFG1Z>K5UGg2ND@509%Q;||N*Ml-{jhtM5p%L66 zyr|6t;4KrSt5dEd-dJ6rcZSM5^T?d1wr}vo42o%{GQoxcTcn;Lm+=`K}_3f3?@Q_#qB5@joD6<{!6a z?@8YeV4n+9@cnb*{Pl-Z0Cg#g$OK!i)8Un#9f(}`g`8S`V1r%0@MIO;acg^0YvP|4EvN% z)5gTCxQ{BYd*t>qs+`1rzf~cfq!^09qipt!P<(R)_WR~KHndzNPLQ!Q#N)6=1P65b zt3UGjKS&zSe4z3>|0c}ld>bTYD|QqEiNR*f+HJ)Riux++sS9Oia_{5mGXZU@stN}b zBW*FmiYtB!sd!s~Y!yyN57Uw|7~>WIF)HJK2ofVHLn+?jTN*(RyX9H!-qg(5e|aUb z*dR=k@FBt-pXck$5#L)GsoDI$?ZDW@w7~9RBq@rj(w|N8%KYI0QE9MxzSwEH4P)bG zrHdbdvH`4&e#hz~9$~&oL!9wamYpkNcrKvm_Q0=)a>6&k;xi9OAAic-nRMv)oc0sH z*s_rg3V45vZ>T~-eo#Uv?XFZLfbS&$I0Fq&t+qF3>o(O>XEhxiOuP|l5iF>Wg6Yaf z?V(db5<=oaLb&hO>uJwdCd_;|-@3RuH+S1zH{0*m@7sA2S~k57GH+-#Ta06m#c~oV z|2K7}0uPRg7*nxShE^+&k&JtJ{&-(T?xZ&PiqY?1?0iSlOxrJ(sZbDlZb_1W8wOq< zy#pn)IRnI+W$7fFO|-XES;q=F%`L9@5~9#Ojy#kz*n%v|H@Po0;XfA!oLhT0A!;WCxvr1dN+A1K6kVDxX$(h$7`+7^U+cA44IVF z^hMC+i#X0~gn*#SfTYXaAs)vNRjZXEUD3aWfc?QSP;x+kH+Uc~al_5RquneJA9G-Sh z%-ZwCCmL4=GWh(?mr3$a_*j2*63%X1g&cDwP%lyUY1&iZ<+w~UI2+O*nx;CvObC`N z>%TcPKESS&3oIXO(LL8;fkb~s91b_X#m%Ol1V53>qPphbB(2H0ex8kP-j?^M8*+YS zUpqk+_hg_6i>s7QP=D+2b$lmqL!?WS=1#io9E5bUL0y5I^N(le!sx`($+J`aKAq^xubhbdL(D=Si_A#&5kF7fmlOrX* z`P|M5E&N#C)r+f+9?c4i{`W(!`UnJA7*UnOc^apZeQjv#xTM+5$8Qpc?RHVq%c=fg zD08qRj&PSut$(vLaqEJfpy;OJ%+vcj^zv#BnUJTO5Q>7glK%Feo$@6NNJXWl2sXFF zug`q1Ii>YRuP!1hKzo*EEgp~GF_x4Q$2+_~q?p(3%mtoI&WS_?_6ctEzK+|;C)5%2 z4SxAJR66?XLXN80E%<5pvR`L)W-xYBa#7$tzNO{#pYZ5k(HOgKlBt-T?ZXG|b08c7 z{are~!(uVVLHVqDdkaJ9e;I3K32yXd^6Bb#^G&HbY!b_S zRo<&)hx1-fdra8zNf)Mk52`;mcY8mc>O{~A5l|-Ew0nVhzg-(RqA&k133)5v%hqtq zFurfeQog4^nr%4Fj)Jj(a+$2*ZSR>>%6}D{7SxL@GMlMN+;T_iS*Eu8NgJ2bfeKbR z*sR%Xz^a7Zf(jhfVnkWE?P(4;q_lTS*xu%wtTHp z4s{;U4nttPi@|sM>9a1*-A7$LuXT@mUwMI0Mn~C&k2A1RXYFXAEf4~Ukvs+7(IirV z_U}yJKaGkq|E^@iWRTh1khMxoA#33HNp`p5-!FTM=+6@|Hd!?>2s0Fsi z(iq<@1KHej_}uZFO>fbeYtxXHmkGTt@W_o^N`I+c;Fvbg9eDt(F9Y~S&mD6nXp!Jz zIyQYDU~s!MR-L%z*6A}?M7yjn9w$u?NetW0BSAD#gwttXA1S$YC$a>^hWX#CO8ZNw z0v7^Kq&m~pEdB+|c;Y2FDV1uH42~@ui-ve}h0!vSiharH9fxvHc28dE?{AyRw@Ss= zCAV(7bTw?+co7VawA6FJR|x@zJhjej^HpHX|JE-5Th?`%LP2=j9O(;FYD_TZtA?yN(@p4nj3%k}R-KTFu-;pRJGje>zi-@*FUl!L6V110 zbP3kjgQalcP$~6JLG%=uVb;Ci&Y6Zl&(aR%Ap53vO=`cjH2&YFK%-^O z%VB3Nr8$?i=#;iDQn-o|$V0|%r`~_M=H%7{dL|Qx$TJj}{2-})8x-tin>Mm}->Y*i zt0AUrUbc%$Rn)5~&!%~P8D5=lI14AP4@X2OgdId?(MHj^B|Z4R{;w=hFID(GjHjj)IN_$BFYv|1 zzKP#5SmpDfnV2d}J#U4&^LEmxRguHc&Mb_5wE*zhuam4E{&n%@Y_fGBHBRrTdB@PM z#WJ2KGqmKHsE$JlQH0O@e0-v`MAqqE(}OXMSdNz#)}V8p)cb1o;`lP7<%{()-SMI; zky;rMDp~sqn;KM@Lz2NFP1Xn@Q|#$_@tbWA-0=dpgli>)CuvvH@_xrFr?U~-hmd9| z0Xhw-!_keHoUx+#*iP#{!kGgxEtY|8xAQU?r)#O4LnRBIy~j?p+OF=cg`#2NwZS1D z9c8XJAQSstnlJ9)Qrb(brxo)=np}?#N?#&7s=$5cbpyY$R!I#iBs|o%fK9vR5HX(9 z?*Al!*N89s*-oga3&LzNrsJ78W!h5#@>!@Q{Q~u(^;X|QydbtY+|B@hJzJm%@s?{7 zGa|;9@u9)Z?_8rC@`CybX*GeL1o{ZV&Cll57Tg;6dnf zw3D0c>5V?mxZbb#Z3L}+%T3q2OQ));gJqfa^Yq*#Yn(_kBUV~U$kT1_SyG)MR`}`ZF-~J^Fry8i#9Oh_m-4X)&z%t+A zGST-?zd{K*ozUb^_rRQstLe@KbK9}gJo^m-A~t?raJwXYD2(;hmfwd5>I7jWk^>TR zb!#TYVN&Rz9J62d4OyQ`@A(|GXdH=^1XJ0oYx>U3hjbf10;|q#iM6;Je;DD`Raew?EvLx6jHreeOp zW=pt*k>#?Dj5Ebv(l(46yK;(+&?R;!UGlr2)HhX;i(mwV^F&HHf7=o0ca(R;W)$@` z`0qged;N4hMgar$y{RZ!cfC49S~x&8afuPs1P)ih1v(Ts25^O-ltqek+kpMM9EHXD z(k~a7ro00i0+AEfGc|g()=GB-2Vr!4`8dR_RQ6uZY!nDlVG$_Ew5#d&b?t%n;k8(b z=kzGxx*>&Ji}lrfW+8r5YZ{3h<0q)e0ff@ik2|pbwec;Zc(X^F&Uhu3nahpdp-2ux zX?WVl)94fFGzRs)B25hUpYWZMJ;;m{brn!6 zjeqjq?jE7~Mi>Yom}3eg%mxc~Xs?)|_f9rS1uE750uqc+U7ntJdiCKP_ZfDj#vUX) z=SfBI%T%81%^V9W5VkBeM33eTD7e?}satc$VOm6u`@r7oFjT~;7Az>FF6S%`hOc2g zjTu@s5>%hrMU{+>LRg?@2unE2Dsi_#*l^=+qsgsbP3ooX;)q6 z8j@fjayQInD8K-zg{8z8*tiAVKdd&nW(=jmK6q%q7+ZJk%~Q`RORO5p^K3ti`{Bcf z0#log5&4!}BnX8-sNNHin5>)2=Y%ALl(siJ{%y2{r1A?08@Vk~u09{X7RxMMNQU)9slm^^6MWD6H+B6wSP** z^RPkC)rkGThG9apaL#yg7sK~%W|mk#wq8e`O0u32U!1@1d^Z9OYj4XE{K@MwP1xG3 z!M*nhYC7nm4R==ofjn`8phkplK~Hz-TXG?{9CP0Dz^8)wMZ*OpL3==S`r5kJ$kL)S zuq*0u;k%E|j|+a>m0z4`r8Kl#L|L;7*yZP2!BQ^rO`;n0oP|{+yuU1Rm{!h);qqZk z8WvSXt#aCoC~nQ16xR=Q1e^=%ts*5`UB*c~ydT&h(u$D!rYZ<-k2cHGLFE) zKJ-+ICHmn2JuFh@^nTjrH}ltc@%$=1j^iE>txKSWC981xQ#c|6xvVknHV&q3{<%P8?^;cC9?u3T}h&$0xg zw=jmO_HJmB`@HdYHqa}s#t(}f-JO@R-#ar4q-H-9Mw3X6CkbG;qyb~nkUk$}3AhyG za}`p%Uq6nl+49~g_J1ST|I87dAELZ3zq|71gCiuBKiZAM(Sou$A3iroxo>zeJe+vm zSot{d-4FBIaxnS`N1L^mF5!$00KpB9P4*yEt;xs)2j#?aRcGS5g__-jH-?3Mm32 zV!;p1WNFLQJ0cflk&%CEH-Cf={s7&s;@WSdOw6&lj8yso5J4#7(cOO6n3;_@m zWx-b;$?=bau_$N2Z~3uX!fkSv_6HiGcfl&aorTST{P z_^K2C#5Sya5BGiB$OkFH^jis`;jb~>?dOvrNvt@mSmy2T;ly+AlO@p@!#mI|2@cHC zXOMbvs2bATUQIRnX*Q5Jn;Gt>0NhJNU=?fBP;s-}y*~Vi(*X1#N*}6tjZzd|B7LR$ z8D!6X%VQ-zTON-`fg&KQuy>hQxl6KKl$QaQi5L=+_zEn+Cf6cnZ{d5O265upHN@oJ z*+;F>IM-Axc!kFgfmtv3z(yb+lnUCp#Ln%^6hVbm?F$%O5?Z2SNoY-n&ylJKe;N2? zPBF~6>Y{KK0fmL5>MEGUz(~`OW}`j#Z|RHk7QK(chmLZh%_Mwz9+2He?7Zl6!T!zM zZq$kCi{pjd#KAWcds=3vu7x#pg5MxQ4SaIG+UQS^U3r3W3d`)$fk=)@Jja`bf$p5h z_X6qM3AGLm1lf)%>amMxY+QKu{HDj_8+&VxT`EKlvVS#Qc_yhIR1VlS?rzVk1rJ7@V z*{7WzlMSK`O49X!l17e@t_inpAoBX;ZKY&ZPcyO$2o|~O>2nOc(5p$q>MJ%sdNcE|wns?k){k~b zo5t+a-3+^{i5NIdhHA>@2(c}M`MJcg+FQ3ebCAy=-_~q}yUrfnN|9M`ncg39=>Gd& zQKX?Iy4;(#x#j@|p4HouciwacCaB-Vg#toiDov;8tDQ!GPPUh{wdqAvK8ot+QtvqI zKXZul7{sb%0G+v+{)(b_jP^zVVa>%+g}!;nx|QXddo0xrKWqqpMjuJF-e_~L!CoiB zgFx2CSN+gk)T#t$5aBInW7@7X!WfNyQy5g`>}VS*4tJ@XOOUIz)_jBQOJGUqg4LLZ z?8iX7MZ;!T>Qyy>v-n(M^tHhvaS9}5V!FdB+RSK5;SYC@%VPJTCQ8bKo8!%~uFKQzZt#w)Dj4Zu z?S#;+>!s*w%=H}Zhn_4@LeJAl!^vnGwlmOtYruu9YU~3|Kq7oP~w5D7mpSJ&y%6-V9Yg@7;UF0SJ_F~X{717a_Ovd77=HA zE05&@Wz5^{rHpa{3mniHGC%}RyPNQNi)ZhNeJTBXBkkJ&{;5XOW>@DYCv#(kgEfAK z++O8#c?_iE8BvZr75t20rCINM{s0Sx)%tSj+3j{Zz0ap|sfO^;yI*(S(^}+j^{YZz zZw%?r_34@K7SF}=WEZxUNj+R0BuU;*;xp9KFv?e6JqIAdxr_jmJpa_3Skw?L3)rm1 zsfm7BU*{1kaw+|UWHxWu3pLi#LoR=*mr|>ffd|gOeZZt`c8>aFwW+s}NO;tgVsn;U zh9L})Bs9c~XMmZ34MJW^0A-xbAw$hb`=g3E&l99_-gyPIv}9n7T-JZdRktuo}`{fZP|CR8kZ)4LxM;+ft; zA4b88f}KoY7dZ!m`LSv~ZC-yR*QItW4^i_6$3U3Gp7?apYV*oly&2B-9*QNi4JU{P z%J2B^2yti!u`-%gO}b; zoE*=NN(GP{gK1(!)zl|W_N@)>@28eZZ;2^?Z4afpvYtE2UK<-gLN=BIHQi)J+!M{U zYVBc11L)pUKL&aJQH8>&tpVfwp2v60%SSiv&0AT)HW`&7Lf+|5SCCJMHQqO^qlX|d zx5Tpi^KB2y$G>7Af9}TgPEhq81zos{WI0%yjI;~-+`3XIs_$dXZ*m@~@HsTA_=VsS zILFWiaH^rRKQpY~vOS>YBV3lB%#0J5KS#85lzYeV|M*M;4`l$eP?%>tjhuumPK^qb zPwxWKrW(%Y(y~kn`E?r)$D2DxSiQzmiuIS#eqOrLK@!Xwckx>v{rc2VgOb9# zWaDz+VEmLO)KF+YqlL=zLo`0QIx}Nmm=G=Xm_(m9#DWQ=IaDFusRwzeiFRjt z2T^B;1ew+%HEPTXWASZ6O|S*Rr~aVtjl+1jR2*E*cpZcErUL6f($}du&G7a8}6R^BsloIntp#z;gaJpH6{yP47;-w0gyQi(WsMP_U_O zNBUMo@R$WaAWor@3!QAmM_XI+p`fVn!~pXr?w84{@wOw^m`=z51h*TDRc+{cQ4v%! zVJ<(`DvhB&L~*LhA3Y6k7kZmG$29qdSUlH@R(V)9M3oj`vBB>il2oxXbq*z@#bq3^ zs~vbz+l36iis1eBRSH(DbWdC6LKOwL{({OBJy(A2cpQDO4gwS6b0u+)oh_!Kt~* zKX>Ls23R4My*H+e`tst)FHYfXY;p4DMZxi)X5mHqE$b6oW%hC3l~2`kWbDCSeqFOB z&N2M4p1f*B5`51m1T`>ojSL(_Jb1-OcMDqfL6I%hU^Fdoyt(X-MxhnE=o7>+3nZ$9 z{=49B@~^;#8%%VOJMhtq1K=;a!nTfU;=K^K#es6p5^gx+X2l*>WO;Z#HU^EP<@ezq z-y$f*?iw?eWX|&VpD{kdD}Jc50Yspl;ycdcoh%e#5}(KMJiqvM%1@XN78K<-POI8R zfazv@cC5wrv~<33qaK?ml}Fq@-uxG^geE_pC&{3DM`fdQWt&vIflh` zdv6FBwv@mmKc4vuW$vD^)j#*#pV$Otj>;rB;+!E?!-ditB&=v-B`psO&QU3u=>0HT zcWHf{m(ywOS#Ek9ES^;-a||VM1A+!JHF__w#&P6KXc`IIy|h}OKa=FJGY1Q{1gSC6 z_|-ohHLCF!;#BjBx34zHr$i$nuo=9j4*ot~tox~mlt%}bU3$vRvHvT(jE2%Lj%mUQ zj(0uLx8Kf)=)KwR8y-jQ?;_TlCyk@0@}`S?LS$tHP82o4K7yIEUM`j5*INY?^|h-j ziY3hd_A4lG6jU(c{CO_B{28k4kB)GCaipGUkn;IR;+c%PiGh7Mvu|)R>)OZPc1yDA zYHw!o1%i|CcX$XDZzi$uSNDB%b4hzK5YMF;p{PRqD{5oQAzcCL)UclPv3%p7A%;qZ z7ps&aFpYRT@0w;Vcmc6-m5AmOAM2ZI5nm9MWlfqmvVsx8zqhmTy4KrHPAbACh!WY2 z2bddwy0e#Qe&dQ<4&r8n+OV1QuNBrv+NDyp3-ydMMDF%*Txc(bJyY!?(`z|? z8vKG5KFwu1iz(SU0VLT806f2P-rYROlO0)^0!reNkR81tCS`Q0xNo=QgtYl0qFt&M zW^}%Y&D}-dQ&VlVOq@U)*~17L+4^gL>I--6`|EC2LJ2kEGo!3L>GHbvypL7y)QjA@ zJ>xTC4ObI576LZZhC*2AUd}PAwK>j|!+aOtef;ZLH!tNJKVO+Syn=HEJY4}k2w`n9 zuK$B1sZ7Zs@)g2|L`AruXi^$l>Y^PAx#{UBrHVHR;*#vsXS=zH4n*oyVrdX67}R|6 zMml#YzD7uF!_scQ!{-&Xl}l41*Oissz-hfWt3GV-9Hjd8rK#rPeE{oC#<$ZLBN}%} zr)44Sq|i<~|NTeL;dKtyDhDa5NjIAi=5(+nSMBrWV>)u3;&CgnH{7{x>xI`F?CsH5 zFstD-t_#vjMt)J*>GnOvEWe9fTllIf95f*6 ziK-~WcVbXZjel)f)`zG%Mr~-vAcx8?TbFYMp`m=sA z`1CCp(J0J1D0g<>6d9{u2R|2=Dc5HeT`HxCe?V~jdcLkcRt~B^&4sL&)6To@_`~wW zB`t7(*b+xW7)Ed!y~hzqGcx5eknGkPazLJF2xz&~MorZo)MtjB6ZKYy%^n;~J)D8c zc)gwW5tuZc6NVA6J!?|2G=G&n$<<-y_u^geU#=}izP#5FTS%@W=xyx0N1}olRv@GL zYrS^C{?Si^Y6Sc9lX#Ji=ZT>VMY}9eaRDg2OwCm5Gnq0&#-G zf0e*GD|Om1$r42UKa{<7R8;F5{!KHILpKbdw4{La08-M8v~+g~5<^QXAtBw}-AGAy zgGe{hlK!@ybH2y(zQ6UZ_5M9;&CK5W*?Zs5=f1A%CcPpZ7!pNjFRyQj=il}- zgnXoQmv*R#>?-VxCv@s-3(#Ssf{KzqCtu(3S^PR}xrB-@vj9D?tZrx1d)VWx2C;Q# zhDE>2;zE{iiK{MaY~o$ksQYJ~_(7BiVXovMD1ivN4s_9avMJG$MHm{=#`g9Ol>ns> zRTs3h^&eme(h~M2GiSj4Rx4XSj^y@vqB81WQ9uCYdUBR@=Z$!BP~h`qRaMiM0dAJ> z)G7Qg+YiE2kHj?{!koJOVd#kp@lic3SQQ5c+Gz=F##c=uKbk;UZxze$YxWE&2#85u zm9V}hKnJ0loGuJ;ctQ;!pGnyVh4EZQ`ZLqyx?8x6!c`o0iRD2MTdL?Uv0lN8L`(V5 zxA*2#lD!;p{7zsiumVI&SZ8u>2W10CO~2pd>VZHfF`}q6PNKoL#`kpAgg=R}#9tke zsvu;g%_dyM2Nnujdt`!*Z)oNOdUcT@Db7Nh78=s}PZq#xB6&)&L+{%gPd(c88^}IX zGK&qYDq7+Y;EDN+J}v0g=J`bvQd8u+7cu&+xQb5qO1Ve~g#qNNl^?A?_p{Wj~8@ntEltx5D)pBn1m47!^^)B8w%SuL5Z0VuKO zOVXx2sgeKbPPSWIi;)LH=y~C5N>)C)l_z7GJp0Bfdl8 zG;Crlo(6P5%vngT2E4g;yv-4FN6cHMa!Tksk%4Gc{1%Ws8xvFFe zugec1ePwS<+;qIP%!-d&haM3jk zyK>sjR&Wl+FMhe%JQ5aCMZZ;-Nsn@{wH@DSq8R0wNgj<~L{Yt2y?|N-k-z*#-h0QF zpDfkBFi|D0#wSfj0VUst;#)n5FAK-;sAzY1=>^vGuoS;nqr8R@HPC6 zPnnsM((hK%uMyII+Cr!)4+H|iuhow2o|!(-^wForMYWqihP5htzr11;rou@)n=$4& ziC$%D2wz7u-P}-C3Gn2ZAFWc{o*WC&$2;AA`w8Uqmr>p$)Q{~eo8Uo{r@FWt4&_Nh zCt}M(+vZ{9-fFv27=)qr4abqK!FE=g+qWX1-J?;#OtO?XQfoP6^xT7|pFnDN{hlN5 z6>q801dX4h&$4(Ak{H;GA$7=dY0z0OMo7uDluu2n@U!j(axP{W)gbYKsndY^m|25) z?S>CF2X*y(0;8xc;)=jU8icrGQ)HYtrOWO(O6(~S$S3yTQu5;dgAaN8iS+==*)l!R zo$n8$YhYi{Vd(qdkA}W6_nIzqhU%RfQj)h2-|zW*8B8>AWu`Z$(_t_v3yQaXMqZaT z?-urqWqm@bU4}b+o;hE5*4L|84p7(A#-dGQ!BD^62Me2t>}=2_K;uCS%Z*{?k zM^KsX5iND_0E8C#e-9&H9B2d~#ZrBXrdR?S(uu424+7j*8AFa0}PeHN1tb=M{sa#{_*gRiQ>K@?Xb}D zvlfAQVJM;^5h1~N)D&%v<*2Bq_vt88k2fD1{qVmmE&~_GqL0HY=EDl!WM_cTFGDiC zM(F0oJ9uR;r~X(s6{&v&-wfD*)-@hg$Z{VHZ({TrJy`9sA9tHYAo(*^&L5-FiUbi9 zN94D(Bzh<#t2viC1xe@liq3l$UTB-4H5~3$SxNA}IJf4h%}QDD(d@ zh6o9E1_$5H6cQ8k;y+#2KUK>>&6cr8v&!paF>oiLepO~_^1o~Qckc%ssg1NcElUh7 zlC+RseD~qiVWe>@9vFJQe(_0V&cxZhXCj0-R_@8laht;zti7q#xbcdN=P|uLn)kjQ z_iLo9+Ar#dcXrr^TO2=EIj_)s|9WEm-ZG{4XZ`*gujnJY5)C^f(o1F3yp1rV?b+x+YN$wS*4wHKctsqqk*8lb#B=rW!`7wl;Q2v?quQZHfp?~#kdb4NF%387{JlSNdQ;#U+IPW}^Qa*ACiIS*7jQ!Na!roP;{iJeZOk;I4_PN2Ub^)QKt;-4rTOE-Q zBa(7gDVp5^Zr2w1TxW+E;&>_Bb*G(CapgFlrY*jPtmBV66A;4H(A&db|=m8d(#y0ljnL$&TK6NU=hiiOQqn%zoZIStX zX+yT>oBQMrt_EpQI2ZiA=`@1*1b4c6B%x_MB`E%D)&#!28~AEVxK)y?ul7bqccB{6 zNmoU0I6A4 zI8K2jz(MrfxED(59!f;3#7sx2-thkP^(_C~kHE=|*a4_^}*5`IDhGMGrb%J(a!1*JLiU^X8DeG{Zx%2H^tqX2&dcICJ zi}oj#j{u9$eGZgsaYX%rs3n#DbOy}|jXt|>b89z0^``^34r*M_*k=p-@Birqjsi_5 zcA*nlGKn4ajanB22v++R@yk%1XI4(`dN$S5t`$Eh&q|-vjR$yNjgJxbVX}o`uK=4Pm>I>!qyZZ0-0Aw;fss?BCNt-^1~zHy0@g=W4I z*ekv&Wu097_2OM)@N3gef%3ZXSuD{m2%hP1mYRz-R6VsGJmM7ZUx|NdF8h)J!X5*T zmew5{fIddvhJzn1`030JZv3ws%I^w<#K95x8JL*f8O|Lh_=2xrok)kZST<1EpZ46PnI<@c(}7U7d#AfcK~+C) zy-CUWlOZR%2?60dEhMWmmy)J7I(VRe__%xf%c_qk8f>+wFVP|Z0U3SNw$HkFKOnC2 z;&?w*OsVh3A{5QAGs4=)MnGXoL(5S2Shuam{v#?S5NCMjK!|N=afY{dL;u_d_aLDR z75|%mkie8?$^=beBGIykkG)=<`ZUMSlXH^9MZ=#2X~sYSaUOo_m5=%By|)LuqJ%~u6O5G*$Y=&#cQubOvMF9DwIN6anWJ_r-Pf+@}y5NE^yAS^T;noSO!FmYhX#tyiyw%J* zrEc(^sqIr)%0_FpZDd#&6dET^0Lwc6I}zot?7An^em!?WBCZ)%<#TclY&uOM+Ki5Q z3R>B^X6F@cznXFcRstST~hr%n1P-aAct{XyfV{4l-hFnc+M_6dQTtpIP z_-HWBwTo>C?SYxb%zeLZeakIG*HAVoX6!0#ovKVH8{eRw-I3#+G3NE>RpF2xVd;!r zoppkDGYp(xA$t5eT-mmK8ajFpryIsr0x1OQR3*|Xw@Rl#7w?gO8x}jGrTtMFtnp!y zwytV|SqcXYd&tUs@@qBGvDzLd(rw!tZS(9TyE6vnr5c){=U)UMC{PnYA+~u2o>5q* z2Cfa^=zB$tkG-)7-`hXYJU-_j}$kQccTvh;DdG zo8ObN57|oY-fe6n(AeL_l?Cg}dC&#f9lVX{trL;^YHL$ayl7KBf;4$JDZs@0>=WF4 z;&G;I&QSqt9}1e$lW1mZuywJav-<3GBi(v%@g#Cme!=t6%dW`Br zKK>(U`E~8LiDA0dchRaX#Qvg@h|COVs~r_qn)jVz7(9VQeZ%`(Dip;p5zw_+2s8P+ z%1_z<(*^S>>_a%@aPwv=7j4XWM}3Zbl`(!8#jxprw3t%4$1`WNbcwD~Kw1MM1_rs> zugmFoY*nM>2F}HblMrS;)F9CrW$gLKS7gB-c`ann_zM`CM@6r(A?_lI<)b&F!N|ol z7-Nip;;P7ed2X+c%ig_2`v)x#9(L@bIJ({#D1x7w-^3%PQbw}D58}Y}Jvw;f_9S2c z{bg)((ozi&1fAH2Hn_H*RLNAq`khRYUmt2LEK;9Q+ZM5qybTv8lW<}_=HJR8`H8II zW&G^Y@ZsqYy!+MW?p!9=|0!qVCX79pIW6ghI7N%%iGLB+1~n)F?xDnQq5vhf$HQl{ z(!k@$^0NmND@kwe=KC!^itGD%Tg)VQ4qjI?sMP3@!C)+g5y;!m0B7RLtO`o$L=iq7G>=MYCU< z)pOeS74`Y`G%^RgM6+U)+QJ}`a`k3JWX#44H+#%jq>L)AjD>=!9vzt)y$CV}1d) zs}?1&P{a})zhcvPEO}xcK+A>47d6t%^m&rIFVa7p3S)rFc3~LXSd#pi)QtZ-JE<@c zB*k(pjdDfvup<*{F6>c#F$uohmq5IW56SxVuMwWxvuAP5IR8XSAi>ZvU=z7{7_Zo)bUIj1bFN*U`F@PUESmHsI?j!vfH&;oS+g4TB0_tvnSBOyw5nhm1 zptvLa2c$AVVjutvi9s)TpV`>wIj81mhc4A)JbY#)F6yH(SMob@4x@v^&h*83qC#VN z|AlmyZT>(xP2S3s1#$07W#+W65K3?W=midfEh4?|t2bMI&9|p6Ly3s&F-}JZ+&-+3 zV6eGG4~)MiaCs=I5@9<@w3#7IPdVTdu#oSI&al#ItKCFw!!?=MZqGo1wi-dZXE&4= zmF0_zxH)kzVRZfS|0Aca-+0yVytYIl&_kJJ_l39Lka1PbIhj2@dB#ylwYbk&X4 zQyt2ymfY2nZi|>+O0T|mq`)dxg#-Ruy}$CgM-#2tgn zejWffxGBsg{ftmN* znWX-?+5u_Bh*S>{I&eRONerSWBKK%@`zw5W$h(XOm}fr;{Oac?k#tI5?!4PJwITU2 znCPQ62QSV%Xjerx@1$J{hzZ6<85V0S`-RoU2`O$QlWV1}Bev`q0-dC={;0C`tl z1T~5heUxv2!77z8cTXSr21zhnB}h`2QZ`~h)5Pz{SV=X!ITXut|4_?SXLCk$gh6=}($T+y%c5hx*m&fg-a!$Xt^Yl0C{LM8`$R$Qx@BE26%-((eUK8u27+ zz&QC1W<(eJ2)FxfXX`g&6jKle5L&Z%5&houE@6B({`}kN53`UZ-FTh=~q{?0KM9e?G3}FiF>~u}*Ur}Qs!TUlW z1Ju45Ox}M^vr-BIcld)J!!2q5jg3_h*g!a+=2tQ{{>P2Or~{sJ0^GO&`P%xUUG}2` zgpFckTr+LIFv{34!) zOBI-wI96V9#!zYTiaYmn6TojlfPL2A2q5ut`gHqbGCPJJ)0@1f;XC8I=$tf+S4l zKMVSyp(XviGYyFrh;mk2*?*#MN*z3=XfjB*XL@w@;}kQl(k#4D`VtxD>}qcS@qm$nqyzTZ;muB zm;0)+Cw4hx|D}jkWucwjB&6)eE+BsZbtZm(<9OIFymg?jv>aG*OT71_ zFClMBGNEGh!KNgX`#hjyN~vQtX_YUBlPBsxmTniUgUqVo@KdzC^f_`%J<6%nXt?E! zdGlVz69={>R9Gty%h3A)@|j@07|&u9HOdf}ry{i3iRmBP&ErtZG^g9|L5ctXVMn#~ph)zSQ%7 zSt7V)XP0enu>Je(vIKFZN}N{shDpx;k=@{Z6{UuS$|Irnj9eOHa52UJYr!JBqI;Ud z5#jZ86Oxz)bO;ftrgv%g%Zq~fn*AjCB+H|u!Q-1s#6xo;Ng5G(4kxB9N!_bc8oZZUhW-vv3_K**$Yu~7;fJUp1LGi0 zG<1!I%4@D471>^#A7SJOl+x2}?+I{115^nxj|5tAIbXFZm-yobJQkQm(d3DF!yc0W zK_4*AB>#-^Y9S*Lc1wyct(5b_YGuUMJ9Qup(W8zV;pNnJht5Y^QyQ)i@Eu8a#yr%J z$FSr%eih-v9sZD(!ux-TRgejU)g+uK71)ALUX&EQ!3m>{hy1`tU zkdBeF%{BKbiyl`6)v#{s%3(!M>Cn>`Du3sa{-%4dGemd>B&GpOM3OvmWc@lRw01EX z^tky9eTV$H!v4zSa!mJvFsFB%SNn&;YIGj)eJ$Q79aB01DY_EFB=+T{`?TyFYqaWd zF#I5a6s|KuO=l4RH0ia|Y<0A@syx?fF=wi>pW#)3<>IJf*u8;Bqcci3lI}IADk;sA z^>Z2M{y4a09Ib2@#vb6Jvt$N+vi~(NwM|I5k?PNCU<4lFaL>FML(ZB~ED?{0#hGIM ziW1&F9mcj1bCq56@U*3;mh-rQtay~%l+^hdUBd+R{v0t~h~2(h2d>K}({Lr+t~$zM zy+SK~DPWi`@YO(w8t_9$6$#9LE(M1b$oGvUlTE9QFPNPKk6@oN6&T88W9Vm_mG(St zF<9|+2fWf(*0htH$zaXvd|0vcb+OBphUiz*s!46&9TJp}y}7s9k4~z7G4$0gVD@|_ z`qlhk>Yt9+RW5{;-a9DNrlp$+3pfVR9=+?kqc1wT%+7WJHWvvF5^~hH4Px6@c=64@ z8e)pz?<*&BvHH1Df9|UOi$MLMwNT)8f~+FI%6m)l3u45wC7Jr%8htgq z*0qk29P09^$_+}fr`=fd^?o{-evnV9M`hEk3gG8{Zu*Rw0V}8St1DMj@%{+WEZi(j zldYr_0jRNQMandy`4^tHuza`ZYP2btRc+2}Ozb58>oO_gd?({WYB4L(a!%`_tAFw@ zMBJ1xR6E{lAA1TYB-{3AVv-47V#*>gL z78}`HsCRX3`DsG@2Ktr)Hw>+zd<$oD$}#xoJX__49{Lf zG8i9f0C4jOTk#mXDFbkJmE>{0GxMp*bG(23=XHgEbXP%wT;;W5s~@)Lci#JW>18?I zMkwqFP6;oQnl_f~?|vDbd5o)H0l>4G7zR&hgtqPrD7{l21SyK!Dl`sQ6bfYl_mK*DtgxV* zsTXJ04!m_q#xLDZnL!gpUBg4WCU+*E!1_>+&mvXQ+c>-9G^;amg)P)cy!M*RfP5BK zaRTp?CON40Fh?A?-ePLw2&;M4^)$@iVyK?*<0w#$W@pN!S+IDpL|KiRmkF4uJW$D+qUZXoZ+Dvi|tJ~10& zz#yXw?6vjBl3R=fFTc#gA$&tbFk_DuqsOTuN>hl96_1AFD3YN>{~Rb2FsL(43cJqQwDLF|_naIUnw5zS91zThDw3 zF{9=840_XSI$&{tK9}F1T)TZ&V<>*@G)=tH_%{42f`U0aWe0hs4;Y*AR&M@DhmuBY zr-H-XT=XrhpDBOM0A;4TI))jH2)1|g+ zxI#0v($eiQzUE240P_-y8>baRM5y-LrQWM0ZZDi)oV2WWjWRfKMZQbpCtokHv)Cnv zI{~TdakMLr(I4@?zwPmYx1zEClIfGWp!}1S;+*}H-Cur+0jBv+JQZmLv&FR2C3vFO zmh=o>nnlffPWr#MTIo0px9OeRWjUGud1!YuO8#q4c-6SfvP@MP_gs~}M7cBW!s9mv ztqhaIV`s1@`}i6Cd+8LUYesML+q~`W**IC;;_ObHhEjBy(d-)FT z0F8(h@q5Ktx94IHbRp1&j)bFf>m}wW-v+x#8X>#aYepZqN5BKj6Hre-IQU=AhZd(o zYy2d|#pqd$z*pwhW;IXytcnNqe|sOQv-ScAWUQ!OQUYPqKgMR^>7E=8FLSZa`g(P1 zXn1ZitnI;G9opP@U9P2u5sOtEr{ufxB=7P>S9QrVcSXduAWAIU(7r!EZ!yW96GTPP zk*RnkC?))Ad9DC)f+byDbw#_CUm4#H6Zf#l*2E)mc020+YI#Cj96DgF#A*qEwoV}nmuA|j34E&ll*;73-vawj z0Xj)Mz$~Jd7q*|i1ZoK*SAWRsPDWyxkm2E6u4`EY5M<0342>>ISBI~YfQ%iVBlVT& z`acNr5=QQ6xq~GUHoQzwoW`xjSMjFVIDU}Kh^zDDICfedutNJu`=gWNYbjaE&ub-+ zJ6&P8n2%O7lNbq$j=S*2rd)=l_6llf5gLp}sKci3D_`e4%`Cj_dFx{bdy?3|$~6k# zQ1YrbT@?MYm*E1u$ETvYds$W|@>E;WMeuBS5gJ{r!8NYmVaYr-+~5 zE^`1J&A)HkU+=wTu-_nNiQlr5;q}1-B4QFEIu?Jit{b@GhSBY-zx8|CfZIsA5C*>W8j9KC~3~b3)qSUW8S%{Q9hH|XLe%u=u(YrdpD$ihKi34hf?QcETdwJ`3|=!&tX zaEmWi6~bPssXS&@zixZgC9Mu`?ifm?np2)%)ZHG{X<^loeA%z?5p_JEWGdQney{vz znYfCBknqICQhj~yCDtyNbRQN161>+(XLid5o=pOjiRKolB-Hv3;wM@(3P?|WLDIw? z$KX%%o2Ai=6NpIt$>PdPb`z{oe2BlPA997~KzbgcLqLniz{aUbn_2Mm^oXv8@-4*M z;n-D+BUsMW;itbg%Hu~>y|3RoeDg?Oz-X|8htko4l1Y|FA4vvAzj~qkF)>pU9 zDFppdeeKNc%nqz^rx+@ZHgw`8E;nyH4!m;RPa^uhEq>RW2 zFD?Qsm&jC871Rxaw0MoMH@Rk?&ik52OY2Lk0~66tqCN z;NZ*IKr2v!6&gw@TFYHPA{3GxBZ`HDIVCvyVCIO5D1&r?Jtf}YUagb(@uQ;_MP>Da z@K>j&F{t&#KehP?CXPAA%yWqoexwuOKwC6eN_Q zjkZOR|1J?%F%e8fEL$v}y8c&Q0SH=xG-kOl@HzBrB99%Uj~8rk5DW17+F=tL92%-F zYlc05M<=u0g|9%3SK9oj_=)7^qR9~H)H6NT+}m@vlC&s9M<2rmdRqt6$s_ruA)n^t zb^J_B5C&KvS*yA{#F(L&)#`)j@SZk^&6xtpeum^TIMEXqkIQVo!-Hx)WBjtxT?zFu zTJJj#<#r&4$^i3MP8@?7G$y0G{Zc`>Z^v0C?1_*dh+&ET=n8;zO#Qqgv=v;Oo}CF) z6_^L5Xstg2wqZk#0IE|^#9olln?F4IrF?Z=_;vs$pxWzf^BP1->lK0|@*pUBSvR0^ z%?EB*rEhb6ucv1f+P(cPGaZ@up**rcE^L>yJua#rr+K-R+N3tLFPwdubeL zENhv+-lQwP(wnamWzhdEc7XDe0HMDN*&ne?JhrbacUX#+5k`Oq8nLlgI$fH$$Y4sV z;SueL5hYJ*i{t{4lSx6g72FhZzgE_Bq=7Y|cS1>%txt{Sp}nYg|Xz z`X-{iM6e`fZtz)eP+B4Gr$Sl}wv`T7TFfR#M4R7pP?VjUR$63hUfU_+v2;N;AmZ@N zIM|!$z~y}u`0^zmNX#44CUfH^pnNe}rq;{zkba5T$e{JR7xT^e9%fj~&E-OE&7ntN za(iO6qg-66@sk9$jj>`u-^}2JRLZ>2=ioQ|#Pve2%_;M%@0VKM{+%NM+lzwkDoRb? zE12BHR&8CP&}NFO5+u4$QkZk1_v-fhC0PsKnQ;fZSH z^p-6|p9d6`#ZA(dKf7Wmnwn;H!06PXJyQZ4s)euF^XeZg%Bl=Axq!3p>*#%ax%u43 z*wPtGkUXm&!eGAI7JRE)F)P%G;EG=5(piiC7{{L@#MzBQ>XO6!%72e8P@T8nBYBFg zn)sg-46^iH?mM{(37OR8lUNs}=8hhww0Gp^i(#rAUe*xb^Oi(2@48|v$zr=zVbDP> z_3*7x@rMG;{EFl8og5lb@3dY^CCmN z~b019qU!T}Xb zJ6G&}^)n`xyf~6n-C}ckJ0Y|CR|cE)r%&-l|E}(aF`Vz4w>@v(kr;)2kBlS}?ASln zSy_YUrDi$BNhB35bd4alzdgx)2$y5%bOi-|){#vqgp4)Hg+f|eXwPP~G9wV?;dy!N z1F!{1^UF;kA%3VTwf2If%924F*6jq#SdP9x$b%D4qmg!JnF-{}NNs04rU@lR&gO$t zuK-%9vRwbf3_DHwY8whNuI|!b$54O;^0Q8Ad&~VZ*`G>nimFz~tFC)%?$o;DRg;;a zNOGfR>!J=`J!d^w2KnD(0fy9KBV|~KCRBy7n7^nx^bS3N-ZnSN83{mGZ872_<*ep^*N7wZNP*=1 z>1laO;eS@^+aMVIHXXAjts*O`=3^u$$&&QbCZsn`t?0Q?^`om|of1cXC)Rd&0bg)R z$z}QH?zaOu+OOKLW5iGNPt^0u6ZbEs0t_bsxXzEa;?Sf2$sqrXg!+rmp%Vl32kUAG zTfL7DEm)c)q{ZMlW~ut{!d!;xQ}$iS6S5n|PA23)Lk^vVtc}%6cBd@1bhh7w`I`TBEgt~ zI}YiLcH~}D9|}4owxzVk3E!O%X}7#)&cv9>lR=0iTPhEWToL(fsZ<|D6GA#uyq}IP zUH6di9rvgSMeMN}C~ZRKLJU%1#-3`*=J&}vgu(m5Y(OMgp*zAQa^ZE{ zvu~$+u3Vf8OwoYyvFMKW13Vf+8P3jR8F!Bsf%r8t^7#mMbwNYJ`K&~YIN;{W3+dI( zGy>OJ;49Yp2Vi#fyB<4f{I#qy_#tC0N0voo8qi|w8RgHd0KB5um^xuhdTko~HAjK6 zHsVX}0T;IgCfi217KJLw4Dcq1>{Rc4YS4$a`G-;x`mCljUA!`4wu$z=%d`B1;cI8t z{|F@)G)PvDIes{|u>dah@2A}vHG4@8AJWC+R1Drs^aAZOhf*Amgd2L(F<40q=h+K` zzK_=*@V%3hPtePNc@CmY%pp2MuwFr;I`ZP-b&#tTYS7Bk$4P|&M}(`XCVke@t?T4( zJ#Q&Geryq>vDb*et((!!eVXYRG^t{jtrM#w-Selbi|@y+Vw43-(i;Bg>kY*`%VP&&+$Y_ZEssxXY+y9m2g_ zPchW7*IV|oD8n$&P2brH%UW_(Ia{pkVY)mPQk^DQXr-;STavyA@Xy0s+i4sBsBGrO zDxX%bHQh<2*k|%AhT`|jpokd3J5l$|)|y_}QYQ@&$_MyvX@+(~k>gMad>&+gkkCqjpl}VJ!ZqeXI-OM7*;3Oa74L@7|gLf>xb@6V0@B-+$s{eI%;O zF>U#N(W_5h70|>pl;tfq=lB0ofL`Ey&iSPP9V(O3>gdvwP}Tqci3OF>)qM5l49+B? z-Fq*5RoI)+EEhYv7bnj?Tx2fnaeP{RqYWrIG3Cn4_Ye0*n=Io`Fvf|)@6sFP$hHnf z@N&D;^BYE5#&N08&g!Y~LOs(=wvZ=*K$#k9uwW{iBIZ)*O_xwj)Uf(X`UpI(yG6{% zDcNW;ofg!e93J$p->w4Mga=O2yjHg_;}Y~bDGfcu*w6FWq zo2aXWd}i(WeXV=g@LS}{yN&WMd#yHYbbG>c?o7#b+?#Z=O(=mik3mV_jRbR|0oV*5eB2hG|D}Oj zLkfI!Fm~cH@H~Fq3I4x!K3WKJ;|xOrc!Iwd_tM?QOoM2 zAC*4>>AQQCQWw6d2|NpYm@ot*qa=9dWsz^-Er^xo*m{(+PPMu^dl%HnoKyyC(jH;I zh~Z(#0ODg!+9~%)o5&YU=-x_V@0dCdFJy`qt(4ND6l=X)RK+e7<{-3%q&P&}PHhb* zx{%HP?&&M3DOQkfQKnNWBlcee8$-;;_76L z2;GT6>&{YZ=j*a_dlOQq9}xIe_-0v`JJ_A|tCIqPg68?#aSzcT^$=sOp4kyij^vDU z2eX?bzZcL062Xrn@09WV_CP|lDCI0XYr zxH{!jHdUV$%K~h%>xJpAJE7vXtY7?2w~(J<#~s2+kQdq46L#NNbl zBNJ0HY2tzqa6V&{I!iM7=~mk_!m>Ibn%IYG;tomPY+_&q$`T-m;26Ro`t%$wR>;Ha z+bar_AazdPD9FPMpro8A_)=#Q?L)P8y(a8uPila7mIWZ%+p&kHSq{n2r$HoV>C=&z zMxcuaE-PAz(+fX!w7zd$!on$j@`TYR&5@Xg&8ppJ!vHfLIspuk+#BW*9Gy@XY%>hQ z=h!_OEWVU$tp)3E3u7rC-fbP1yGOPy*&a$*^G-NDIM%ihj(4r?F`Wbtgy+=MO937d zuNNCy-~vfd;`%PR@cVCW8(vts^HcCR&a?5K@i|-)e(wA0ic%nz1y`YT52R{h<+`_} zn@(bF7PND3!sX^rWtr0}EOy$n2hMaFvG zGi0c+X|<>2?Sr_>O~fV@ABZAGx#4KbyRas`96boUwBexlsqcq5*F65{Nigg2vV7yX zXl{+wBJ04n11xrfJ`>9Hze0AE;=#{5J7bQo3lUp=d(8BgKAC+?v&ijE0@85M@=E${ zxXn?z*0cfO93neN_PKt6;knYo_k+6g>mAG~R@M~Bdim_5gBv{kYOTiDmLFcSYA5qh zed?$v{UzVwSDmZ4Awk#7;Vf2Kz@Ci~)X!GnXJ%J!kB^9F%f@0M!CYGA-h>gZ$U+VT zx^*9Kj6H2J4C*|5`SmZ#tnzlbYv7#>xpjZ~R`j+134+etz4zrfpc9;KD;C+>J_k}9 zr`O(k3>u^G<)}+xbMSG*5ilk;`x@7V(Vih|#>6(Y1Fko^29eioDZ`7`2u|z0g?bT< znDMwYo`IuZE*ubaszHC?zU zxt`GzxhO6iB(J%b7~cfd)Y*}A(>d)*Y1-J^WJ+o(c?%E@;|;g2G8=`r?ua!oVRzTt zVR?aaz6%ds15`1hJ$FeQK$egAG;-IWBwcK8-8OLwRzGzO>aP3kc~r0tRe$>1V*XP) zJM=E}?y=UN`x$Kc(&AwM71A#5z%zGEcS5T5)P)IUU(w9k0=p}>y{W>(gyZR`J((oP zDmoymz4lM8!9gklAyg_8TCxOJ(_T0vDT}76W=qc3zv02-26E-%!ihtPiKPir_k8Y; z@adEl7`mPaK7P@dGLI+QUd2pgMAA8Pv?Obca-qDJmXQI?HA86R%5c_krMy*wSn4!c z3J5*BM9VeWn=FeTj~0%;IhMbFMa6WAiUf{RY%gCdDGP}u-cE$QU8ajvGbnJ5I7TlY zOk_dJf=X~EEziECh~*%j|E-hB2&0a%R$u(I)&s_16{zsff^)N1Zr;Nt{LEf}0`T_u z-@JY3+pGu0Ez086M_%8|tF(C6s`3>g46M2lx@*wgCV%8_20Xf5ei+zDC zTvG?;NfaYc_&UIH;Am9r$E(onV6p_y4e)==?qy2ngapBVi`!x^o)+A!5b6IqJsG0aZ@T{{0qLDOL zo8+)y#AwE|9ES+zY88tou5xb6{eQtbbrg6Cr6xZ;QN!z*jN)H{<6~Hg^e@3N51OtX zIf<^wGrqvHv#Y6Wn9Odk|4DYdJkw*3vy)E~5~O7T8RP8TgyUO)1W^F2ScbvGSddGe z#HC9uK3#j^HSN`v#?LHOyWy8Qd}F z#?FTvFwkeSGD6fn$w_vEx1q#PY+KVgjZ-I(J%y~F&Smf2$mZ-Nbqlfh-k9-DsiCv; zJQ4hYEci+oh^FB@l6QOc1KiOpMeFo(3wF?L9wjh&6jVSmx+mlnP)vnkXOpZ}T|Vir z*Gb+OV8uDoCLGoNbtxv^KO`P~`RB#g?9hdXmgMuzCZzQhirV4>P80fKl3~$mJ}&@= z*r?yf3-JKSu&`e$<38uO<_0LvoYzKy(Yzn{D>R=85B^qB_;pm<_R*hPZNlk&ZKMEt~vsyo4i)^T<{+-sXvGJ3CcjE2L+i7b+cf zN3Pd~pL09z%9EM9dUs7XSemzfP?_@(FhJu=NT8iGR@*N5^e&~GMY7{EERD^9xnvYc z{a2o8Ja!RT3>%10KjaH>iwKXldhm_D(pEpX9f&5ndMdR&WC~$=FM;v0jZA<_C0#a( zv+lm;X&T`{BnPkhElBWC`u&DYOB14@FD7bVTiYZxY3~3d*u&$SGb);7gP^DJdvd04 zTkk(M*;bh>(`na#&T4YknJ+`&j0<`)m0!)`x^#6osUZw6x|#X z25jM#UV$KpL~7g+ZPLD3W^t@mzD@d+Od(FY$HmrGBzwu)ow-!-QK9jWBcl6{7Q?Nz zyzT}TN~Lx$0v&B@>VMvVJ5nLRN*w6{YkhK9B$)C7S5c&8{(Ac~5$J4*bjjy@=8IvJ zvDN$1jlY?YIwnlNgw$UfEBaI~r1E$uT` zXGFc8{HF-7Q!qvCU-J`wU^C{v+P3i}XGS*sQ$@`!l*9%H$EYUrLR2l|!LKu@Cv~@G zQ#?t%R>Yc`{Yqu^T)8D4Ra0~Q#I>zq z4{sa1h{{p+sb_Wk@ZQxxKp~LXX@@Rq8*yTfS!1xn6#XSBL;ld7=v#%3GZT^k#9*R;F9;B`LQ!qbd69hGm#)x<$c-IJO>A`90c8zxysT0s57_Zmm4moe zeezu;<*71opC0t}H85LG*s`5XO{OR59uplIsEb+0q6YI|lsV2~?j9?DB;ccqW@U)~ z4XX-hK=`L@=L<26a*IE(>g-yY$T|G@9q-6uWTJ;HixK9G;NQVjDlN}7kM6jo+2HZX z;>DryD}aoAI$Y9MqNZc5v#{3gwCZxT48J`h2x8V59za?3;|Q1=?@rFHbdfF%A9ikLtFAf{>`im9@=MwT|cM1FZ3yilU`B4M`Z`S(<0*bRA zT$0MqB@Il83-lv<^GN*m9Ft1w=Aw>S#Tp*i^;9x-*D`q?iNL5WE zARsDEl<0qHMm5$X{IknHQ9S5?H_~vfti)EupC2=KjL6xizA$XaybQz6dV$GFu1WFl zog)PpDu)FoS3;AcY);^zirk2hdBgO)`u;~IpaU=7{MnsT`{i($Gy3eRK@*ZZ2Tzn2< zCtL*eHnVZ5O(SC|lb`*9n!B^hm0PUS!n*b`O}D}$NWmEL$WLI;A_;UoJN5HK`OpDo z-arMWWKTsShqY%42T-p*TWkDb3{ZfvH8rfaDXd%oh{|y7OSei4TL+790cd@C?)^+ z%j3c?c1%gRoa(V^o8?0$b#bbys*apry46UyMKLo9K%gB7CBjbT6fn~Kd-YeQ?Pm`w zM^{Ue@?ZZ?bKe=&MAx+q5u`{{Dbhi2q!*=$bOGrl1Vrf|RS2LoA#@Z(M35pv=t%Fq z22fN4=`Hjk(o1LwgiyZmxkY)_L&V7=29v!9-}L`KbfvaIqGBpK^##p8&+kdN%e_!3RF&5wJI!h=4QifG!GEYJI5Kh_#W1Szy0?B0YL zDy|-H?4{fP&_6%&Y&b@l3|*kf$#~`9;8nZR^dncz`4`C>rb?}CGIXTpBj_il$u{D! zHaq?EpPCQt3~?^)2JnwKD|&pOM=T&xj1^CO4B{De%chbno~YiPI#cRr@62H}OKou> z;@DZ^rj6zi)?Lz>CFRwLUOpvRqnlrchGH?YsnuNuk%###7d07-#pWDeUq*+3;VfpO zNc7v@?u<&&qnYCg;HL>kf(E;yILE6dM_j{{3gpTCUIOC@`>2Q6(8GGOrZ~IQ5Rc{1 zC)zkWr_gaLo~F=XZ?@d2wAXQ7y9-XsmMK0pIgAY1M_f0mye*azmu|0>i6wME#8h%7 zco z<7w4lPfVBFayJm!UIt!B3`j4bqAnapqi_pcb1bvp%*a5RGa*-BTu)1CY5ip2b^f*s zQJHo^^}q?m5HEOMS&Vok^syi6vxUHm%z(invAl*tY7PCZuuqe4V(kOQ_dcp)k=qg2 z*(%a!262>pA2)UkM49TUzmX@3)~)oFD$OHc#}u6@YWiuWb2lJ24<$6_-$^*VPe4@i zxm%N?Y&4Ut7K#iF6!>NC;syE;=hAf}Z8XYTzwy`xfGOA~kDu*q88^DMOWklzmpFQ0 zja=&sK1iT{c$c6{$C(vfy)|x6DT> zs4F;K{QR(qD>T-IW7Q7UV?W%q(iDl6DaoxSwM196CnDFK=e#f7oouQ`A9;eqGHEJ1 z+M>h=1z}YZ4!fR9zVK(`loo|hqfwT?I~TZyZ|)^miS_537r>sB(9nqWI4t>IwKsb1 z^|YU0XM1d$0sgtPoFObXKyH%mmKE%r^zp>E1zxee*WRRcEn!Dxv*E`oKD8$gcRs>V z#&O1mkbYiN@7F+IW38*KwS8h8tHQ8R(q{N4Rz_TRb`Zs|wP9`aVa`pCjN`7u&&BaN z4R84;_-y=6NWb%$;+jTlUH9}GRJ30gSq)Xh7YjvdGIwI9ZO$D;Rz@Xv*2PA7fDoCDufFTM$3uz`s9@E~V&#BezjAmUF(0W&&{ zC9FltY?%Qz>=1#B-1+jZfw>rc#-F?7Q&3aI#%xBoE>?y7!nO7e4EdM zwS(y6Y@|WNY&xAFSrd`33#{z|OPQnbv0q0y1Nm*@9lV^tB_FCB8Qbc`K(hW11D17L zU%{F<{L5O)xQGEB^+5!o`Oy|XAp(H6BLJVofxw~fxXOxHVh>3a5$CazH(~j_AhnSq zB0|8t+#lfvIT6^|i;FSwhOfR=SXD**&{Ri-0R45@a#sBfkbSyzMSXr|m z1+2Jrac*wlOMBg#1!-RZ%lp-5FSY4 z!U$snDK65xhu_Fa1L2K1K@0k{8=OobR)~*xDl@J3B7^K1w`hMMuQbYq;ORVH71MjO zB>WynJhTqyAhwKf|=h%xTBdc?XGMR0l4QFpm;!u|l zRuFEB=q#t#Q#dtG%}8#~OQtu|7$mS4wSitcslx+Dw;}sDdBU_~Shs_I-BXDxYTvm@ zwoGxYZStR5+_NA2fe|G7!#nCLu1T8Q_g(BT{pF6YwVD68z+~rhZ!&v{i)`g0^?Mb2 z?hKaM-<>g+P&Z5R4qtKnYR7dO-%~h>N$xEfF=1f3PQX_*TZe#{6)7zf&ut$q;!{W9 zDh=2`Pe>a-NiQb?Z=Wx1X|vrs<^EitmCM(f%9}#5_vd6VtTtFR7cOJnRd(UwW8XlG}HV8aIgd;HT&;|UHCK~M-44{6bbkRoKSjW@**-lw)-rvq9< zX^075xJ`T#s+jQ*9E^25;TNhT2|w-n!$6I_bLnYO-F!?}Ubf0@)30Emr-(MBvy^*Huos(IgPxgqcHMgMnMYpY>huN(0^QD<&|7V zgz0yTmT)}y)F+-11}*87>Nt=EDO6pzBKqCMDk_yJyaklZrlCmU!&4_DBUoumix9bZ z+L<#!Elm!HkE8_OoK6Y)(=mK$IYUJ9+hVVE(juOvT3T z&QyE}s`#$~fzed&MBQ~&lQ=oUej(Id=rlEai~FMQsOpkSdgb1=Qxv3v`Bc6;a;}u= z@~@6qvI)6Pd=09Mwy-9&u+I5&o6{pXDWEH#=Wh3@{qfe*qcpak)_v^I`ipf>e_Ge( zo)LEnbjCXQpVmE#Oa6;>TU2bfs3TVudH(_#1VHi-^Gg06xj*USJG-0<7Yj1%-d`XI zFS6azqq^tu@=p&=k3J~?nNzCxa?vj?|BMbk0qIpamt3~OHR`h;{(Hw4p?DwCpBi%- zo)Uh>MruU>QvUuZ_y5LkDoXqyg{@kx%1i$X$@Kz&3@R;$oN{~Woj_V(0a*V2IN6Tl ze<5|K0LcIU1NZ69Oh^d1=G@%~%f8`TV&z7m9ySwE_}SXXZuuR_N+%jVx`8`8*CR9s zzKBx~a6c9x9()iO;$CenLUz_vOLn0`Z9!rCPgDc-Uc!(PQ)%Radb}X~vTb*wKK#UT zYWx_?*PSUKUhaUaUSRap6eDL8ap{se8kN{F6Ku3>I%#psoas&1)_QjW!=mebNZ*VN z*BIIE%-h#AKvN9&Lq=iy_usGQy}|?a0Y0X*lOcANvu6Z0nhE9ylOv*)*UNI*?&9w8 zcS+AFC(2+#kCV#v4Tda~FrY|7Th=SLT{jv>U6)>r*Sha4Y*cB6+l-4G@MnlD>}cEX^tOTg4A_@?ym%+$$c z1Tl|S-W1e{7xG{{pd+}J@N{J zh||{C9t5OteD0{l{{schf5ZoYjO9$_cLviB7G=fMilsbM{4=Mnts zV_gfsqyDRzE&8=?We6}!g49$|BEl_8!uz|`{#@)lttR~4_*#<)U$JKR!otM!aLiNA zE+drl4HyNhW?q4~g7=htCk=K0Vl4={P)Sf{Ve7ZB#-BJ(aSWnP29zTl2%k+)?gFLjoqnoC}DBYRGGjxan^H zN#k0#cK%iFaa6>Lv|HQ#J(K-OUiHr4n#eL_c9Hs%qfzVyo7IgYo4&Da^JYFaoem)S zs9{%JH_imPA6&f!>Q^~m1yRTd#n>A#SYj5%ryt8=_L%cDcnW7);${4eqFM~cd6eI< zkd_`Ed{&YVQ2B6;(3X00e_VNk#jK}-Fj zSAnE~W^*&EL7H`48NbA)eb(~0LJMjHM@@O=fQ1xPvuS3Cdq(1}m=2E+N>yq`zK?k2 zljj_46DfVGRipx+(JZz^WgWt%`j&^3f&12bj9oG+`A1EkL*{w%;DatGoTg=Goz-GI z)lSr1z@v0(*(FSl@+wk?YDb5q zaVB`nY2*{RT;|)Kt;|&_5~1Y^S%aA>2*<$z;BsFiZyWgF$>k;F= zghPyQ0asp`_m$-NB5GyI+R82q;7i-MIeLrMG>;%SVrQ%3{AbN*H^;XH%a-if&g zQmb5K_*iDfl#-0ld#k=j@!nsVR9G^h-xe0&p4wXtl%_OS`j3bGHq#%JI|Z-OXHiz2 zBviMBcTCI|7*n$EeUT}`nm52s`a4AZhV)CO%cQG(%vD&_rzU5rC1J;n7dniqG$T3P(2Osg@u;{OD3$CmytqZVz|dPPM_?sRG;k z`W#491SY2?Dkuife-_8MJ>yuCZ;zN8NY->-24(T-(4QByChTTDn`^F;4A$V2(V(5e z46`S0ciO=SgHn8by@W2uWjC^lTLmQ8gi44urN5zn7@EXgN+qxisg93xzTtn81%t|D zhB&=QjHctY-zoBVn&8dO-TOWCEw|9@x!Y<_jrHj*U;kwfsH04{eUWn|pT1qGL)r-JDw2g(~?QF!k(qr1{Inf@9_ptkJZNvDG?o zRM$pi1j5^O$O+{y}ebG7)9n?d1y3EXVs@jPuy7dF}Lv4$0jO_3QzD4UT4!<0PTE}r%3s-Gcf3bD=rZV3(ooLW5 z6HoiMZq?sKF_63@@zLJkO(n$R4BGi(u*6fTon8UpiO#ml5|2L4mnRQT5WW7mO0xux zyjG=L=O_Xh+k)gwM*7VI@10_)xhOwGAGWI+sR(+MW>nf`6IsabX=#3D)kbTjv?uwi%JauvZ=Y)r$1JNUE$nQi zE^g;P7|Z7+@7E|OfPb@1wRz#G#`8K)H#5zj>&RnVf98Wpj5xi#N7b1tby1xNJLiWsYLFzu@rTx!(!yJmKN zFW)iLEC>0;qnbZ%(-G>VgrDNUq(T-C(YY?2UPB@NX#ts+|DI@0PrJP`GgkFl$Zc2h zYevV%v^%W+K7EJZmn9aaQ~Vo3>^Ni?r-J zuXuV{w=}Red)##~iCyuHgGTy6;Xe3XL;wYoW+!pga;9RyU10~`Z(3W$^*p3xM^(P4 zVD5R=jVG(E+KJ>2_fr*xR025&?L@3J=5@-&V@jG2kGh<|6`uAg3EL;J97yc#1k*S> zLw9}Z{cW6qWV6h}@(ZTRQsQeP^DFz@s}1Ay?HdfZy0jzT26r*f$cCXIaFk+Q6sd^_ zV`8(wN&o7!O_XerCI5 zXqgkaCr{Cwt{qe)*LHOIlER=5n`+zBv1(3Zk@bckO231HOinFpjee%7yWbc*vbk48 z$+QAXP!paxaOgLpCOu{7IBfqNZI^I~ptx*#VEjF?={_z-4e%86^S3_ESIC`VD^=pg zlMY+EIKpp^sBDdWDYZv>rD~)J`|k(M;~#0)H_WE@hhvhA5~Xq02x>_+qaAYpFkJL6|pNHB+o8X zzv{{b#-F5Av^Z8&xIGVb#R94NYQtLO$%)UgwJTpjTN}z-Ym_I`N4jb81tnRswEq;4 z?*sc{G0XEwUHW=}%uX0hP2I16AF939Y1M32Dw0L+H@+E*E)ZTDK&t!emt(CT#DVnGql0xKmIy0=PS0pa`==IPMhPVlY z569y4150Gz%6jO05Rh^>XYF@CWtdm!{Q+EdY}F>}0&-~E2xEwn@EIKHgOU3}NK$iT zQ-+nXQ_pG!stw})d2F*>@TdY5m_eJ1eA*eya8d&ZEh@q=`+3$k8ML!MPG?%+>OVpb zEB^>P57n=_xlx46trJjF)wOHUOm{6@)YY*7N^u}ox#=t0Ik`^mE)9Ngoc8ZU_o|lc zEya>#pG25IyyLj&bRcjtoPuOyQGG@_RQh(6CsbGWhw;lGlXGiZl>XiynPk1{znHj{ zw@w(2m`X}gno9e6M=&DGgNlPgs=04fIgL}$m6D=#!|KpFGe68y5*P`reVEbZx~TMr zoLbogm4}O9Q=HqnFVWmSV`{A&TO_fv|av58IMqieypi9czwJ@UCe z4!aN%_jw&I2RpkK4F-{lab1a4ms3QzR*y|7gI{WknGA`MioIg)pC$~^vyEA=i*^8; zUsJ=y8ZDLPt#QY$K6V||LRvgcO(|~cc7em~`^KIi9hAM|V@p)!#b~<5-sagxct3%T z#x>~Ic7dBNJPHp|0jmj2!?|!d0-&sa01YR$SZwi(_9I6^Y{SP{NlfB8h_FOUR)9(A!a_YB{sS{pSSP`E4`GLk6&7m`XIkWK#2n-&;yaYgsH z8d`56St>4w|1B{ZG`Dp#uqUhht z*lvCDJZ<*}h>FVs7&{K1EeZFtq5WU%pSz`hI`sP}?HS<1ahsnP2hYs&)7}8a5S@Yl z^)XCLFVRsfJv!R7yzUjL{exW iR$Tlw1*2>OPl#MK?@W;nlXKt!f2vAaip6)#gZ>|Tow)`8 literal 0 HcmV?d00001 diff --git a/docs/images/reference/expression-condition.png b/docs/images/reference/expression-condition.png new file mode 100644 index 0000000000000000000000000000000000000000..08d8b1a8e4b0fea1fa01cd25a4729937473011ec GIT binary patch literal 42350 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 Yrhm;|Requires permission ACCESS_MANAGEMENT

+ operationId: addMapping + requestBody: + content: + '*/*': + schema: + $ref: "#/components/schemas/AclMappingRequest" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/AclMappingRequest" + description: Mapping created successfully + "401": + description: Unauthorized + "404": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Team or project could not be found + "409": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: A mapping with the same team and project already exists + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Adds an ACL mapping + tags: + - acl + /v1/acl/mapping/team/{teamUuid}/project/{projectUuid}: + delete: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_DELETE

+ operationId: deleteMapping + parameters: + - description: The UUID of the team to delete the mapping for + in: path + name: teamUuid + required: true + schema: + type: string + format: uuid + - description: The UUID of the project to delete the mapping for + in: path + name: projectUuid + required: true + schema: + type: string + format: uuid + responses: + "200": + description: Mapping removed successfully + "401": + description: Unauthorized + "404": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Team or project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Removes an ACL mapping + tags: + - acl + /v1/acl/team/{uuid}: + get: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_READ

+ operationId: retrieveProjects + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The UUID of the team to retrieve mappings for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: Optionally excludes inactive projects from being returned + in: query + name: excludeInactive + schema: + type: boolean + - description: Optionally excludes children projects from being returned + in: query + name: onlyRoot + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Project" + description: Projects assigned to the specified team + headers: + X-Total-Count: + description: The total number of projects + schema: + format: integer + style: simple + "401": + description: Unauthorized + "404": + description: The UUID of the team could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns the projects assigned to the specified team + tags: + - acl + /v1/analysis: + get: + description:

Requires permission VIEW_VULNERABILITY

+ operationId: retrieveAnalysis + parameters: + - description: The UUID of the project + in: query + name: project + schema: + type: string + format: uuid + - description: The UUID of the component + in: query + name: component + required: true + schema: + type: string + format: uuid + - description: The UUID of the vulnerability + in: query + name: vulnerability + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Analysis" + description: An analysis trail + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: "The project, component, or vulnerability could not be found" + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Retrieves an analysis trail + tags: + - analysis + put: + description:

Requires permission VULNERABILITY_ANALYSIS + or VULNERABILITY_ANALYSIS_UPDATE

+ operationId: updateAnalysis + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/AnalysisRequest" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Analysis" + description: The created analysis + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: "The project, component, or vulnerability could not be found" + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Records an analysis decision + tags: + - analysis + /v1/badge/violations/project/{name}/{version}: + get: + operationId: getProjectPolicyViolationsBadge_1 + parameters: + - description: The name of the project to query on + in: path + name: name + required: true + schema: + type: string + - description: The version of the project to query on + in: path + name: version + required: true + schema: + type: string + responses: + "200": + content: + image/svg+xml: + schema: + type: string + description: A badge displaying current policy violation metrics of a project + in SVG format + "403": + description: Badges are disabled + "404": + description: The project could not be found + summary: Returns a policy violations badge for a specific project + tags: + - badge + /v1/badge/violations/project/{uuid}: + get: + operationId: getProjectPolicyViolationsBadge + parameters: + - description: The UUID of the project to retrieve a badge for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + image/svg+xml: + schema: + type: string + description: A badge displaying current policy violation metrics of a project + in SVG format + "403": + description: Badges are disabled + "404": + description: The project could not be found + summary: Returns a policy violations badge for a specific project + tags: + - badge + /v1/badge/vulns/project/{name}/{version}: + get: + operationId: getProjectVulnerabilitiesBadge_1 + parameters: + - description: The name of the project to query on + in: path + name: name + required: true + schema: + type: string + - description: The version of the project to query on + in: path + name: version + required: true + schema: + type: string + responses: + "200": + content: + image/svg+xml: + schema: + type: string + description: A badge displaying current vulnerability metrics for a project + in SVG format + "403": + description: Badges are disabled + "404": + description: The project could not be found + summary: Returns current metrics for a specific project + tags: + - badge + /v1/badge/vulns/project/{uuid}: + get: + operationId: getProjectVulnerabilitiesBadge + parameters: + - description: The UUID of the project to retrieve metrics for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + image/svg+xml: + schema: + type: string + description: A badge displaying current vulnerability metrics for a project + in SVG format + "403": + description: Badges are disabled + "404": + description: The project could not be found + summary: Returns current metrics for a specific project + tags: + - badge + /v1/bom: + post: + description: |- +

+ Expects CycloneDX and a valid project UUID. If a UUID is not specified, + then the projectName and projectVersion must be specified. + Optionally, if autoCreate is specified and true and the project does not exist, + the project will be created. In this scenario, the principal making the request will + additionally need the PORTFOLIO_MANAGEMENT, PORTFOLIO_MANAGEMENT_CREATE, + or PROJECT_CREATION_UPLOAD permission. +

+

+ MediaType supported for BOM artifact is 'application/xml', 'application/json' or 'application/x.vnd.cyclonedx+protobuf'. + The BOM will be validated against the CycloneDX schema. If schema validation fails, + a response with problem details in RFC 9457 format will be returned. In this case, + the response's content type will be application/problem+json. +

+

Requires permission BOM_UPLOAD

+ operationId: UploadBom + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + autoCreate: + type: boolean + default: false + bom: + type: string + isLatest: + type: boolean + default: false + parentName: + type: string + parentUUID: + type: string + parentVersion: + type: string + project: + type: string + projectName: + type: string + projectTags: + type: string + projectVersion: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/BomUploadResponse" + description: Token to be used for checking BOM processing progress + "400": + description: The uploaded BOM is invalid + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Upload a supported bill of material format document + tags: + - bom + put: + description: |- +

+ Expects CycloneDX and a valid project UUID. If a UUID is not specified, + then the projectName and projectVersion must be specified. + Optionally, if autoCreate is specified and true and the project does not exist, + the project will be created. In this scenario, the principal making the request will + additionally need the PORTFOLIO_MANAGEMENT, PORTFOLIO_MANAGEMENT_CREATE, + or PROJECT_CREATION_UPLOAD permission. +

+

+ The BOM will be validated against the CycloneDX schema. If schema validation fails, + a response with problem details in RFC 9457 format will be returned. In this case, + the response's content type will be application/problem+json. +

+

+ The maximum allowed length of the bom value is 20'000'000 characters. + When uploading large BOMs, the POST endpoint is preferred, + as it does not have this limit. +

+

Requires permission BOM_UPLOAD

+ operationId: UploadBomBase64Encoded + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/BomSubmitRequest" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/BomUploadResponse" + description: Token to be used for checking BOM processing progress + "400": + description: The uploaded BOM is invalid + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Upload a supported bill of material format document + tags: + - bom + /v1/bom/cyclonedx/component/{uuid}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: exportComponentAsCycloneDx + parameters: + - description: The UUID of the component to export + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: The format to output (defaults to JSON) + in: query + name: format + schema: + type: string + - description: "The CycloneDX Spec variant exported (defaults to: '1.5')" + in: query + name: version + schema: + type: string + responses: + "200": + content: + application/vnd.cyclonedx+json: + schema: + type: string + application/vnd.cyclonedx+xml: + schema: + type: string + description: Dependency metadata for a specific component in CycloneDX format + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The component could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns dependency metadata for a specific component in CycloneDX format + tags: + - bom + /v1/bom/cyclonedx/project/{uuid}: + get: + description: | +

Requires permission VIEW_PORTFOLIO

+

+ The withVulnerabilities and vdr variants + further require any of the following permissions: +

    +
  • VIEW_VULNERABILITY
  • +
  • VULNERABILITY_ANALYSIS
  • +
  • VULNERABILITY_ANALYSIS_READ
  • +
+

+ operationId: exportProjectAsCycloneDx + parameters: + - description: The UUID of the project to export + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: The format to output (defaults to JSON) + in: query + name: format + schema: + type: string + - description: Specifies the CycloneDX variant to export. Value options are + 'inventory' and 'withVulnerabilities'. (defaults to 'inventory') + in: query + name: variant + schema: + type: string + - description: Force the resulting BOM to be downloaded as a file (defaults + to 'false') + in: query + name: download + schema: + type: boolean + - description: "The CycloneDX Spec variant exported (defaults to: '1.5')" + in: query + name: version + schema: + type: string + responses: + "200": + content: + application/octet-stream: + schema: + type: string + application/vnd.cyclonedx+json: + schema: + type: string + application/vnd.cyclonedx+xml: + schema: + type: string + description: Dependency metadata for a project in CycloneDX format + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns dependency metadata for a project in CycloneDX format + tags: + - bom + /v1/calculator/cvss: + get: + operationId: getCvssScores + parameters: + - description: A valid CVSSv2 or CVSSv3 vector + in: query + name: vector + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Score" + description: The calculated scores + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: "Returns the CVSS base score, impact sub-score and exploitability sub-score" + tags: + - calculator + /v1/calculator/owasp: + get: + operationId: getOwaspRRScores + parameters: + - description: A valid OWASP Risk Rating vector + in: query + name: vector + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Score" + description: The calculated scores + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: "Returns the OWASP Risk Rating likelihood score, technical impact score\ + \ and business impact score" + tags: + - calculator + /v1/component: + post: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_UPDATE

+ operationId: updateComponent + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Component" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Component" + description: The updated component + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The UUID of the component could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates a component + tags: + - component + /v1/component/hash/{hash}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getComponentByHash + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: "The MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-384,\ + \ SHA3-512, BLAKE2b-256, BLAKE2b-384, BLAKE2b-512, or BLAKE3 hash of the\ + \ component to retrieve" + in: path + name: hash + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Component" + description: A list of components that have the specified hash value + headers: + X-Total-Count: + description: The total number of components + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of components that have the specified hash value + tags: + - component + /v1/component/identity: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getComponentByIdentity + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The group of the component + in: query + name: group + schema: + type: string + - description: The name of the component + in: query + name: name + schema: + type: string + - description: The version of the component + in: query + name: version + schema: + type: string + - description: The purl of the component + in: query + name: purl + schema: + type: string + - description: The cpe of the component + in: query + name: cpe + schema: + type: string + - description: The swidTagId of the component + in: query + name: swidTagId + schema: + type: string + - description: The project the component belongs to + in: query + name: project + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Component" + description: A list of components that have the specified component identity + headers: + X-Total-Count: + description: The total number of components + schema: + format: integer + style: simple + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: "Returns a list of components that have the specified component identity.\ + \ This resource accepts coordinates (group, name, version) or purl, cpe, or\ + \ swidTagId" + tags: + - component + /v1/component/internal/identify: + get: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_READ

+ operationId: identifyInternalComponents + responses: + "204": + description: Identification requested successfully + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Requests the identification of internal components in the portfolio + tags: + - component + /v1/component/project/{projectUuid}/dependencyGraph/{componentUuids}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getDependencyGraphForComponent + parameters: + - description: The UUID of the project to get the expanded dependency graph + for + in: path + name: projectUuid + required: true + schema: + type: string + format: uuid + - description: List of UUIDs of the components (separated by |) to get the expanded + dependency graph for + in: path + name: componentUuids + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + type: object + description: The expanded dependency graph to every occurrence of a component + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: |- + - The UUID of the project could not be found + - The UUID of the component could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns the expanded dependency graph to every occurrence of a component + tags: + - component + /v1/component/project/{uuid}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getAllComponents + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The UUID of the project to retrieve components for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: Optionally exclude recent components so only outdated components + are returned + in: query + name: onlyOutdated + schema: + type: boolean + - description: Optionally exclude transitive dependencies so only direct dependencies + are returned + in: query + name: onlyDirect + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Component" + description: A list of all components for a given project + headers: + X-Total-Count: + description: The total number of components + schema: + format: integer + style: simple + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all components for a given project + tags: + - component + put: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_UPDATE

+ operationId: createComponent + parameters: + - description: The UUID of the project to create a component for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Component" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/Component" + description: The created component + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new component + tags: + - component + /v1/component/{uuid}: + delete: + description:

Requires permission PORTFOLIO_MANAGEMENT

+ operationId: deleteComponent + parameters: + - description: The UUID of the component to delete + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Component removed successfully + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The UUID of the component could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a component + tags: + - component + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getComponentByUuid + parameters: + - description: The UUID of the component to retrieve + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: Optionally includes third-party metadata about the component + from external repositories + in: query + name: includeRepositoryMetaData + schema: + type: boolean + - in: query + name: includeIntegrityMetaData + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Component" + description: A component + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The component could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a specific component + tags: + - component + /v1/component/{uuid}/occurrence: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getOccurrences + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ComponentOccurrence" + description: The occurrences of a component + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Component could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns the occurrences of a component + tags: + - component + /v1/component/{uuid}/property: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getProperties + parameters: + - description: The UUID of the component to retrieve properties for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ComponentProperty" + description: A list of all properties for the specified component + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all properties for the specified component + tags: + - componentProperty + put: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_CREATE

+ operationId: createProperty + parameters: + - description: The UUID of the component to create a property for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ComponentProperty" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/ComponentProperty" + description: The created component + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The component could not be found + "409": + description: A property with the specified component/group/name combination + already exists + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new component property + tags: + - componentProperty + /v1/component/{uuid}/property/{propertyUuid}: + delete: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_DELETE

+ operationId: deleteProperty + parameters: + - description: The UUID of the component to delete a property from + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: The UUID of the component property to delete + in: path + name: propertyUuid + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Property removed successfully + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The component or component property could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a config property + tags: + - componentProperty + /v1/configProperty: + get: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_READ

+ operationId: getConfigProperties + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ConfigProperty" + description: A list of all ConfigProperties for the specified groupName + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all ConfigProperties for the specified groupName + tags: + - configProperty + post: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_UPDATE

+ operationId: updateConfigProperty + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ConfigProperty" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ConfigProperty" + description: The updated config property + "401": + description: Unauthorized + "404": + description: The config property could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates a config property + tags: + - configProperty + /v1/configProperty/aggregate: + post: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_UPDATE

+ operationId: updateConfigProperty_1 + requestBody: + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ConfigProperty" + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ConfigProperty" + description: The updated config properties + "401": + description: Unauthorized + "404": + description: One or more config properties could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates an array of config properties + tags: + - configProperty + /v1/configProperty/public/{groupName}/{propertyName}: + get: + description:

+ operationId: getPublicConfigProperty + parameters: + - description: The group name of the value to retrieve + in: path + name: groupName + required: true + schema: + type: string + - description: The property name of the value to retrieve + in: path + name: propertyName + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ConfigProperty" + description: Public ConfigProperty returned + "403": + description: This is not a public visible ConfigProperty + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a public ConfigProperty + tags: + - configProperty + /v1/cwe: + get: + description: Returns a list of all CWEs + operationId: getCwes + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Cwe" + description: A list of all CWEs + headers: + X-Total-Count: + description: The total number of CWEs + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + tags: + - cwe + /v1/cwe/{cweId}: + get: + operationId: getCwe + parameters: + - description: The CWE ID of the CWE to retrieve + in: path + name: cweId + required: true + schema: + type: integer + format: int32 + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Cwe" + description: A CWE matching the provided ID + "401": + description: Unauthorized + "404": + description: The CWE could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a specific CWE + tags: + - cwe + /v1/dependencyGraph/component/{uuid}/directDependencies: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getComponentsAndServicesByComponentUuid + parameters: + - description: The UUID of the component + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/DependencyGraphResponse" + description: A list of specific components and services from component UUID + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: Any component can be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of specific components and services from component UUID + tags: + - dependencyGraph + /v1/dependencyGraph/project/{uuid}/directDependencies: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getComponentsAndServicesByProjectUuid + parameters: + - description: The UUID of the project + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/DependencyGraphResponse" + description: A list of specific components and services from project UUID + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: Any component can be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of specific components and services from project UUID + tags: + - dependencyGraph + /v1/event/token/{uuid}: + get: + description: |- +

+ This endpoint is intended to be used in conjunction with other API calls which return a token for asynchronous tasks. + The token can then be queried using this endpoint to determine if the task is complete: +

    +
  • A value of true indicates processing is occurring.
  • +
  • A value of false indicates that no processing is occurring for the specified token.
  • +
+ However, a value of false also does not confirm the token is valid, + only that no processing is associated with the specified token. +

+ operationId: isTokenBeingProcessed + parameters: + - description: The UUID of the token to query + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/IsTokenBeingProcessedResponse" + description: The processing status of the provided token + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: "Determines if there are any tasks associated with the token that are\ + \ being processed, or in the queue to be processed." + tags: + - event + /v1/finding: + get: + description:

Requires permission VIEW_VULNERABILITY

+ operationId: getAllFindings_1 + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: Show inactive projects + in: query + name: showInactive + schema: + type: boolean + - description: Show suppressed findings + in: query + name: showSuppressed + schema: + type: boolean + - description: Filter by severity + in: query + name: severity + schema: + type: string + - description: Filter by analysis status + in: query + name: analysisStatus + schema: + type: string + - description: Filter by vendor response + in: query + name: vendorResponse + schema: + type: string + - description: Filter published from this date + in: query + name: publishDateFrom + schema: + type: string + - description: Filter published to this date + in: query + name: publishDateTo + schema: + type: string + - description: Filter attributed on from this date + in: query + name: attributedOnDateFrom + schema: + type: string + - description: Filter attributed on to this date + in: query + name: attributedOnDateTo + schema: + type: string + - description: Filter the text input in these fields + in: query + name: textSearchField + schema: + type: string + - description: Filter by this text input + in: query + name: textSearchInput + schema: + type: string + - description: Filter CVSSv2 from this value + in: query + name: cvssv2From + schema: + type: string + - description: Filter CVSSv2 from this Value + in: query + name: cvssv2To + schema: + type: string + - description: Filter CVSSv3 from this value + in: query + name: cvssv3From + schema: + type: string + - description: Filter CVSSv3 from this Value + in: query + name: cvssv3To + schema: + type: string + - description: Filter EPSS from this value + in: query + name: epssFrom + schema: + type: string + - description: Filter EPSS to this value + in: query + name: epssTo + schema: + type: string + - description: Filter EPSS Percentile from this value + in: query + name: epssPercentileFrom + schema: + type: string + - description: Filter EPSS Percentile to this value + in: query + name: epssPercentileTo + schema: + type: string + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Finding" + description: A list of all findings + headers: + X-Total-Count: + description: The total number of findings + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all findings + tags: + - finding + /v1/finding/grouped: + get: + description:

Requires permission VIEW_VULNERABILITY

+ operationId: getAllFindings + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: Show inactive projects + in: query + name: showInactive + schema: + type: boolean + - description: Filter by severity + in: query + name: severity + schema: + type: string + - description: Filter published from this date + in: query + name: publishDateFrom + schema: + type: string + - description: Filter published to this date + in: query + name: publishDateTo + schema: + type: string + - description: Filter the text input in these fields + in: query + name: textSearchField + schema: + type: string + - description: Filter by this text input + in: query + name: textSearchInput + schema: + type: string + - description: Filter CVSSv2 from this value + in: query + name: cvssv2From + schema: + type: string + - description: Filter CVSSv2 to this value + in: query + name: cvssv2To + schema: + type: string + - description: Filter CVSSv3 from this value + in: query + name: cvssv3From + schema: + type: string + - description: Filter CVSSv3 to this value + in: query + name: cvssv3To + schema: + type: string + - description: Filter EPSS from this value + in: query + name: epssFrom + schema: + type: string + - description: Filter EPSS to this value + in: query + name: epssTo + schema: + type: string + - description: Filter EPSS Percentile from this value + in: query + name: epssPercentileFrom + schema: + type: string + - description: Filter EPSS Percentile to this value + in: query + name: epssPercentileTo + schema: + type: string + - description: Filter occurrences in projects from this value + in: query + name: occurrencesFrom + schema: + type: string + - description: Filter occurrences in projects to this value + in: query + name: occurrencesTo + schema: + type: string + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Finding" + description: A list of all findings grouped by vulnerability + headers: + X-Total-Count: + description: The total number of findings + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all findings grouped by vulnerability + tags: + - finding + /v1/finding/portfolio/analyze: + post: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_CREATE

+ operationId: analyzePortfolio + responses: + "200": + description: Analysis triggered successfully + "304": + description: Analysis is already in progress + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Triggers Vulnerability Analysis for the entire portfolio + tags: + - finding + /v1/finding/project/{uuid}: + get: + description:

Requires permission VIEW_VULNERABILITY

+ operationId: getFindingsByProject + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The UUID of the project + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: Optionally includes suppressed findings + in: query + name: suppressed + schema: + type: boolean + - description: Optionally limit findings to specific sources of vulnerability + intelligence + in: query + name: source + schema: + type: string + enum: + - NVD + - NPM + - GITHUB + - VULNDB + - OSSINDEX + - RETIREJS + - INTERNAL + - OSV + - SNYK + - CSAF + - in: header + name: accept + schema: + type: string + - description: Whether to include only projects with existing analysis. + in: query + name: hasAnalysis + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Finding" + application/sarif+json: + schema: + type: string + description: "A list of all findings for a specific project, or a SARIF\ + \ file" + headers: + X-Total-Count: + description: The total number of findings + schema: + format: integer + style: simple + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: "Returns a list of all findings for a specific project or generates\ + \ SARIF file if Accept: application/sarif+json header is provided" + tags: + - finding + /v1/finding/project/{uuid}/analyze: + post: + description:

Requires permission VULNERABILITY_ANALYSIS

+ operationId: analyzeProject + parameters: + - description: The UUID of the project to analyze + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/BomUploadResponse" + description: Token to be used for checking analysis progress + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Triggers Vulnerability Analysis on a specific project + tags: + - finding + /v1/finding/project/{uuid}/export: + get: + description:

Requires permission VIEW_VULNERABILITY

+ operationId: exportFindingsByProject + parameters: + - description: The UUID of the project + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + type: string + description: The findings for the specified project as FPF + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns the findings for the specified project as FPF + tags: + - finding + /v1/ldap/groups: + get: + description: |- +

+ This API performs a pass-through query to the configured LDAP server. + Search criteria results are cached using default Alpine CacheManager policy. +

+

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_READ

+ operationId: retrieveLdapGroups + responses: + "200": + content: + application/json: + schema: + type: array + items: + type: string + description: DNs of all accessible groups within the directory + headers: + X-Total-Count: + description: The total number of ldap groups that match the specified + search criteria + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns the DNs of all accessible groups within the directory + tags: + - ldap + /v1/ldap/mapping: + put: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_CREATE

+ operationId: addMapping_1 + requestBody: + content: + '*/*': + schema: + $ref: "#/components/schemas/MappedLdapGroupRequest" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/MappedLdapGroup" + description: The created mapping + "401": + description: Unauthorized + "404": + description: The UUID of the team could not be found + "409": + description: A mapping with the same team and dn already exists + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Adds a mapping + tags: + - ldap + /v1/ldap/mapping/{uuid}: + delete: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_DELETE

+ operationId: deleteMapping_1 + parameters: + - description: The UUID of the mapping to delete + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Mapping removed successfully + "401": + description: Unauthorized + "404": + description: The UUID of the mapping could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Removes a mapping + tags: + - ldap + /v1/ldap/team/{uuid}: + get: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_READ

+ operationId: retrieveLdapGroups_1 + parameters: + - description: The UUID of the team to retrieve mappings for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/MappedLdapGroup" + description: DNs of all groups mapped to the specified team + "401": + description: Unauthorized + "404": + description: The UUID of the team could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns the DNs of all groups mapped to the specified team + tags: + - ldap + /v1/license: + get: + operationId: getLicenses + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/License" + description: A list of all licenses with complete metadata for each license + headers: + X-Total-Count: + description: The total number of licenses + schema: + format: integeger + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all licenses with complete metadata for each license + tags: + - license + put: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_CREATE

+ operationId: createLicense + requestBody: + content: + '*/*': + schema: + $ref: "#/components/schemas/License" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/License" + description: The created license + "401": + description: Unauthorized + "409": + description: A license with the specified ID already exists. + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new custom license + tags: + - license + /v1/license/concise: + get: + operationId: getLicenseListing + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/License" + description: A concise listing of all licenses + headers: + X-Total-Count: + description: The total number of licenses + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a concise listing of all licenses + tags: + - license + /v1/license/{licenseId}: + delete: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_DELETE

+ operationId: deleteLicense + parameters: + - description: The SPDX License ID of the license to delete + in: path + name: licenseId + required: true + schema: + type: string + responses: + "204": + description: License removed successfully + "401": + description: Unauthorized + "404": + description: The license could not be found + "409": + description: Only custom licenses can be deleted. + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a custom license + tags: + - license + get: + operationId: getLicense + parameters: + - description: The SPDX License ID of the license to retrieve + in: path + name: licenseId + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/License" + description: A specific license + "401": + description: Unauthorized + "404": + description: The license could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a specific license + tags: + - license + /v1/licenseGroup: + get: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_READ

+ operationId: getLicenseGroups + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/LicenseGroup" + description: A list of all license groups + headers: + X-Total-Count: + description: The total number of license groups + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all license groups + tags: + - licenseGroup + post: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_UPDATE

+ operationId: updateLicenseGroup + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/LicenseGroup" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LicenseGroup" + description: The updated license group + "401": + description: Unauthorized + "404": + description: The license group could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates a license group + tags: + - licenseGroup + put: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_CREATE

+ operationId: createLicenseGroup + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/LicenseGroup" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/LicenseGroup" + description: The created license group + "401": + description: Unauthorized + "409": + description: A license group with the specified name already exists + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new license group + tags: + - licenseGroup + /v1/licenseGroup/{uuid}: + delete: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_DELETE

+ operationId: deleteLicenseGroup + parameters: + - description: The UUID of the license group to delete + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "204": + description: License group removed successfully + "401": + description: Unauthorized + "404": + description: The UUID of the license group could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a license group + tags: + - licenseGroup + get: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_READ

+ operationId: getLicenseGroup + parameters: + - description: The UUID of the license group to retrieve + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LicenseGroup" + description: A specific license group + "401": + description: Unauthorized + "404": + description: The license group could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a specific license group + tags: + - licenseGroup + /v1/licenseGroup/{uuid}/license/{licenseUuid}: + delete: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_UPDATE

+ operationId: removeLicenseFromLicenseGroup + parameters: + - description: A valid license group + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: A valid license + in: path + name: licenseUuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LicenseGroup" + description: The updated license group + "304": + description: The license is not a member with the license group + "401": + description: Unauthorized + "404": + description: The license group or license could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Removes the license from the license group. + tags: + - licenseGroup + post: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_UPDATE

+ operationId: addLicenseToLicenseGroup + parameters: + - description: A valid license group + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: A valid license + in: path + name: licenseUuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LicenseGroup" + description: The updated license group + "304": + description: The license group already has the specified license assigned + "401": + description: Unauthorized + "404": + description: The license group or license could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Adds the license to the specified license group. + tags: + - licenseGroup + /v1/metrics/component/{uuid}/current: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getComponentCurrentMetrics + parameters: + - description: The UUID of the component to retrieve metrics for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/DependencyMetrics" + description: Current metrics for a specific component + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested component is forbidden + "404": + description: The component could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns current metrics for a specific component + tags: + - metrics + /v1/metrics/component/{uuid}/days/{days}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getComponentMetricsXDays + parameters: + - description: The UUID of the component to retrieve metrics for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: The number of days back to retrieve metrics for + in: path + name: days + required: true + schema: + type: integer + format: int32 + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/DependencyMetrics" + description: X days of historical metrics for a specific component + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested component is forbidden + "404": + description: The component could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns X days of historical metrics for a specific component + tags: + - metrics + /v1/metrics/component/{uuid}/refresh: + get: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_UPDATE

+ operationId: RefreshComponentMetrics + parameters: + - description: The UUID of the component to refresh metrics on + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + description: Refresh requested successfully + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested component is forbidden + "404": + description: The component could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Requests a refresh of a specific components metrics + tags: + - metrics + /v1/metrics/component/{uuid}/since/{date}: + get: + description: |- +

Date format must be YYYYMMDD

+

Requires permission VIEW_PORTFOLIO

+ operationId: getComponentMetricsSince + parameters: + - description: The UUID of the component to retrieve metrics for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: The start date to retrieve metrics for + in: path + name: date + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/DependencyMetrics" + description: Historical metrics for a specific component from a specific + date + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested component is forbidden + "404": + description: The component could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns historical metrics for a specific component from a specific + date + tags: + - metrics + /v1/metrics/portfolio/current: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getPortfolioCurrentMetrics + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/PortfolioMetrics" + description: Current metrics for the entire portfolio + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns current metrics for the entire portfolio + tags: + - metrics + /v1/metrics/portfolio/refresh: + get: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_UPDATE

+ operationId: RefreshPortfolioMetrics + responses: + "200": + description: Refresh requested successfully + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Requests a refresh of the portfolio metrics + tags: + - metrics + /v1/metrics/portfolio/since/{date}: + get: + description: |- +

Date format must be YYYYMMDD

+

Requires permission VIEW_PORTFOLIO

+ operationId: getPortfolioMetricsSince + parameters: + - description: The start date to retrieve metrics for + in: path + name: date + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/PortfolioMetrics" + description: Historical metrics for the entire portfolio from a specific + date + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns historical metrics for the entire portfolio from a specific + date + tags: + - metrics + /v1/metrics/portfolio/{days}/days: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getPortfolioMetricsXDays + parameters: + - description: The number of days back to retrieve metrics for + in: path + name: days + required: true + schema: + type: integer + format: int32 + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/PortfolioMetrics" + description: X days of historical metrics for the entire portfolio + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns X days of historical metrics for the entire portfolio + tags: + - metrics + /v1/metrics/project/{uuid}/current: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getProjectCurrentMetrics + parameters: + - description: The UUID of the project to retrieve metrics for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ProjectMetrics" + description: Current metrics for a specific project + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns current metrics for a specific project + tags: + - metrics + /v1/metrics/project/{uuid}/days/{days}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getProjectMetricsXDays + parameters: + - description: The UUID of the project to retrieve metrics for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: The number of days back to retrieve metrics for + in: path + name: days + required: true + schema: + type: integer + format: int32 + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ProjectMetrics" + description: X days of historical metrics for a specific project + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns X days of historical metrics for a specific project + tags: + - metrics + /v1/metrics/project/{uuid}/refresh: + get: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_UPDATE

+ operationId: RefreshProjectMetrics + parameters: + - description: The UUID of the project to refresh metrics on + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + description: Refresh requested successfully + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Requests a refresh of a specific projects metrics + tags: + - metrics + /v1/metrics/project/{uuid}/since/{date}: + get: + description: |- +

Date format must be YYYYMMDD

+

Requires permission VIEW_PORTFOLIO

+ operationId: getProjectMetricsSince + parameters: + - description: The UUID of the project to retrieve metrics for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: The start date to retrieve metrics for + in: path + name: date + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ProjectMetrics" + description: Historical metrics for a specific project from a specific date + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns historical metrics for a specific project from a specific date + tags: + - metrics + /v1/metrics/vulnerability: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getVulnerabilityMetrics + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/VulnerabilityMetrics" + description: The sum of all vulnerabilities in the database by year and + month + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns the sum of all vulnerabilities in the database by year and + month + tags: + - metrics + /v1/notification/publisher: + get: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_READ

+ operationId: getAllNotificationPublishers + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/NotificationPublisher" + description: A list of all notification publishers + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all notification publishers + tags: + - notification + post: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_UPDATE

+ operationId: updateNotificationPublisher + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UpdateNotificationPublisherRequest" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationPublisher" + description: The updated notification publisher + "400": + description: Invalid notification class or trying to modify a default publisher + "401": + description: Unauthorized + "404": + description: The notification publisher could not be found + "409": + description: Conflict with an existing publisher's name + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates a notification publisher + tags: + - notification + put: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_CREATE

+ operationId: createNotificationPublisher + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CreateNotificationPublisherRequest" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationPublisher" + description: The created notification publisher + "400": + description: Invalid notification class or trying to modify a default publisher + "401": + description: Unauthorized + "409": + description: Conflict with an existing publisher's name + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new notification publisher + tags: + - notification + /v1/notification/publisher/test/{uuid}: + post: + description:

Requires permission SYSTEM_CONFIGURATION

+ operationId: testNotificationRule + parameters: + - description: The UUID of the rule to test + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + description: Test notification dispatched successfully + "401": + description: Unauthorized + "404": + description: Notification rule not found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Dispatches a rule notification test + tags: + - notification + /v1/notification/publisher/{notificationPublisherUuid}: + delete: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_DELETE

+ operationId: deleteNotificationPublisher + parameters: + - description: The UUID of the notification publisher to delete + in: path + name: notificationPublisherUuid + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Notification publisher removed successfully + "400": + description: Deleting a default notification publisher is forbidden + "401": + description: Unauthorized + "404": + description: The UUID of the notification publisher could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a notification publisher and all related notification rules + tags: + - notification + /v1/notification/publisher/{uuid}/configSchema: + get: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_READ

+ operationId: getNotificationPublisherConfigSchema + parameters: + - in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + type: string + additionalProperties: true + description: Publisher config JSON schema + "204": + description: Publisher has no configuration + "401": + description: Unauthorized + "404": + description: The UUID of the notification publisher could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Get notification publisher config schema + tags: + - notification + /v1/notification/rule: + delete: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_DELETE

+ operationId: deleteNotificationRule + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationRule" + responses: + "204": + description: Notification rule removed successfully + "401": + description: Unauthorized + "404": + description: The UUID of the notification rule could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a notification rule + tags: + - notification + get: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_READ

+ operationId: getAllNotificationRules + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The notification trigger type to filter on + in: query + name: triggerType + schema: + type: string + enum: + - EVENT + - SCHEDULE + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/NotificationRule" + description: A list of all notification rules + headers: + X-Total-Count: + description: The total number of notification rules + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all notification rules + tags: + - notification + post: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_UPDATE

+ operationId: updateNotificationRule + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UpdateNotificationRuleRequest" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationRule" + description: The updated notification rule + "400": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/InvalidNotificationFilterExpressionProblemDetails" + description: Invalid filter expression + "401": + description: Unauthorized + "404": + description: The UUID of the notification rule could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates a notification rule + tags: + - notification + put: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_CREATE

+ operationId: createNotificationRule + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CreateNotificationRuleRequest" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationRule" + description: The created notification rule + "401": + description: Unauthorized + "404": + description: The UUID of the notification publisher could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new notification rule + tags: + - notification + /v1/notification/rule/scheduled: + put: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_CREATE

+ operationId: createScheduledNotificationRule + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CreateScheduledNotificationRuleRequest" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationRule" + description: The created scheduled notification rule + "401": + description: Unauthorized + "404": + description: The UUID of the notification publisher could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new scheduled notification rule + tags: + - notification + /v1/notification/rule/{ruleUuid}/project/{projectUuid}: + delete: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_DELETE

+ operationId: removeProjectFromRule + parameters: + - description: The UUID of the rule to remove the project from + in: path + name: ruleUuid + required: true + schema: + type: string + format: uuid + - description: The UUID of the project to remove from the rule + in: path + name: projectUuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationRule" + description: The updated notification rule + "304": + description: The rule does not have the specified project assigned + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The notification rule or project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Removes a project from a notification rule + tags: + - notification + post: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_UPDATE

+ operationId: addProjectToRule + parameters: + - description: The UUID of the rule to add a project to + in: path + name: ruleUuid + required: true + schema: + type: string + format: uuid + - description: The UUID of the project to add to the rule + in: path + name: projectUuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationRule" + description: The updated notification rule + "304": + description: The rule already has the specified project assigned + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The notification rule or project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Adds a project to a notification rule + tags: + - notification + /v1/notification/rule/{ruleUuid}/team/{teamUuid}: + delete: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_DELETE

+ operationId: removeTeamFromRule + parameters: + - description: The UUID of the rule to remove the project from + in: path + name: ruleUuid + required: true + schema: + type: string + format: uuid + - description: The UUID of the project to remove from the rule + in: path + name: teamUuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationRule" + description: The updated notification rule + "304": + description: The rule does not have the specified team assigned + "401": + description: Unauthorized + "404": + description: The notification rule or team could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Removes a team from a notification rule + tags: + - notification + post: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_UPDATE

+ operationId: addTeamToRule + parameters: + - description: The UUID of the rule to add a team to + in: path + name: ruleUuid + required: true + schema: + type: string + format: uuid + - description: The UUID of the team to add to the rule + in: path + name: teamUuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationRule" + description: The updated notification rule + "304": + description: The rule already has the specified team assigned + "401": + description: Unauthorized + "404": + description: The notification rule or team could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Adds a team to a notification rule + tags: + - notification + /v1/oidc/available: + get: + operationId: isAvailable + responses: + "200": + content: + text/plain: + schema: + type: boolean + description: Whether OpenID Connect is available + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Indicates if OpenID Connect is available for this application + tags: + - oidc + /v1/oidc/group: + get: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_READ

+ operationId: retrieveGroups + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/OidcGroup" + description: A list of all groups + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all groups + tags: + - oidc + post: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

+ operationId: updateGroup + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/OidcGroup" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/OidcGroup" + description: The updated group + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates group + tags: + - oidc + put: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_CREATE

+ operationId: createGroup + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/OidcGroup" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/OidcGroup" + description: The created group + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates group + tags: + - oidc + /v1/oidc/group/{groupUuid}/team/{teamUuid}/mapping: + delete: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_DELETE

+ operationId: deleteMapping_2 + parameters: + - description: The UUID of the group to delete a mapping for + in: path + name: groupUuid + required: true + schema: + type: string + format: uuid + - description: The UUID of the team to delete a mapping for + in: path + name: teamUuid + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Mapping removed successfully + "401": + description: Unauthorized + "404": + description: The UUID of the mapping could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a mapping + tags: + - oidc + /v1/oidc/group/{uuid}: + delete: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_DELETE

+ operationId: deleteGroup + parameters: + - description: The UUID of the group to delete + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Group removed successfully + "401": + description: Unauthorized + "404": + description: The group could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a group + tags: + - oidc + /v1/oidc/group/{uuid}/team: + get: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_READ

+ operationId: retrieveTeamsMappedToGroup + parameters: + - description: The UUID of the mapping to retrieve the team for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Team" + description: A list of teams associated with the specified group + "401": + description: Unauthorized + "404": + description: The UUID of the mapping could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of teams associated with the specified group + tags: + - oidc + /v1/oidc/mapping: + put: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_CREATE

+ operationId: addMapping_2 + requestBody: + content: + '*/*': + schema: + $ref: "#/components/schemas/MappedOidcGroupRequest" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/MappedOidcGroup" + description: The created mapping + "401": + description: Unauthorized + "404": + description: The UUID of the team or group could not be found + "409": + description: A mapping with the same team and group name already exists + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Adds a mapping + tags: + - oidc + /v1/oidc/mapping/{uuid}: + delete: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_DELETE

+ operationId: deleteMappingByUuid + parameters: + - description: The UUID of the mapping to delete + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Mapping removed successfully + "401": + description: Unauthorized + "404": + description: The UUID of the mapping could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a mapping + tags: + - oidc + /v1/permission: + get: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_READ

+ operationId: getAllPermissions + responses: + "200": + content: + application/json: + schema: + type: string + enum: + - BOM_UPLOAD + - VIEW_PORTFOLIO + - PORTFOLIO_ACCESS_CONTROL_BYPASS + - PORTFOLIO_MANAGEMENT + - PORTFOLIO_MANAGEMENT_CREATE + - PORTFOLIO_MANAGEMENT_READ + - PORTFOLIO_MANAGEMENT_UPDATE + - PORTFOLIO_MANAGEMENT_DELETE + - VIEW_VULNERABILITY + - VULNERABILITY_ANALYSIS + - VULNERABILITY_ANALYSIS_CREATE + - VULNERABILITY_ANALYSIS_READ + - VULNERABILITY_ANALYSIS_UPDATE + - VIEW_POLICY_VIOLATION + - VULNERABILITY_MANAGEMENT + - VULNERABILITY_MANAGEMENT_CREATE + - VULNERABILITY_MANAGEMENT_READ + - VULNERABILITY_MANAGEMENT_UPDATE + - VULNERABILITY_MANAGEMENT_DELETE + - POLICY_VIOLATION_ANALYSIS + - ACCESS_MANAGEMENT + - ACCESS_MANAGEMENT_CREATE + - ACCESS_MANAGEMENT_READ + - ACCESS_MANAGEMENT_UPDATE + - ACCESS_MANAGEMENT_DELETE + - SECRET_MANAGEMENT + - SECRET_MANAGEMENT_CREATE + - SECRET_MANAGEMENT_UPDATE + - SECRET_MANAGEMENT_DELETE + - SYSTEM_CONFIGURATION + - SYSTEM_CONFIGURATION_CREATE + - SYSTEM_CONFIGURATION_READ + - SYSTEM_CONFIGURATION_UPDATE + - SYSTEM_CONFIGURATION_DELETE + - PROJECT_CREATION_UPLOAD + - POLICY_MANAGEMENT + - POLICY_MANAGEMENT_CREATE + - POLICY_MANAGEMENT_READ + - POLICY_MANAGEMENT_UPDATE + - POLICY_MANAGEMENT_DELETE + - TAG_MANAGEMENT + - TAG_MANAGEMENT_DELETE + - VIEW_BADGES + description: A list of all permissions + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all permissions + tags: + - permission + /v1/permission/team: + put: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

+ operationId: setTeamPermissions + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TeamPermissionsSetRequest" + description: Team UUID and requested permissions + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Team" + description: The updated team + "304": + description: The team already has the specified permission(s) + "400": + description: Bad request + "401": + description: Unauthorized + "404": + description: The team could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Replaces a team's permissions with the specified list + tags: + - permission + /v1/permission/user: + put: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

+ operationId: setUserPermissions + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UserPermissionsSetRequest" + description: A username and valid list permission + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/User" + description: The updated user + "304": + description: The user is already has the specified permission(s) + "400": + description: Bad request + "401": + description: Unauthorized + "404": + description: The user could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Replaces a users's permissions with the specified list + tags: + - permission + /v1/permission/{permission}/team/{uuid}: + delete: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_DELETE

+ operationId: removePermissionFromTeam + parameters: + - description: A valid team uuid + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: A valid permission + in: path + name: permission + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Team" + description: The updated team + "304": + description: The team already has the specified permission assigned + "401": + description: Unauthorized + "404": + description: The team could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + tags: + - permission + post: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

+ operationId: addPermissionToTeam + parameters: + - description: A valid team uuid + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: A valid permission + in: path + name: permission + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Team" + description: The updated team + "304": + description: The team already has the specified permission assigned + "401": + description: Unauthorized + "404": + description: The team could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + tags: + - permission + /v1/permission/{permission}/user/{username}: + delete: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_DELETE

+ operationId: removePermissionFromUser + parameters: + - description: A valid username + in: path + name: username + required: true + schema: + type: string + - description: A valid permission + in: path + name: permission + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/User" + description: The updated user + "304": + description: The user already has the specified permission assigned + "401": + description: Unauthorized + "404": + description: The user could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Removes the permission from the user. + tags: + - permission + post: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

+ operationId: addPermissionToUser + parameters: + - description: A valid username + in: path + name: username + required: true + schema: + type: string + - description: A valid permission + in: path + name: permission + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/User" + description: The updated user + "304": + description: The user already has the specified permission assigned + "401": + description: Unauthorized + "404": + description: The user could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Adds the permission to the specified username. + tags: + - permission + /v1/policy: + get: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_READ

+ operationId: getPolicies + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Policy" + description: A list of all policies + headers: + X-Total-Count: + description: The total number of policies + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all policies + tags: + - policy + post: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_UPDATE

+ operationId: updatePolicy + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Policy" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Policy" + description: The updated policy + "401": + description: Unauthorized + "404": + description: The policy could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates a policy + tags: + - policy + put: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_CREATE

+ operationId: createPolicy + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Policy" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/Policy" + description: The created policy + "401": + description: Unauthorized + "409": + description: A policy with the specified name already exists + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new policy + tags: + - policy + /v1/policy/condition: + post: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_UPDATE

+ operationId: updatePolicyCondition + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/PolicyCondition" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/PolicyCondition" + description: The updated policy condition + "401": + description: Unauthorized + "404": + description: The UUID of the policy condition could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates a policy condition + tags: + - policyCondition + /v1/policy/condition/{uuid}: + delete: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_UPDATE

+ operationId: deletePolicyCondition + parameters: + - description: The UUID of the policy condition to delete + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Policy condition removed successfully + "401": + description: Unauthorized + "404": + description: The UUID of the policy condition could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a policy condition from an existing policy + tags: + - policyCondition + /v1/policy/{policyUuid}/project/{projectUuid}: + delete: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_DELETE

+ operationId: removeProjectFromPolicy + parameters: + - description: The UUID of the policy to remove the project from + in: path + name: policyUuid + required: true + schema: + type: string + format: uuid + - description: The UUID of the project to remove from the policy + in: path + name: projectUuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Policy" + description: The updated policy + "304": + description: The policy does not have the specified project assigned + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The policy or project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Removes a project from a policy + tags: + - policy + post: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_UPDATE

+ operationId: addProjectToPolicy + parameters: + - description: The UUID of the policy to add a project to + in: path + name: policyUuid + required: true + schema: + type: string + format: uuid + - description: The UUID of the project to add to the rule + in: path + name: projectUuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Policy" + description: The updated policy + "304": + description: The policy already has the specified project assigned + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The policy or project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Adds a project to a policy + tags: + - policy + /v1/policy/{uuid}: + delete: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_DELETE

+ operationId: deletePolicy + parameters: + - description: The UUID of the policy to delete + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Policy removed successfully + "401": + description: Unauthorized + "404": + description: The UUID of the policy could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a policy + tags: + - policy + get: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_READ

+ operationId: getPolicy + parameters: + - description: The UUID of the policy to retrieve + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Policy" + description: A specific policy + "401": + description: Unauthorized + "404": + description: The policy could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a specific policy + tags: + - policy + /v1/policy/{uuid}/condition: + put: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_UPDATE

+ operationId: createPolicyCondition + parameters: + - description: The UUID of the policy + in: path + name: uuid + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/PolicyCondition" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/PolicyCondition" + description: The created policy condition + "401": + description: Unauthorized + "404": + description: The UUID of the policy could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new policy condition for an existing policy + tags: + - policyCondition + /v1/project: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getProjects + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The optional name of the project to query on + in: query + name: name + schema: + type: string + - description: Optionally excludes inactive projects from being returned + in: query + name: excludeInactive + schema: + type: boolean + - description: Optionally excludes children projects from being returned + in: query + name: onlyRoot + schema: + type: boolean + - description: The UUID of the team which projects shall be excluded + in: query + name: notAssignedToTeamWithUuid + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Project" + description: A list of all projects + headers: + X-Total-Count: + description: The total number of projects + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all projects + tags: + - project + post: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_UPDATE

+ operationId: updateProject + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Project" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Project" + description: The updated project + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: "Access to the project, the provided parent, or the previous\ + \ latest project version, is forbidden" + "404": + description: The UUID of the project could not be found + "409": + description: |- +
    +
  • An inactive Parent cannot be selected as parent, or
  • +
  • Project cannot be set to inactive if active children are present, or
  • +
  • A project with the specified name already exists, or
  • +
  • A project cannot select itself as a parent
  • +
+ security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates a project + tags: + - project + put: + description: |- +

If a parent project exists, parent.uuid is required

+

+ When portfolio access control is enabled, one or more teams to grant access + to can be provided via accessTeams. Either uuid or + name of a team must be specified. Only teams which the authenticated + principal is a member of can be assigned. Principals with ACCESS_MANAGEMENT + permission can assign any team. +

+

Requires permission PORTFOLIO_MANAGEMENT or PORTFOLIO_MANAGEMENT_CREATE

+ operationId: createProject + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Project" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/Project" + description: The created project + "400": + description: Bad Request + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: "Access to the provided parent project, or previous latest\ + \ project version, is forbidden" + "409": + description: |- +
    +
  • An inactive Parent cannot be selected as parent, or
  • +
  • A project with the specified name already exists
  • +
+ security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new project + tags: + - project + /v1/project/batchDelete: + post: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_DELETE

+ operationId: deleteProjects + requestBody: + content: + application/json: + schema: + type: array + items: + type: string + format: uuid + maxItems: 1000 + minItems: 1 + uniqueItems: true + responses: + "204": + description: Projects removed successfully + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a list of projects specified by their UUIDs + tags: + - project + /v1/project/classifier/{classifier}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getProjectsByClassifier + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The classifier to query on + in: path + name: classifier + required: true + schema: + type: string + - description: Optionally excludes inactive projects from being returned + in: query + name: excludeInactive + schema: + type: boolean + - description: Optionally excludes children projects from being returned + in: query + name: onlyRoot + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Project" + description: A list of all projects by classifier + headers: + X-Total-Count: + description: The total number of projects + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all projects by classifier + tags: + - project + /v1/project/clone: + put: + deprecated: true + description: |- +

Requires permission PORTFOLIO_MANAGEMENT or PORTFOLIO_MANAGEMENT_CREATE

+

Deprecated! Use /api/v2/projects/{uuid}/clone instead.

+ operationId: cloneProject + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CloneProjectRequest" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/BomUploadResponse" + description: Token to be used for checking cloning progress + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: "Access to the requested project, or the previous latest project\ + \ version, is forbidden" + "404": + description: The UUID of the project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Clones a project + tags: + - project + /v1/project/concise: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getProjectsConcise + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: Name to filter on. Must be exact match. + in: query + name: name + schema: + type: string + - description: Version to filter on. Must be exact match. + in: query + name: version + schema: + type: string + - description: Classifier to filter on. Must be exact match. + in: query + name: classifier + schema: + type: string + - description: Tag to filter on. Must be exact match. + in: query + name: tag + schema: + type: string + - description: Team to filter on. Must be exact match. + in: query + name: team + schema: + type: string + - description: "Whether to show only active, or only inactive projects." + in: query + name: active + schema: + type: boolean + - description: "Whether to show only root projects, i.e. those without a parent." + in: query + name: onlyRoot + schema: + type: boolean + - description: Whether to include metrics in the response. + in: query + name: includeMetrics + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ConciseProject" + description: A list of all projects in concise representation + headers: + X-Total-Count: + description: The total number of projects + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: "Returns a list of all projects, in a concise representation." + tags: + - project + /v1/project/concise/{uuid}/children: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getProjectChildrenConcise + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: UUID of the project + in: path + name: uuid + required: true + schema: + type: string + - description: Name to filter on. Must be exact match. + in: query + name: name + schema: + type: string + - description: Version to filter on. Must be exact match. + in: query + name: version + schema: + type: string + - description: Classifier to filter on. Must be exact match. + in: query + name: classifier + schema: + type: string + - description: Tag to filter on. Must be exact match. + in: query + name: tag + schema: + type: string + - description: Team to filter on. Must be exact match. + in: query + name: team + schema: + type: string + - description: "Whether to show only active, or only inactive projects. Omitting\ + \ the filter will show both." + in: query + name: active + schema: + type: boolean + - description: Whether to include metrics in the response. + in: query + name: includeMetrics + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ConciseProject" + description: A list of all child projects in a concise representation + headers: + X-Total-Count: + description: The total number of child projects + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: "Returns a list of a given project's children, in a concise representation." + tags: + - project + /v1/project/latest/{name}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getLatestProjectByName + parameters: + - description: The name of the project to retrieve the latest version of + in: path + name: name + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Project" + description: The latest version of the specified project + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns the latest version of a project by its name + tags: + - project + /v1/project/lookup: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getProjectByNameAndVersion + parameters: + - description: The name of the project to query on + in: query + name: name + required: true + schema: + type: string + - description: The version of the project to query on + in: query + name: version + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Project" + description: A specific project by its name and version + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a specific project by its name and version + tags: + - project + /v1/project/tag/{tag}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getProjectsByTag + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The tag to query on + in: path + name: tag + required: true + schema: + type: string + - description: Optionally excludes inactive projects from being returned + in: query + name: excludeInactive + schema: + type: boolean + - description: Optionally excludes children projects from being returned + in: query + name: onlyRoot + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Project" + description: A list of all projects by tag + headers: + X-Total-Count: + description: The total number of projects + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all projects by tag + tags: + - project + /v1/project/withoutDescendantsOf/{uuid}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getProjectsWithoutDescendantsOf + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The UUID of the project which descendants will be excluded + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: The optional name of the project to query on + in: query + name: name + schema: + type: string + - description: Optionally excludes inactive projects from being returned + in: query + name: excludeInactive + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Project" + description: A list of all projects without the descendants of the selected + project + headers: + X-Total-Count: + description: The total number of projects + schema: + format: integer + style: simple + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The UUID of the project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all projects without the descendants of the selected + project + tags: + - project + /v1/project/{uuid}: + delete: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_DELETE

+ operationId: deleteProject + parameters: + - description: The UUID of the project to delete + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Project removed successfully + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The UUID of the project could not be found + "500": + description: Unable to delete components of the project + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a project + tags: + - project + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getProject + parameters: + - description: The UUID of the project to retrieve + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Project" + description: A specific project + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a specific project + tags: + - project + patch: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_UPDATE

+ operationId: patchProject + parameters: + - description: The UUID of the project to modify + in: path + name: uuid + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Project" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Project" + description: The updated project + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: "Access to the requested project, the provided parent, or the\ + \ previous latest project version, is forbidden" + "404": + description: The UUID of the project could not be found + "409": + description: |- +
    +
  • An inactive Parent cannot be selected as parent, or
  • +
  • Project cannot be set to inactive if active children are present, or
  • +
  • A project with the specified name already exists, or
  • +
  • A project cannot select itself as a parent
  • +
+ security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Partially updates a project + tags: + - project + /v1/project/{uuid}/children: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getChildrenProjects + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The UUID of the project to get the children from + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: Optionally excludes inactive projects from being returned + in: query + name: excludeInactive + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Project" + description: A list of all children for a project + headers: + X-Total-Count: + description: The total number of projects + schema: + format: integer + style: simple + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The UUID of the project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all children for a project + tags: + - project + /v1/project/{uuid}/children/classifier/{classifier}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getChildrenProjectsByClassifier + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The classifier to query on + in: path + name: classifier + required: true + schema: + type: string + - description: The UUID of the project to get the children from + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: Optionally excludes inactive projects from being returned + in: query + name: excludeInactive + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Project" + description: A list of all children for a project by classifier + headers: + X-Total-Count: + description: The total number of projects + schema: + format: integer + style: simple + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The UUID of the project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all children for a project by classifier + tags: + - project + /v1/project/{uuid}/children/tag/{tag}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getChildrenProjectsByTag + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The tag to query on + in: path + name: tag + required: true + schema: + type: string + - description: The UUID of the project to get the children from + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: Optionally excludes inactive projects from being returned + in: query + name: excludeInactive + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Project" + description: A list of all children for a project by tag + headers: + X-Total-Count: + description: The total number of projects + schema: + format: integer + style: simple + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The UUID of the project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all children for a project by tag + tags: + - project + /v1/project/{uuid}/property: + delete: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_DELETE

+ operationId: deleteProperty_1 + parameters: + - description: The UUID of the project to delete a property from + in: path + name: uuid + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ProjectProperty" + responses: + "204": + description: Project property removed successfully + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project or project property could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a config property + tags: + - projectProperty + get: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_READ

+ operationId: getProperties_1 + parameters: + - description: The UUID of the project to retrieve properties for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ProjectProperty" + description: A list of all ProjectProperties for the specified project + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all ProjectProperties for the specified project + tags: + - projectProperty + post: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_UPDATE

+ operationId: updateProperty + parameters: + - description: The UUID of the project to create a property for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ProjectProperty" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ProjectProperty" + description: The updated project property + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates a project property + tags: + - projectProperty + put: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_CREATE

+ operationId: createProperty_1 + parameters: + - description: The UUID of the project to create a property for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ProjectProperty" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/ProjectProperty" + description: The created project property + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + "409": + description: A property with the specified project/group/name combination + already exists + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new project property + tags: + - projectProperty + /v1/repository: + get: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_READ

+ operationId: getRepositories + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Repository" + description: A list of all repositories + headers: + X-Total-Count: + description: The total number of repositories + schema: + type: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all repositories + tags: + - repository + post: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_UPDATE

+ operationId: updateRepository + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Repository" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Repository" + description: The updated repository + "401": + description: Unauthorized + "404": + description: The UUID of the repository could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates a repository + tags: + - repository + put: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_CREATE

+ operationId: createRepository + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Repository" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/Repository" + description: The created repository + "401": + description: Unauthorized + "409": + description: A repository with the specified identifier already exists + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new repository + tags: + - repository + /v1/repository/latest: + get: + operationId: getRepositoryMetaComponent + parameters: + - description: The Package URL for the component to query + in: query + name: purl + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/RepositoryMetaComponent" + description: The latest version of the component available in the configured + repositories + "204": + description: "The request was successful, but no repositories are configured\ + \ to support the specified Package URL" + "400": + description: The specified Package URL is invalid and not in the correct + format + "401": + description: Unauthorized + "404": + description: The repository metadata for the specified component cannot + be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Attempts to resolve the latest version of the component available in + the configured repositories + tags: + - repository + /v1/repository/{type}: + get: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_READ

+ operationId: getRepositoriesByType + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The type of repositories to retrieve + in: path + name: type + required: true + schema: + type: string + enum: + - MAVEN + - NPM + - GEM + - PYPI + - NUGET + - HEX + - COMPOSER + - CARGO + - GO_MODULES + - CPAN + - GITHUB + - HACKAGE + - NIXPKGS + - UNSUPPORTED + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Repository" + description: A list of repositories that support the provided type + headers: + X-Total-Count: + description: The total number of repositories + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns repositories that support the specific type + tags: + - repository + /v1/repository/{uuid}: + delete: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_DELETE

+ operationId: deleteRepository + parameters: + - description: The UUID of the repository to delete + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Repository removed successfully + "401": + description: Unauthorized + "404": + description: The UUID of the repository could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a repository + tags: + - repository + /v1/service: + post: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_UPDATE

+ operationId: updateService + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ServiceComponent" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ServiceComponent" + description: The updated service + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The UUID of the service could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates a service + tags: + - service + /v1/service/project/{uuid}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getAllServices + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The UUID of the project + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ServiceComponent" + description: A list of all services for a given project + headers: + X-Total-Count: + description: The total number of services + schema: + format: integer + style: simple + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all services for a given project + tags: + - service + put: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_CREATE

+ operationId: createService + parameters: + - description: The UUID of the project + in: path + name: uuid + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ServiceComponent" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/ServiceComponent" + description: The created service + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new service + tags: + - service + /v1/service/{uuid}: + delete: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_DELETE

+ operationId: deleteService + parameters: + - description: The UUID of the service to delete + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Service removed successfully + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The UUID of the service could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a service + tags: + - service + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getServiceByUuid + parameters: + - description: The UUID of the service to retrieve + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ServiceComponent" + description: A specific service + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The service could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a specific service + tags: + - service + /v1/tag: + delete: + description: | +

A tag can only be deleted if no projects or policies are assigned to it.

+

+ Principals with PORTFOLIO_MANAGEMENT permission, and access + to all assigned projects (if portfolio ACL is enabled), can delete + a tag with assigned projects. +

+

+ Principals with POLICY_MANAGEMENT permission can delete tags + with assigned policies. +

+

Requires permission TAG_MANAGEMENT or TAG_MANAGEMENT_DELETE

+ operationId: deleteTags + requestBody: + content: + application/json: + schema: + type: array + items: + type: string + maxItems: 100 + minItems: 1 + uniqueItems: true + description: Names of the tags to delete + responses: + "204": + description: Tags deleted successfully. + "400": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/TagOperationProblemDetails" + description: Operation failed + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes one or more tags. + tags: + - tag + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getAllTags + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/TagListResponseItem" + description: A list of all tags + headers: + X-Total-Count: + description: The total number of tags + schema: + format: integer + style: simple + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all tags + tags: + - tag + put: + description:

Requires permission TAG_MANAGEMENT

+ operationId: createTags + requestBody: + content: + application/json: + schema: + type: array + items: + type: string + maxItems: 100 + minItems: 1 + uniqueItems: true + description: Names of the tags to create + required: true + responses: + "201": + description: Tags created successfully. + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates one or more tags. + tags: + - tag + /v1/tag/policy/{uuid}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getTagsForPolicy + parameters: + - description: The UUID of the policy + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Tag" + description: A list of all tags associated with a given policy + headers: + X-Total-Count: + description: The total number of tags + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all tags associated with a given policy + tags: + - tag + /v1/tag/{name}/collectionProject: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getTaggedCollectionProjects + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: Name of the tag to get collection projects for + in: path + name: name + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/TaggedCollectionProjectListResponseItem" + description: A list of all collection projects that use the given tag for + their collection logic + headers: + X-Total-Count: + description: The total number of collection projects + schema: + format: integer + style: simple + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all collection projects that use the given tag for + their collection logic. + tags: + - tag + /v1/tag/{name}/notificationRule: + delete: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_UPDATE

+ operationId: untagNotificationRules + parameters: + - description: Name of the tag + in: path + name: name + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: array + items: + type: string + format: uuid + maxLength: 100 + minLength: 1 + maxItems: 100 + minItems: 1 + description: UUIDs of notification rules to untag + required: true + responses: + "204": + description: Notification rules untagged successfully. + "404": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: A tag with the provided name does not exist. + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Untags one or more notification rules. + tags: + - tag + get: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_READ

+ operationId: getTaggedNotificationRules + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: Name of the tag to get notification rules for + in: path + name: name + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/TaggedPolicyListResponseItem" + description: A list of all notification rules assigned to the given tag + headers: + X-Total-Count: + description: The total number of notification rules + schema: + format: integer + style: simple + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all notification rules assigned to the given tag. + tags: + - tag + post: + description:

Requires permission SYSTEM_CONFIGURATION or + SYSTEM_CONFIGURATION_UPDATE

+ operationId: tagNotificationRules + parameters: + - description: Name of the tag to assign + in: path + name: name + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: array + items: + type: string + format: uuid + maxLength: 100 + minLength: 1 + maxItems: 100 + minItems: 1 + description: UUIDs of notification rules to tag + required: true + responses: + "204": + description: Notification rules tagged successfully. + "404": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: A tag with the provided name does not exist. + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Tags one or more notification rules. + tags: + - tag + /v1/tag/{name}/policy: + delete: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_UPDATE

+ operationId: untagPolicies + parameters: + - description: Name of the tag + in: path + name: name + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: array + items: + type: string + format: uuid + maxLength: 100 + minLength: 1 + maxItems: 100 + minItems: 1 + description: UUIDs of policies to untag + required: true + responses: + "204": + description: Policies untagged successfully. + "404": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: A tag with the provided name does not exist. + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Untags one or more policies. + tags: + - tag + get: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_READ

+ operationId: getTaggedPolicies + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: Name of the tag to get policies for. + in: path + name: name + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/TaggedPolicyListResponseItem" + description: A list of all policies assigned to the given tag + headers: + X-Total-Count: + description: The total number of policies + schema: + format: integer + style: simple + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all policies assigned to the given tag. + tags: + - tag + post: + description:

Requires permission POLICY_MANAGEMENT or POLICY_MANAGEMENT_UPDATE

+ operationId: tagPolicies + parameters: + - description: Name of the tag to assign + in: path + name: name + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: array + items: + type: string + format: uuid + maxLength: 100 + minLength: 1 + maxItems: 100 + minItems: 1 + description: UUIDs of policies to tag + required: true + responses: + "204": + description: Policies tagged successfully. + "404": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: A tag with the provided name does not exist. + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Tags one or more policies. + tags: + - tag + /v1/tag/{name}/project: + delete: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_UPDATE

+ operationId: untagProjects + parameters: + - description: Name of the tag + in: path + name: name + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: array + items: + type: string + format: uuid + maxLength: 100 + minLength: 1 + maxItems: 100 + minItems: 1 + description: UUIDs of projects to untag + required: true + responses: + "204": + description: Projects untagged successfully. + "404": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: A tag with the provided name does not exist. + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Untags one or more projects. + tags: + - tag + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getTaggedProjects + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: Name of the tag to get projects for. + in: path + name: name + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/TaggedProjectListResponseItem" + description: A list of all projects assigned to the given tag + headers: + X-Total-Count: + description: The total number of projects + schema: + format: integer + style: simple + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all projects assigned to the given tag. + tags: + - tag + post: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_UPDATE

+ operationId: tagProjects + parameters: + - description: Name of the tag to assign + in: path + name: name + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: array + items: + type: string + format: uuid + maxLength: 100 + minLength: 1 + maxItems: 100 + minItems: 1 + description: UUIDs of projects to tag + required: true + responses: + "204": + description: Projects tagged successfully. + "404": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: A tag with the provided name does not exist. + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Tags one or more projects. + tags: + - tag + /v1/tag/{name}/vulnerability: + delete: + description:

Requires permission VULNERABILITY_MANAGEMENT + or VULNERABILITY_MANAGEMENT_UPDATE

+ operationId: untagVulnerabilities + parameters: + - description: Name of the tag + in: path + name: name + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: array + items: + type: string + format: uuid + maxLength: 100 + minLength: 1 + maxItems: 100 + minItems: 1 + description: UUIDs of vulnerabilities to untag + required: true + responses: + "204": + description: Vulnerabilities untagged successfully. + "404": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: A tag with the provided name does not exist. + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Untags one or more vulnerabilities. + tags: + - tag + get: + description:

Requires permission VULNERABILITY_MANAGEMENT + or VULNERABILITY_MANAGEMENT_READ

+ operationId: getTaggedVulnerabilities + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: Name of the tag to get vulnerabilities for. + in: path + name: name + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/TaggedVulnerabilityListResponseItem" + description: A list of all vulnerabilities assigned to the given tag + headers: + X-Total-Count: + description: The total number of vulnerabilities + schema: + format: integer + style: simple + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all vulnerabilities assigned to the given tag. + tags: + - tag + /v1/team: + delete: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_DELETE

+ operationId: deleteTeam + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Team" + responses: + "204": + description: Team removed successfully + "401": + description: Unauthorized + "404": + description: The team could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a team + tags: + - team + get: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_READ

+ operationId: getTeams + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Team" + description: A list of all teams + headers: + X-Total-Count: + description: The total number of teams + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all teams + tags: + - team + post: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

+ operationId: updateTeam + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Team" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Team" + description: The updated team + "401": + description: Unauthorized + "404": + description: The team could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates a team's fields + tags: + - team + put: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_CREATE

+ operationId: createTeam + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Team" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/Team" + application/problem+json: + schema: + $ref: "#/components/schemas/Team" + description: The created team + "401": + description: Unauthorized + "409": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/TeamAlreadyExistsProblemDetails" + description: Team already exists + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new team + tags: + - team + /v1/team/key/{publicIdOrKey}: + delete: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_DELETE

+ operationId: deleteApiKey + parameters: + - description: The public ID for the API key or for Legacy the full Key to delete + in: path + name: publicIdOrKey + required: true + schema: + type: string + responses: + "204": + description: API key removed successfully + "401": + description: Unauthorized + "404": + description: The API key could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes the specified API key + tags: + - team + post: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_CREATE

+ operationId: regenerateApiKey + parameters: + - description: The public ID for the API key or for Legacy the complete Key + to regenerate + in: path + name: publicIdOrKey + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ApiKey" + description: The re-generated API key + "401": + description: Unauthorized + "404": + description: The API key could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: "Regenerates an API key by removing the specified key, generating a\ + \ new one and returning its value" + tags: + - team + /v1/team/key/{publicIdOrKey}/comment: + post: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

+ operationId: updateApiKeyComment + parameters: + - description: The public ID for the API key or for Legacy the complete Key + to comment on + in: path + name: publicIdOrKey + required: true + schema: + type: string + requestBody: + content: + text/plain: + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ApiKey" + description: The updated API key + "401": + description: Unauthorized + "404": + description: The API key could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates an API key's comment + tags: + - team + /v1/team/self: + get: + operationId: getSelf + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/TeamSelfResponse" + description: Information about the current team + "400": + description: Invalid API key supplied + "401": + description: Unauthorized + "404": + description: No Team for the given API key found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns information about the current team. + tags: + - team + /v1/team/visible: + get: + description:

+ operationId: availableTeams + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/VisibleTeams" + description: The Visible Teams + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of Teams that are visible + tags: + - team + /v1/team/{uuid}: + get: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_READ

+ operationId: getTeam + parameters: + - description: The UUID of the team to retrieve + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Team" + description: A specific team + "401": + description: Unauthorized + "404": + description: The team could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a specific team + tags: + - team + /v1/team/{uuid}/key: + put: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_CREATE

+ operationId: generateApiKey + parameters: + - description: The UUID of the team to generate a key for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/ApiKey" + description: The created API key + "401": + description: Unauthorized + "404": + description: The team could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Generates an API key and returns its value + tags: + - team + /v1/user/forceChangePassword: + post: + description: "Upon a successful login, a bearer token will be returned in the\ + \ response body." + operationId: forceChangePassword + requestBody: + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + confirmPassword: + type: string + newPassword: + type: string + password: + type: string + username: + type: string + responses: + "200": + description: Password changed successfully + "401": + description: Unauthorized + "403": + description: Forbidden + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: "Asserts login credentials and upon successful authentication, verifies\ + \ passwords match and changes users password" + tags: + - user + /v1/user/ldap: + delete: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_DELETE

+ operationId: deleteLdapUser + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/LdapUser" + responses: + "204": + description: LDAP user removed successfully + "401": + description: Unauthorized + "404": + description: The user could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a user. + tags: + - user + get: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_READ

+ operationId: getLdapUsers + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/LdapUser" + description: A list of all LDAP users + headers: + X-Total-Count: + description: The total number of LDAP users + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all LDAP users + tags: + - user + put: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_CREATE

+ operationId: createLdapUser + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/LdapUser" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/LdapUser" + description: The created LDAP user + "400": + description: Username cannot be null or blank. + "401": + description: Unauthorized + "409": + description: A user with the same username already exists. Cannot create + new user + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new user that references an existing LDAP object. + tags: + - user + /v1/user/login: + post: + description: "Upon a successful login, a bearer token will be returned in the\ + \ response body." + operationId: validateCredentials + requestBody: + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + password: + type: string + username: + type: string + responses: + "200": + content: + text/plain: + schema: + type: string + description: A bearer token to be used for authenticating with the REST + API + "401": + description: Unauthorized + "403": + description: Forbidden + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Assert login credentials + tags: + - user + /v1/user/logout: + post: + description: Invalidates the current session. No-op when authenticated via API + key. + operationId: logout + parameters: + - in: header + name: Authorization + schema: + type: string + responses: + "204": + description: Session invalidated + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Invalidates the current session + tags: + - user + /v1/user/managed: + delete: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_DELETE

+ operationId: deleteManagedUser + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ManagedUser" + responses: + "204": + description: User removed successfully + "401": + description: Unauthorized + "404": + description: The user could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a user. + tags: + - user + get: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_READ

+ operationId: getManagedUsers + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ManagedUser" + description: A list of all managed users + headers: + X-Total-Count: + description: The total number of managed users + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all managed users + tags: + - user + post: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

+ operationId: updateManagedUser + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ManagedUser" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ManagedUser" + description: The updated user + "400": + description: Missing required field + "401": + description: Unauthorized + "404": + description: The user could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates a managed user. + tags: + - user + put: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_CREATE

+ operationId: createManagedUser + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ManagedUser" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/ManagedUser" + description: The created user + "400": + description: Missing required field + "401": + description: Unauthorized + "409": + description: A user with the same username already exists. Cannot create + new user + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new user. + tags: + - user + /v1/user/membership: + put: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

+ operationId: setUserTeams + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TeamsSetRequest" + description: Username and list of UUIDs to assign to user + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/User" + description: The updated user + "304": + description: The user is already a member of the specified team(s) + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Bad request + "401": + description: Unauthorized + "404": + description: The user or team(s) could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Sets specified teams to a user. + tags: + - user + /v1/user/oidc: + delete: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_DELETE

+ operationId: deleteOidcUser + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/OidcUser" + responses: + "204": + description: OIDC user removed successfully + "401": + description: Unauthorized + "404": + description: The user could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes an OpenID Connect user. + tags: + - user + get: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_READ

+ operationId: getOidcUsers + responses: + "200": + description: A list of all OIDC users + headers: + X-Total-Count: + description: The total number of OIDC users + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all OIDC users + tags: + - user + put: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_CREATE

+ operationId: createOidcUser + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/OidcUser" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/OidcUser" + description: The created OIDC user + "400": + description: Username cannot be null or blank. + "401": + description: Unauthorized + "409": + description: A user with the same username already exists. Cannot create + new user + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new user that references an existing OpenID Connect user. + tags: + - user + /v1/user/oidc/login: + post: + description: "Upon a successful login, a bearer token will be returned in the\ + \ response body." + operationId: validateOidcAccessToken + requestBody: + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + accessToken: + type: string + idToken: + type: string + description: An OAuth2 access token + required: + - idToken + responses: + "200": + content: + text/plain: + schema: + type: string + description: A bearer token to be used for authenticating with the REST + API + "204": + description: No Content + "401": + description: Unauthorized + "403": + description: Forbidden + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Login with OpenID Connect + tags: + - user + /v1/user/self: + get: + operationId: getSelf_1 + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/User" + description: Information about the current logged in user + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns information about the current logged in user. + tags: + - user + post: + operationId: updateSelf + requestBody: + content: + '*/*': + schema: + $ref: "#/components/schemas/ManagedUser" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ManagedUser" + description: The updated user + "400": + description: An invalid payload was submitted or the user is not a managed + user. + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates information about the current logged in user. + tags: + - user + /v1/user/self/permissions: + get: + description: "Returns all permissions the authenticated user has, including\ + \ those inherited from teams." + operationId: getSelfPermissions + responses: + "200": + content: + application/json: + schema: + type: array + items: + type: string + description: A list of effective permission names + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns the effective permissions of the authenticated user + tags: + - user + /v1/user/{username}/membership: + delete: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_DELETE

+ operationId: removeTeamFromUser + parameters: + - description: A valid username + in: path + name: username + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifiableObject" + description: The UUID of the team to un-associate username from + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/User" + description: The updated user + "304": + description: The user was not a member of the specified team + "401": + description: Unauthorized + "404": + description: The user or team could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Removes the username from the specified team. + tags: + - user + post: + description:

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

+ operationId: addTeamToUser + parameters: + - description: A valid username + in: path + name: username + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifiableObject" + description: The UUID of the team to associate username with + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/User" + description: The updated user + "304": + description: The user is already a member of the specified team + "401": + description: Unauthorized + "404": + description: The user or team could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Adds the username to the specified team. + tags: + - user + /v1/vex: + post: + description: |- +

+ Expects CycloneDX and a valid project UUID. If a UUID is not specified, + then the projectName and projectVersion must be specified. +

+

+ The VEX will be validated against the CycloneDX schema. If schema validation fails, + a response with problem details in RFC 9457 format will be returned. In this case, + the response's content type will be application/problem+json. +

+

Requires permission VULNERABILITY_ANALYSIS or VULNERABILITY_ANALYSIS_UPDATE

+ operationId: uploadVex_1 + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + project: + type: string + projectName: + type: string + projectVersion: + type: string + vex: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/BomUploadResponse" + description: Token to be used for checking VEX processing progress + "400": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/InvalidBomProblemDetails" + description: Invalid VEX + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Upload a supported VEX document + tags: + - vex + put: + description: |- +

+ Expects CycloneDX and a valid project UUID. If a UUID is not specified, + then the projectName and projectVersion must be specified. +

+

+ The VEX will be validated against the CycloneDX schema. If schema validation fails, + a response with problem details in RFC 9457 format will be returned. In this case, + the response's content type will be application/problem+json. +

+

+ The maximum allowed length of the vex value is 20'000'000 characters. + When uploading large VEX files, the POST endpoint is preferred, + as it does not have this limit. +

+

Requires permission VULNERABILITY_ANALYSIS or VULNERABILITY_ANALYSIS_UPDATE

+ operationId: uploadVex + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/VexSubmitRequest" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/BomUploadResponse" + description: Token to be used for checking VEX processing progress + "400": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/InvalidBomProblemDetails" + description: Invalid VEX + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Upload a supported VEX document + tags: + - vex + /v1/vex/cyclonedx/project/{uuid}: + get: + description:

Requires permission VULNERABILITY_ANALYSIS + or VULNERABILITY_ANALYSIS_READ

+ operationId: exportProjectAsCycloneDx_1 + parameters: + - description: The UUID of the project to export + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: Force the resulting VEX to be downloaded as a file (defaults + to 'false') + in: query + name: download + schema: + type: boolean + - description: "The CycloneDX Spec variant exported (defaults to: '1.5')" + in: query + name: version + schema: + type: string + responses: + "200": + content: + application/octet-stream: + schema: + type: string + application/vnd.cyclonedx+json: + schema: + type: string + description: A VEX for a project in CycloneDX format + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a VEX for a project in CycloneDX format + tags: + - vex + /v1/violation: + get: + description:

Requires permission VIEW_POLICY_VIOLATION

+ operationId: getViolations + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: Optionally includes suppressed violations + in: query + name: suppressed + schema: + type: boolean + - description: Optionally includes inactive projects + in: query + name: showInactive + schema: + type: boolean + - description: Filter by violation state + in: query + name: violationState + schema: + type: string + - description: Filter by risk type + in: query + name: riskType + schema: + type: string + - description: Filter by policy + in: query + name: policy + schema: + type: string + - description: Filter by analysis state + in: query + name: analysisState + schema: + type: string + - description: Filter occurred on from + in: query + name: occurredOnDateFrom + schema: + type: string + - description: Filter occurred on to + in: query + name: occurredOnDateTo + schema: + type: string + - description: Filter the text input in these fields + in: query + name: textSearchField + schema: + type: string + - description: Filter by this text input + in: query + name: textSearchInput + schema: + type: string + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/PolicyViolation" + description: A list of all policy violations for the entire portfolio + headers: + X-Total-Count: + description: The total number of policy violations + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all policy violations for the entire portfolio + tags: + - violation + /v1/violation/analysis: + get: + description:

Requires permission VIEW_POLICY_VIOLATION

+ operationId: retrieveAnalysis_1 + parameters: + - description: The UUID of the component + in: query + name: component + required: true + schema: + type: string + format: uuid + - description: The UUID of the policy violation + in: query + name: policyViolation + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ViolationAnalysis" + description: A violation analysis trail + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The component or policy violation could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Retrieves a violation analysis trail + tags: + - violationanalysis + put: + description:

Requires permission POLICY_VIOLATION_ANALYSIS

+ operationId: updateAnalysis_1 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ViolationAnalysisRequest" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ViolationAnalysis" + description: The created violation analysis + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The component or policy violation could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Records a violation analysis decision + tags: + - violationanalysis + /v1/violation/component/{uuid}: + get: + description:

Requires permission VIEW_POLICY_VIOLATION

+ operationId: getViolationsByComponent + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The UUID of the component + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: Optionally includes suppressed violations + in: query + name: suppressed + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/PolicyViolation" + description: A list of all policy violations for a specific component + headers: + X-Total-Count: + description: The total number of policy violations + schema: + format: integer + style: simple + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The component could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all policy violations for a specific component + tags: + - violation + /v1/violation/project/{uuid}: + get: + description:

Requires permission VIEW_POLICY_VIOLATION

+ operationId: getViolationsByProject + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The UUID of the project + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: Optionally includes suppressed violations + in: query + name: suppressed + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/PolicyViolation" + description: A list of all policy violations for a specific project + headers: + X-Total-Count: + description: The total number of policy violations + schema: + format: integer + style: simple + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all policy violations for a specific project + tags: + - violation + /v1/vulnerability: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getAllVulnerabilities + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Vulnerability" + description: A list of all vulnerabilities + headers: + X-Total-Count: + description: The total number of vulnerabilities + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all vulnerabilities + tags: + - vulnerability + post: + description:

Requires permission VULNERABILITY_MANAGEMENT + or VULNERABILITY_MANAGEMENT_UPDATE

+ operationId: updateVulnerability + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Vulnerability" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Vulnerability" + description: The updated vulnerability + "401": + description: Unauthorized + "404": + description: The vulnerability could not be found + "406": + description: The vulnId may not be changed + security: + - ApiKeyAuth: [] + - BearerAuth: [] + tags: + - vulnerability + put: + description:

Requires permission VULNERABILITY_MANAGEMENT + or VULNERABILITY_MANAGEMENT_CREATE

+ operationId: createVulnerability + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Vulnerability" + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/Vulnerability" + description: The created vulnerability + "401": + description: Unauthorized + "409": + description: A vulnerability with the specified vulnId already exists + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Creates a new vulnerability + tags: + - vulnerability + /v1/vulnerability/component/{uuid}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getVulnerabilitiesByComponent + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: The UUID of the component to retrieve vulnerabilities for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: Optionally includes suppressed vulnerabilities + in: query + name: suppressed + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Vulnerability" + description: A list of all vulnerabilities for a specific component + headers: + X-Total-Count: + description: The total number of vulnerabilities + schema: + format: integer + style: simple + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The component could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all vulnerabilities for a specific component + tags: + - vulnerability + /v1/vulnerability/project/{uuid}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getVulnerabilitiesByProject + parameters: + - description: The UUID of the project to retrieve vulnerabilities for + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: Optionally includes suppressed vulnerabilities + in: query + name: suppressed + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Vulnerability" + description: A list of all vulnerabilities for a specific project + headers: + X-Total-Count: + description: The total number of vulnerabilities + schema: + format: integer + style: simple + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The project could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all vulnerabilities for a specific project + tags: + - vulnerability + /v1/vulnerability/source/{source}/vuln/{vulnId}/component/{component}: + delete: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_DELETE

+ operationId: unassignVulnerability_1 + parameters: + - description: The vulnerability source + in: path + name: source + required: true + schema: + type: string + - description: The vulnId + in: path + name: vulnId + required: true + schema: + type: string + - description: The UUID of the component + in: path + name: component + required: true + schema: + type: string + format: uuid + responses: + "200": + description: Assignment removal successful + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The vulnerability or component could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Removes assignment of a vulnerability from a component + tags: + - vulnerability + post: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_UPDATE

+ operationId: assignVulnerability_1 + parameters: + - description: The vulnerability source + in: path + name: source + required: true + schema: + type: string + - description: The vulnId + in: path + name: vulnId + required: true + schema: + type: string + - description: The UUID of the component + in: path + name: component + required: true + schema: + type: string + format: uuid + responses: + "200": + description: Assignment successful + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The vulnerability or component could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Assigns a vulnerability to a component + tags: + - vulnerability + /v1/vulnerability/source/{source}/vuln/{vuln}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getVulnerabilityByVulnId + parameters: + - in: path + name: source + required: true + schema: + type: string + - in: path + name: vuln + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Vulnerability" + description: A specific vulnerability + "401": + description: Unauthorized + "404": + description: The vulnerability could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a specific vulnerability + tags: + - vulnerability + /v1/vulnerability/source/{source}/vuln/{vuln}/projects: + get: + description: |- +

Requires permission VIEW_PORTFOLIO

Optional query parameter searchText. The search is case insensitive. + So if a search is done for project 'abc' and a project named 'aBc' exists in the knowledgebase, + then the latter would appear in the search results

+ operationId: getAffectedProject + parameters: + - description: The page to return. To be used in conjunction with pageSize. + in: query + name: pageNumber + schema: + type: string + default: "1" + - description: Number of elements to return per page. To be used in conjunction + with pageNumber. + in: query + name: pageSize + schema: + type: string + default: "100" + - description: Offset to start returning elements from. To be used in conjunction + with limit. + in: query + name: offset + schema: + type: string + - description: Number of elements to return per page. To be used in conjunction + with offset. + in: query + name: limit + schema: + type: string + - description: Name of the resource field to sort on. + in: query + name: sortName + schema: + type: string + - description: Ordering of items when sorting with sortName. + in: query + name: sortOrder + schema: + type: string + enum: + - "asc, desc" + - description: Optional case-insensitive substring match on project name. + in: query + name: searchText + schema: + type: string + - in: path + name: source + required: true + schema: + type: string + - in: path + name: vuln + required: true + schema: + type: string + - description: Optionally excludes inactive projects from being returned + in: query + name: excludeInactive + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/AffectedProject" + description: A list of all projects affected by a specific vulnerability + headers: + X-Total-Count: + description: The total number of projects + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all projects affected by a specific vulnerability + tags: + - vulnerability + /v1/vulnerability/tag/{tag}: + get: + description:

Requires permission VIEW_PORTFOLIO

+ operationId: getVulnerabilitiesByTag + parameters: + - description: The tag to query on + in: path + name: tag + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Vulnerability" + description: A list of all tagged vulnerabilities + headers: + X-Total-Count: + description: The total number of vulnerabilities with the tag + schema: + format: integer + style: simple + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a list of all vulnerabilities by tag + tags: + - vulnerability + /v1/vulnerability/vulnId: + get: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_CREATE

+ operationId: generateInternalVulnerabilityIdentifier + responses: + "200": + content: + application/json: + schema: + type: string + description: An internal vulnerability identifier + "401": + description: Unauthorized + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Generates an internal vulnerability identifier + tags: + - vulnerability + /v1/vulnerability/{uuid}: + delete: + description:

Requires permission VULNERABILITY_MANAGEMENT + or VULNERABILITY_MANAGEMENT_DELETE

+ operationId: deleteVulnerability + parameters: + - description: The UUID of the vulnerability to delete + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Vulnerability removed successfully + "401": + description: Unauthorized + "403": + description: Access to the specified vulnerability is forbidden + "404": + description: The UUID of the vulnerability could not be found + "412": + description: Portfolio components or services are affected by this vulnerability. + Unable to delete. + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Deletes a vulnerability + tags: + - vulnerability + get: + description:

Requires permission VULNERABILITY_MANAGEMENT + or VULNERABILITY_MANAGEMENT_READ

+ operationId: getVulnerabilityByUuid + parameters: + - description: The UUID of the vulnerability + in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Vulnerability" + description: A specific vulnerability + "401": + description: Unauthorized + "404": + description: The vulnerability could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Returns a specific vulnerability + tags: + - vulnerability + /v1/vulnerability/{uuid}/component/{component}: + delete: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_DELETE

+ operationId: unassignVulnerability + parameters: + - description: The UUID of the vulnerability + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: The UUID of the component + in: path + name: component + required: true + schema: + type: string + format: uuid + responses: + "200": + description: Assignment removal successful + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The vulnerability or component could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Removes assignment of a vulnerability from a component + tags: + - vulnerability + post: + description:

Requires permission PORTFOLIO_MANAGEMENT or + PORTFOLIO_MANAGEMENT_UPDATE

+ operationId: assignVulnerability + parameters: + - description: The UUID of the vulnerability + in: path + name: uuid + required: true + schema: + type: string + format: uuid + - description: The UUID of the component + in: path + name: component + required: true + schema: + type: string + format: uuid + responses: + "200": + description: Assignment successful + "401": + description: Unauthorized + "403": + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ProblemDetails" + description: Access to the requested project is forbidden + "404": + description: The vulnerability or component could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Assigns a vulnerability to a component + tags: + - vulnerability + /v1/vulnerability/{uuid}/tags: + post: + description:

Requires permission VULNERABILITY_MANAGEMENT + or VULNERABILITY_MANAGEMENT_UPDATE

+ operationId: updateVulnerabilityTags + parameters: + - description: UUID of the vulnerability + in: path + name: uuid + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + type: array + items: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Vulnerability" + description: The updated vulnerability + "401": + description: Unauthorized + "404": + description: The vulnerability could not be found + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Updates tags for a vulnerability + tags: + - vulnerability + /v1/workflow/token/{uuid}/status: + get: + description:

Requires permission BOM_UPLOAD

+ operationId: getWorkflowStates + parameters: + - description: The UUID of the token to query + in: path + name: uuid + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/WorkflowState" + description: A list of workflow states + "401": + description: Unauthorized + "404": + description: Workflow does not exist + security: + - ApiKeyAuth: [] + - BearerAuth: [] + summary: Retrieves workflow states associated with the token received from bom + upload . + tags: + - workflow + /version: + get: + description: Returns a simple json object containing the name of the application + and the version + operationId: getVersion + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/About" + description: Application version information + summary: Returns application version information + tags: + - version +components: + schemas: + About: + type: object + properties: + application: + type: string + framework: + $ref: "#/components/schemas/Framework" + providerData: + type: object + additionalProperties: + type: object + systemUuid: + type: string + timestamp: + type: string + uuid: + type: string + version: + type: string + AclMappingRequest: + type: object + properties: + project: + type: string + pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + team: + type: string + pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + required: + - project + - team + AffectedComponent: + type: object + properties: + affectedVersionAttributions: + type: array + items: + $ref: "#/components/schemas/AffectedVersionAttribution" + identity: + type: string + identityType: + type: string + enum: + - CPE + - PURL + uuid: + type: string + format: uuid + version: + type: string + versionEndExcluding: + type: string + versionEndIncluding: + type: string + versionStartExcluding: + type: string + versionStartIncluding: + type: string + versionType: + type: string + enum: + - EXACT + - RANGE + AffectedProject: + type: object + properties: + active: + type: boolean + affectedComponentUuids: + type: array + items: + type: string + format: uuid + dependencyGraphAvailable: + type: boolean + name: + type: string + uuid: + type: string + format: uuid + version: + type: string + AffectedVersionAttribution: + type: object + properties: + firstSeen: + type: integer + format: int64 + description: UNIX epoch timestamp in milliseconds + lastSeen: + type: integer + format: int64 + description: UNIX epoch timestamp in milliseconds + source: + type: string + enum: + - NVD + - NPM + - GITHUB + - VULNDB + - OSSINDEX + - RETIREJS + - INTERNAL + - OSV + - SNYK + - CSAF + uuid: + type: string + format: uuid + required: + - firstSeen + - lastSeen + Analysis: + type: object + properties: + analysisComments: + type: array + items: + $ref: "#/components/schemas/AnalysisComment" + analysisDetails: + type: string + analysisJustification: + type: string + enum: + - CODE_NOT_PRESENT + - CODE_NOT_REACHABLE + - REQUIRES_CONFIGURATION + - REQUIRES_DEPENDENCY + - REQUIRES_ENVIRONMENT + - PROTECTED_BY_COMPILER + - PROTECTED_AT_RUNTIME + - PROTECTED_AT_PERIMETER + - PROTECTED_BY_MITIGATING_CONTROL + - NOT_SET + analysisResponse: + type: string + enum: + - CAN_NOT_FIX + - WILL_NOT_FIX + - UPDATE + - ROLLBACK + - WORKAROUND_AVAILABLE + - NOT_SET + analysisState: + type: string + enum: + - EXPLOITABLE + - IN_TRIAGE + - FALSE_POSITIVE + - NOT_AFFECTED + - RESOLVED + - NOT_SET + cvssV2Score: + type: number + cvssV2Vector: + type: string + cvssV3Score: + type: number + cvssV3Vector: + type: string + cvssV4Score: + type: number + cvssV4Vector: + type: string + isSuppressed: + type: boolean + owaspScore: + type: number + owaspVector: + type: string + severity: + type: string + enum: + - CRITICAL + - HIGH + - MEDIUM + - LOW + - INFO + - UNASSIGNED + required: + - analysisDetails + - analysisJustification + - analysisResponse + - analysisState + AnalysisComment: + type: object + properties: + comment: + type: string + commenter: + type: string + timestamp: + type: integer + format: int64 + description: UNIX epoch timestamp in milliseconds + required: + - comment + - timestamp + AnalysisRequest: + type: object + properties: + analysisDetails: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + analysisJustification: + type: string + enum: + - CODE_NOT_PRESENT + - CODE_NOT_REACHABLE + - REQUIRES_CONFIGURATION + - REQUIRES_DEPENDENCY + - REQUIRES_ENVIRONMENT + - PROTECTED_BY_COMPILER + - PROTECTED_AT_RUNTIME + - PROTECTED_AT_PERIMETER + - PROTECTED_BY_MITIGATING_CONTROL + - NOT_SET + analysisResponse: + type: string + enum: + - CAN_NOT_FIX + - WILL_NOT_FIX + - UPDATE + - ROLLBACK + - WORKAROUND_AVAILABLE + - NOT_SET + analysisState: + type: string + enum: + - EXPLOITABLE + - IN_TRIAGE + - FALSE_POSITIVE + - NOT_AFFECTED + - RESOLVED + - NOT_SET + comment: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + component: + type: string + pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + isSuppressed: + type: boolean + writeOnly: true + project: + type: string + pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + suppressed: + type: boolean + vulnerability: + type: string + pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + required: + - component + - vulnerability + ApiKey: + type: object + properties: + comment: + type: string + maxLength: 255 + minLength: 0 + created: + type: string + format: date-time + key: + type: string + lastUsed: + type: string + format: date-time + legacy: + type: boolean + maskedKey: + type: string + publicId: + type: string + maxLength: 8 + minLength: 5 + BomSubmitRequest: + type: object + properties: + autoCreate: + type: boolean + bom: + type: string + description: Base64 encoded BOM + example: ewogICJib21Gb3JtYXQiOiAiQ3ljbG9uZURYIiwKICAic3BlY1ZlcnNpb24iOiAiMS40IiwKICAiY29tcG9uZW50cyI6IFsKICAgIHsKICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICJuYW1lIjogImFjbWUtbGliIiwKICAgICAgInZlcnNpb24iOiAiMS4wLjAiCiAgICB9CiAgXQp9 + pattern: "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$" + isLatest: + type: boolean + parentName: + type: string + example: Example Application Parent + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + parentUUID: + type: string + example: 5341f53c-611b-4388-9d9c-731026dc5eec + pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + parentVersion: + type: string + example: 1.0.0 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + project: + type: string + example: 38640b33-4ba9-4733-bdab-cbfc40c6f8aa + pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + projectName: + type: string + example: Example Application + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + projectTags: + type: array + example: "tag1, tag2" + items: + $ref: "#/components/schemas/Tag" + projectVersion: + type: string + example: 1.0.0 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + required: + - bom + - project + - projectName + - projectVersion + BomUploadResponse: + type: object + properties: + projectUuid: + type: string + format: uuid + description: UUID of the project the BOM was uploaded for + token: + type: string + format: uuid + description: Token used to check task progress + required: + - projectUuid + - token + CelExpressionError: + type: object + description: Errors identified during CEL expression compilation + properties: + column: + type: integer + format: int32 + line: + type: integer + format: int32 + message: + type: string + CloneProjectRequest: + type: object + properties: + includeACL: + type: boolean + writeOnly: true + includeAuditHistory: + type: boolean + writeOnly: true + includeComponents: + type: boolean + writeOnly: true + includeDependencies: + type: boolean + writeOnly: true + includePolicyViolations: + type: boolean + writeOnly: true + includeProperties: + type: boolean + writeOnly: true + includeServices: + type: boolean + writeOnly: true + includeTags: + type: boolean + writeOnly: true + makeCloneLatest: + type: boolean + writeOnly: true + project: + type: string + pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + version: + type: string + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + required: + - project + - version + Component: + type: object + properties: + author: + type: string + authors: + type: array + items: + $ref: "#/components/schemas/OrganizationalContact" + blake2b_256: + type: string + pattern: "^[0-9a-f]{64}$" + blake2b_384: + type: string + pattern: "^[0-9a-f]{96}$" + blake2b_512: + type: string + pattern: "^[0-9a-f]{128}$" + blake3: + type: string + pattern: "^[A-Fa-f0-9]*$" + children: + type: array + items: + $ref: "#/components/schemas/Component" + classifier: + type: string + enum: + - APPLICATION + - FRAMEWORK + - LIBRARY + - CONTAINER + - OPERATING_SYSTEM + - DEVICE + - FIRMWARE + - FILE + - PLATFORM + - DEVICE_DRIVER + - MACHINE_LEARNING_MODEL + - DATA + componentMetaInformation: + $ref: "#/components/schemas/ComponentMetaInformation" + copyright: + type: string + maxLength: 1024 + minLength: 0 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + cpe: + type: string + maxLength: 255 + minLength: 0 + pattern: "(cpe:2\\.3:[aho\\*\\-](:(((\\?*|\\*?)([a-zA-Z0-9\\-\\._]|(\\\\\ + [\\\\\\*\\?!\"#$$%&'\\(\\)\\+,/:;<=>@\\[\\]\\^`\\{\\|}~]))+(\\?*|\\*?))|[\\\ + *\\-])){5}(:(([a-zA-Z]{2,3}(-([a-zA-Z]{2}|[0-9]{3}))?)|[\\*\\-]))(:(((\\\ + ?*|\\*?)([a-zA-Z0-9\\-\\._]|(\\\\[\\\\\\*\\?!\"#$$%&'\\(\\)\\+,/:;<=>@\\\ + [\\]\\^`\\{\\|}~]))+(\\?*|\\*?))|[\\*\\-])){4})|([c][pP][eE]:/[AHOaho]?(:[A-Za-z0-9\\\ + ._\\-~%]*){0,6})" + dependencyGraph: + type: array + items: + type: string + uniqueItems: true + description: + type: string + maxLength: 1024 + minLength: 0 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + directDependencies: + type: string + expandDependencyGraph: + type: boolean + extension: + type: string + maxLength: 255 + minLength: 0 + pattern: "^[\\p{Alnum}!@#$%^&{}\\[\\]()_+\\-=,.~'` ]{1,255}$" + externalReferences: + type: array + items: + $ref: "#/components/schemas/ExternalReference" + filename: + type: string + maxLength: 255 + minLength: 0 + pattern: "^[\\p{Alnum}:/\\\\!@#$%^&{}\\[\\]()_+\\-=,.~'` ]{1,255}$" + group: + type: string + maxLength: 255 + minLength: 0 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + isInternal: + type: boolean + lastInheritedRiskScore: + type: number + format: double + license: + type: string + maxLength: 255 + minLength: 0 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + licenseExpression: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + licenseUrl: + type: string + maxLength: 255 + minLength: 0 + pattern: "^((((https?|ftps?|sftp|imap|rtsp|rtmp|sip|sips|git|ssh|telnet|nntp|file)://)|(mailto:|news:))(%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@&=+$,A-Za-z0-9])+)([).!';/?:,][[:blank:]])?$" + md5: + type: string + pattern: "^[0-9a-fA-F]{32}$" + metrics: + $ref: "#/components/schemas/DependencyMetrics" + name: + type: string + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + notes: + type: string + occurrenceCount: + type: integer + format: int64 + parent: + $ref: "#/components/schemas/Component" + project: + $ref: "#/components/schemas/Project" + properties: + type: array + items: + $ref: "#/components/schemas/ComponentProperty" + publisher: + type: string + maxLength: 255 + minLength: 0 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + purl: + type: string + maxLength: 1024 + minLength: 0 + purlCoordinates: + type: string + maxLength: 1024 + minLength: 0 + readOnly: true + repositoryMeta: + $ref: "#/components/schemas/RepositoryMetaComponent" + resolvedLicense: + $ref: "#/components/schemas/License" + sha1: + type: string + pattern: "^[0-9a-fA-F]{40}$" + sha256: + type: string + pattern: "^[0-9a-fA-F]{64}$" + sha384: + type: string + pattern: "^[0-9a-fA-F]{96}$" + sha3_256: + type: string + pattern: "^[0-9a-fA-F]{64}$" + sha3_384: + type: string + pattern: "^[0-9a-fA-F]{96}$" + sha3_512: + type: string + pattern: "^[0-9a-fA-F]{128}$" + sha512: + type: string + pattern: "^[0-9a-fA-F]{128}$" + supplier: + $ref: "#/components/schemas/OrganizationalEntity" + swidTagId: + type: string + maxLength: 255 + minLength: 0 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + uuid: + type: string + format: uuid + version: + type: string + maxLength: 255 + minLength: 0 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + vulnerabilities: + type: array + items: + $ref: "#/components/schemas/Vulnerability" + required: + - classifier + - name + - project + - uuid + ComponentMetaInformation: + type: object + properties: + integrityMatchStatus: + type: string + enum: + - HASH_MATCH_PASSED + - HASH_MATCH_FAILED + - HASH_MATCH_UNKNOWN + - COMPONENT_MISSING_HASH + integrityRepoUrl: + type: string + lastFetched: + type: string + format: date-time + publishedDate: + type: string + format: date-time + ComponentOccurrence: + type: object + properties: + createdAt: + type: string + format: date-time + id: + type: string + format: uuid + line: + type: integer + format: int32 + location: + type: string + offset: + type: integer + format: int32 + symbol: + type: string + ComponentProperty: + type: object + properties: + description: + type: string + maxLength: 255 + minLength: 0 + pattern: "\\P{Cc}+" + groupName: + type: string + maxLength: 255 + minLength: 1 + pattern: "\\P{Cc}+" + propertyName: + type: string + maxLength: 255 + minLength: 1 + pattern: "\\P{Cc}+" + propertyType: + type: string + enum: + - BOOLEAN + - INTEGER + - NUMBER + - STRING + - TIMESTAMP + - URL + - UUID + propertyValue: + type: string + maxLength: 1024 + minLength: 0 + pattern: "\\P{Cc}+" + uuid: + type: string + format: uuid + required: + - propertyName + - propertyType + - uuid + ConciseProject: + type: object + description: A concise representation of a project + properties: + active: + type: boolean + description: Whether the project is active + classifier: + type: string + description: Classifier of the project + enum: + - APPLICATION + - FRAMEWORK + - LIBRARY + - CONTAINER + - OPERATING_SYSTEM + - DEVICE + - FIRMWARE + - FILE + - PLATFORM + - DEVICE_DRIVER + - MACHINE_LEARNING_MODEL + - DATA + collectionLogic: + type: string + description: Collection logic for aggregating child metrics + enum: + - AGGREGATE_DIRECT_CHILDREN + - AGGREGATE_DIRECT_CHILDREN_WITH_TAG + - AGGREGATE_LATEST_VERSION_CHILDREN + group: + type: string + description: Group or namespace of the project + hasChildren: + type: boolean + description: Whether the project has children + isLatest: + type: boolean + description: Whether the project version is latest + lastBomImport: + type: number + description: Timestamp of the last BOM import + example: 1719499619599 + lastBomImportFormat: + type: string + description: Format of the last imported BOM + lastRiskScore: + type: number + format: double + description: Last observed risk score + metrics: + $ref: "#/components/schemas/ConciseProjectMetrics" + name: + type: string + description: Name of the project + tags: + type: array + description: Tags associated with the project + items: + $ref: "#/components/schemas/Tag" + teams: + type: array + description: Teams associated with the project + items: + $ref: "#/components/schemas/Team" + uuid: + type: string + format: uuid + description: UUID of the project + version: + type: string + description: Version of the project + required: + - active + - hasChildren + - name + - uuid + ConciseProjectMetrics: + type: object + description: A concise representation of a project's metrics + properties: + components: + type: integer + format: int32 + description: Total number of components + critical: + type: integer + format: int32 + description: Number of vulnerabilities with critical severity + high: + type: integer + format: int32 + description: Number of vulnerabilities with high severity + inheritedRiskScore: + type: number + format: double + description: The inherited risk score + low: + type: integer + format: int32 + description: Number of vulnerabilities with low severity + medium: + type: integer + format: int32 + description: Number of vulnerabilities with medium severity + policyViolationsFail: + type: integer + format: int32 + description: Number of policy violations with status FAIL + policyViolationsInfo: + type: integer + format: int32 + description: Number of policy violations with status WARN + policyViolationsLicenseTotal: + type: integer + format: int32 + description: Number of license policy violations + policyViolationsOperationalTotal: + type: integer + format: int32 + description: Number of operational policy violations + policyViolationsSecurityTotal: + type: integer + format: int32 + description: Number of security policy violations + policyViolationsTotal: + type: integer + format: int32 + description: Total number of policy violations + policyViolationsWarn: + type: integer + format: int32 + description: Number of policy violations with status WARN + unassigned: + type: integer + format: int32 + description: Number of vulnerabilities with unassigned severity + vulnerabilities: + type: integer + format: int32 + description: Total number of vulnerabilities + required: + - components + - critical + - high + - inheritedRiskScore + - low + - medium + - policyViolationsFail + - policyViolationsInfo + - policyViolationsLicenseTotal + - policyViolationsOperationalTotal + - policyViolationsSecurityTotal + - policyViolationsTotal + - policyViolationsWarn + - unassigned + - vulnerabilities + ConfigProperty: + type: object + properties: + description: + type: string + maxLength: 255 + minLength: 0 + pattern: "[\\P{Cc}]+" + groupName: + type: string + maxLength: 255 + minLength: 1 + pattern: "[\\P{Cc}]+" + propertyName: + type: string + maxLength: 255 + minLength: 1 + pattern: "[\\P{Cc}]+" + propertyType: + type: string + enum: + - BOOLEAN + - INTEGER + - NUMBER + - STRING + - TIMESTAMP + - URL + - UUID + propertyValue: + type: string + pattern: "[\\P{Cc}]+" + required: + - groupName + - propertyName + - propertyType + CreateNotificationPublisherRequest: + type: object + properties: + description: + type: string + extensionName: + type: string + minLength: 1 + name: + type: string + minLength: 1 + template: + type: string + templateMimeType: + type: string + required: + - extensionName + - name + CreateNotificationRuleRequest: + type: object + properties: + level: + type: string + enum: + - INFORMATIONAL + - WARNING + - ERROR + name: + type: string + minLength: 1 + publisher: + $ref: "#/components/schemas/Publisher" + scope: + type: string + enum: + - SYSTEM + - PORTFOLIO + required: + - level + - name + - publisher + - scope + CreateScheduledNotificationRuleRequest: + type: object + properties: + level: + type: string + enum: + - INFORMATIONAL + - WARNING + - ERROR + name: + type: string + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + publisher: + $ref: "#/components/schemas/Publisher" + scope: + type: string + enum: + - SYSTEM + - PORTFOLIO + required: + - level + - name + - publisher + - scope + Cwe: + type: object + properties: + cweId: + type: integer + format: int32 + name: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + DataClassification: + type: object + properties: + direction: + type: string + enum: + - INBOUND + - OUTBOUND + - BI_DIRECTIONAL + - UNKNOWN + name: + type: string + DependencyGraphResponse: + type: object + properties: + directDependencies: + type: string + latestVersion: + type: string + name: + type: string + purl: + type: string + uuid: + type: string + format: uuid + version: + type: string + DependencyMetrics: + type: object + properties: + critical: + type: integer + format: int32 + findingsAudited: + type: integer + format: int32 + findingsTotal: + type: integer + format: int32 + findingsUnaudited: + type: integer + format: int32 + firstOccurrence: + type: integer + format: int64 + description: UNIX epoch timestamp in milliseconds + high: + type: integer + format: int32 + inheritedRiskScore: + type: number + format: double + lastOccurrence: + type: integer + format: int64 + description: UNIX epoch timestamp in milliseconds + low: + type: integer + format: int32 + medium: + type: integer + format: int32 + policyViolationsAudited: + type: integer + format: int32 + policyViolationsFail: + type: integer + format: int32 + policyViolationsInfo: + type: integer + format: int32 + policyViolationsLicenseAudited: + type: integer + format: int32 + policyViolationsLicenseTotal: + type: integer + format: int32 + policyViolationsLicenseUnaudited: + type: integer + format: int32 + policyViolationsOperationalAudited: + type: integer + format: int32 + policyViolationsOperationalTotal: + type: integer + format: int32 + policyViolationsOperationalUnaudited: + type: integer + format: int32 + policyViolationsSecurityAudited: + type: integer + format: int32 + policyViolationsSecurityTotal: + type: integer + format: int32 + policyViolationsSecurityUnaudited: + type: integer + format: int32 + policyViolationsTotal: + type: integer + format: int32 + policyViolationsUnaudited: + type: integer + format: int32 + policyViolationsWarn: + type: integer + format: int32 + suppressed: + type: integer + format: int32 + unassigned: + type: integer + format: int32 + vulnerabilities: + type: integer + format: int32 + required: + - firstOccurrence + - lastOccurrence + Epss: + type: object + properties: + cve: + type: string + minLength: 1 + percentile: + type: number + score: + type: number + required: + - cve + ExternalReference: + type: object + properties: + comment: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + type: + type: string + enum: + - vcs + - issue-tracker + - website + - advisories + - bom + - mailing-list + - social + - chat + - documentation + - support + - source-distribution + - distribution + - distribution-intake + - license + - build-meta + - build-system + - release-notes + - security-contact + - model_card + - attestation + - threat-model + - adversary-model + - risk-assessment + - vulnerability-assertion + - exploitability-statement + - pentest-report + - static-analysis-report + - dynamic-analysis-report + - runtime-analysis-report + - component-analysis-report + - maturity-report + - certification-report + - codified-infrastructure + - quality-metrics + - log + - configuration + - evidence + - formulation + - rfc-9116 + - electronic-signature + - digital-signature + - other + url: + type: string + minLength: 1 + required: + - url + Finding: + type: object + properties: + analysis: + type: object + additionalProperties: + type: object + attribution: + type: object + additionalProperties: + type: object + component: + type: object + additionalProperties: + type: object + matrix: + type: string + vulnerability: + type: object + additionalProperties: + type: object + Framework: + type: object + properties: + name: + type: string + timestamp: + type: string + uuid: + type: string + version: + type: string + IdentifiableObject: + type: object + properties: + uuid: + type: string + InvalidBomProblemDetails: + type: object + allOf: + - $ref: "#/components/schemas/ProblemDetails" + - type: object + properties: + errors: + type: array + description: Errors identified during schema validation + items: + type: string + description: Errors identified during schema validation + required: + - detail + - status + - title + InvalidNotificationFilterExpressionProblemDetails: + type: object + allOf: + - $ref: "#/components/schemas/ProblemDetails" + - type: object + properties: + errors: + type: array + description: Errors identified during CEL expression compilation + items: + $ref: "#/components/schemas/CelExpressionError" + required: + - detail + - status + - title + IsTokenBeingProcessedResponse: + type: object + properties: + processing: + type: boolean + required: + - processing + LdapUser: + type: object + properties: + dn: + type: string + maxLength: 255 + minLength: 1 + pattern: "[\\P{Cc}]+" + email: + type: string + maxLength: 255 + minLength: 0 + pattern: "[\\P{Cc}]+" + permissions: + type: array + items: + $ref: "#/components/schemas/Permission" + username: + type: string + maxLength: 255 + minLength: 1 + pattern: "[\\P{Cc}]+" + required: + - dn + - username + License: + type: object + properties: + isCustomLicense: + type: boolean + isDeprecatedLicenseId: + type: boolean + isFsfLibre: + type: boolean + isOsiApproved: + type: boolean + licenseComments: + type: string + licenseGroups: + type: array + items: + $ref: "#/components/schemas/LicenseGroup" + licenseId: + type: string + maxLength: 255 + minLength: 1 + pattern: "^[a-zA-Z0-9_.\\-+]*$" + licenseText: + type: string + name: + type: string + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + seeAlso: + type: array + items: + type: string + standardLicenseHeader: + type: string + standardLicenseTemplate: + type: string + uuid: + type: string + format: uuid + required: + - licenseId + - name + - uuid + LicenseGroup: + type: object + properties: + licenses: + type: array + items: + $ref: "#/components/schemas/License" + name: + type: string + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + riskWeight: + type: integer + format: int32 + uuid: + type: string + format: uuid + required: + - name + - uuid + ManagedUser: + type: object + properties: + confirmPassword: + type: string + email: + type: string + maxLength: 255 + minLength: 0 + pattern: "[\\P{Cc}]+" + forcePasswordChange: + type: boolean + fullname: + type: string + maxLength: 255 + minLength: 0 + pattern: "[\\P{Cc}]+" + lastPasswordChange: + type: string + format: date-time + newPassword: + type: string + nonExpiryPassword: + type: boolean + permissions: + type: array + items: + $ref: "#/components/schemas/Permission" + suspended: + type: boolean + teams: + type: array + items: + $ref: "#/components/schemas/Team" + username: + type: string + maxLength: 255 + minLength: 1 + pattern: "[\\P{Cc}]+" + required: + - lastPasswordChange + - username + MappedLdapGroup: + type: object + properties: + dn: + type: string + maxLength: 255 + minLength: 1 + pattern: "[\\P{Cc}]+" + uuid: + type: string + format: uuid + required: + - dn + - uuid + MappedLdapGroupRequest: + type: object + properties: + dn: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + team: + type: string + pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + required: + - dn + - team + MappedOidcGroup: + type: object + properties: + group: + $ref: "#/components/schemas/OidcGroup" + uuid: + type: string + format: uuid + required: + - uuid + MappedOidcGroupRequest: + type: object + properties: + group: + type: string + pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + team: + type: string + pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + required: + - group + - team + NotificationPublisher: + type: object + properties: + defaultPublisher: + type: boolean + description: + type: string + maxLength: 1024 + minLength: 0 + extensionName: + type: string + maxLength: 1024 + minLength: 1 + name: + type: string + maxLength: 255 + minLength: 1 + template: + type: string + templateMimeType: + type: string + maxLength: 255 + minLength: 1 + uuid: + type: string + format: uuid + required: + - extensionName + - name + - templateMimeType + - uuid + NotificationRule: + type: object + properties: + enabled: + type: boolean + filterExpression: + type: string + logSuccessfulPublish: + type: boolean + message: + type: string + maxLength: 1024 + minLength: 0 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + name: + type: string + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + notificationLevel: + type: string + enum: + - INFORMATIONAL + - WARNING + - ERROR + notifyChildren: + type: boolean + notifyOn: + type: array + items: + type: string + enum: + - CONFIGURATION + - DATASOURCE_MIRRORING + - REPOSITORY + - INTEGRATION + - FILE_SYSTEM + - ANALYZER + - NEW_VULNERABILITY + - NEW_VULNERABLE_DEPENDENCY + - VULNERABILITY_RETRACTED + - PROJECT_AUDIT_CHANGE + - BOM_CONSUMED + - BOM_PROCESSED + - BOM_PROCESSING_FAILED + - BOM_VALIDATION_FAILED + - VEX_CONSUMED + - VEX_PROCESSED + - POLICY_VIOLATION + - PROJECT_CREATED + - PROJECT_VULN_ANALYSIS_COMPLETE + - USER_CREATED + - USER_DELETED + - NEW_VULNERABILITIES_SUMMARY + - NEW_POLICY_VIOLATIONS_SUMMARY + uniqueItems: true + projects: + type: array + items: + $ref: "#/components/schemas/Project" + publisher: + $ref: "#/components/schemas/NotificationPublisher" + publisherConfig: + type: string + scheduleCron: + type: string + description: Schedule of this rule as cron expression. Must not be set for + rules with trigger type EVENT. + scheduleLastTriggeredAt: + type: integer + format: int64 + description: "When the schedule last triggered, as UNIX epoch timestamp\ + \ in milliseconds" + readOnly: true + scheduleNextTriggerAt: + type: integer + format: int64 + description: "When the schedule triggers next, as UNIX epoch timestamp in\ + \ milliseconds" + readOnly: true + scheduleSkipUnchanged: + type: boolean + description: Whether to skip emitting a scheduled notification if it doesn't + contain any changes since its last emission. Must not be set for rules + with trigger type EVENT. + scope: + type: string + enum: + - SYSTEM + - PORTFOLIO + tags: + type: array + items: + $ref: "#/components/schemas/Tag" + uniqueItems: true + teams: + type: array + items: + $ref: "#/components/schemas/Team" + uniqueItems: true + triggerType: + type: string + enum: + - EVENT + - SCHEDULE + readOnly: true + uuid: + type: string + format: uuid + required: + - name + - scope + - triggerType + - uuid + OidcGroup: + type: object + properties: + name: + type: string + maxLength: 255 + minLength: 1 + pattern: "[\\P{Cc}]+" + uuid: + type: string + format: uuid + required: + - name + - uuid + OidcUser: + type: object + properties: + email: + type: string + maxLength: 255 + minLength: 0 + pattern: "[\\P{Cc}]+" + subjectIdentifier: + type: string + maxLength: 255 + minLength: 1 + pattern: "[\\P{Cc}]+" + username: + type: string + maxLength: 255 + minLength: 1 + pattern: "[\\P{Cc}]+" + required: + - username + OrganizationalContact: + type: object + properties: + email: + type: string + name: + type: string + phone: + type: string + OrganizationalEntity: + type: object + properties: + contacts: + type: array + items: + $ref: "#/components/schemas/OrganizationalContact" + name: + type: string + urls: + type: array + items: + type: string + Permission: + type: object + properties: + description: + type: string + ldapUsers: + type: array + items: + $ref: "#/components/schemas/LdapUser" + managedUsers: + type: array + items: + $ref: "#/components/schemas/ManagedUser" + name: + type: string + maxLength: 255 + minLength: 1 + pattern: "^[a-zA-Z_0-9]*$" + oidcUsers: + type: array + items: + $ref: "#/components/schemas/OidcUser" + required: + - name + Policy: + type: object + properties: + global: + type: boolean + includeChildren: + type: boolean + name: + type: string + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + onlyLatestProjectVersion: + type: boolean + operator: + type: string + enum: + - ALL + - ANY + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + policyConditions: + type: array + items: + $ref: "#/components/schemas/PolicyCondition" + projects: + type: array + items: + $ref: "#/components/schemas/Project" + tags: + type: array + items: + $ref: "#/components/schemas/Tag" + uniqueItems: true + uuid: + type: string + format: uuid + violationState: + type: string + enum: + - INFO + - WARN + - FAIL + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + required: + - name + - operator + - uuid + - violationState + PolicyCondition: + type: object + properties: + operator: + type: string + enum: + - IS + - IS_NOT + - MATCHES + - NO_MATCH + - NUMERIC_GREATER_THAN + - NUMERIC_LESS_THAN + - NUMERIC_EQUAL + - NUMERIC_NOT_EQUAL + - NUMERIC_GREATER_THAN_OR_EQUAL + - NUMERIC_LESSER_THAN_OR_EQUAL + - CONTAINS_ALL + - CONTAINS_ANY + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + policy: + $ref: "#/components/schemas/Policy" + subject: + type: string + enum: + - AGE + - COORDINATES + - CPE + - EXPRESSION + - LICENSE + - LICENSE_GROUP + - PACKAGE_URL + - SEVERITY + - SWID_TAGID + - VERSION + - COMPONENT_HASH + - CWE + - VULNERABILITY_ID + - VERSION_DISTANCE + - EPSS + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + uuid: + type: string + format: uuid + value: + type: string + maxLength: 2147483647 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + violationType: + type: string + enum: + - LICENSE + - SECURITY + - OPERATIONAL + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + required: + - operator + - subject + - uuid + - value + PolicyViolation: + type: object + properties: + analysis: + $ref: "#/components/schemas/ViolationAnalysis" + component: + $ref: "#/components/schemas/Component" + policyCondition: + $ref: "#/components/schemas/PolicyCondition" + project: + $ref: "#/components/schemas/Project" + text: + type: string + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + timestamp: + type: integer + format: int64 + description: UNIX epoch timestamp in milliseconds + type: + type: string + enum: + - LICENSE + - SECURITY + - OPERATIONAL + uuid: + type: string + format: uuid + required: + - timestamp + - uuid + PortfolioMetrics: + type: object + properties: + components: + type: integer + format: int32 + critical: + type: integer + format: int32 + findingsAudited: + type: integer + format: int32 + findingsTotal: + type: integer + format: int32 + findingsUnaudited: + type: integer + format: int32 + firstOccurrence: + type: integer + format: int64 + description: UNIX epoch timestamp in milliseconds + high: + type: integer + format: int32 + inheritedRiskScore: + type: number + format: double + lastOccurrence: + type: integer + format: int64 + description: UNIX epoch timestamp in milliseconds + low: + type: integer + format: int32 + medium: + type: integer + format: int32 + policyViolationsAudited: + type: integer + format: int32 + policyViolationsFail: + type: integer + format: int32 + policyViolationsInfo: + type: integer + format: int32 + policyViolationsLicenseAudited: + type: integer + format: int32 + policyViolationsLicenseTotal: + type: integer + format: int32 + policyViolationsLicenseUnaudited: + type: integer + format: int32 + policyViolationsOperationalAudited: + type: integer + format: int32 + policyViolationsOperationalTotal: + type: integer + format: int32 + policyViolationsOperationalUnaudited: + type: integer + format: int32 + policyViolationsSecurityAudited: + type: integer + format: int32 + policyViolationsSecurityTotal: + type: integer + format: int32 + policyViolationsSecurityUnaudited: + type: integer + format: int32 + policyViolationsTotal: + type: integer + format: int32 + policyViolationsUnaudited: + type: integer + format: int32 + policyViolationsWarn: + type: integer + format: int32 + projects: + type: integer + format: int32 + suppressed: + type: integer + format: int32 + unassigned: + type: integer + format: int32 + vulnerabilities: + type: integer + format: int32 + vulnerableComponents: + type: integer + format: int32 + vulnerableProjects: + type: integer + format: int32 + required: + - firstOccurrence + - lastOccurrence + ProblemDetails: + type: object + description: An RFC 9457 problem object + properties: + detail: + type: string + description: Human-readable explanation specific to this occurrence of the + problem + example: Example detail + instance: + type: string + format: uri + description: Reference URI that identifies the specific occurrence of the + problem + example: https://api.example.org/foo/bar/example-instance + status: + type: integer + format: int32 + description: HTTP status code generated by the origin server for this occurrence + of the problem + example: 400 + title: + type: string + description: "Short, human-readable summary of the problem type" + example: Example title + type: + type: string + format: uri + description: A URI reference that identifies the problem type + example: https://api.example.org/foo/bar/example-problem + required: + - detail + - status + - title + Project: + type: object + properties: + accessTeams: + type: array + items: + $ref: "#/components/schemas/Team" + uniqueItems: true + writeOnly: true + active: + type: boolean + author: + type: string + authors: + type: array + items: + $ref: "#/components/schemas/OrganizationalContact" + bomRef: + type: string + children: + type: array + items: + $ref: "#/components/schemas/Project" + classifier: + type: string + enum: + - APPLICATION + - FRAMEWORK + - LIBRARY + - CONTAINER + - OPERATING_SYSTEM + - DEVICE + - FIRMWARE + - FILE + - PLATFORM + - DEVICE_DRIVER + - MACHINE_LEARNING_MODEL + - DATA + collectionLogic: + type: string + enum: + - AGGREGATE_DIRECT_CHILDREN + - AGGREGATE_DIRECT_CHILDREN_WITH_TAG + - AGGREGATE_LATEST_VERSION_CHILDREN + collectionTag: + $ref: "#/components/schemas/Tag" + cpe: + type: string + maxLength: 255 + minLength: 0 + pattern: "(cpe:2\\.3:[aho\\*\\-](:(((\\?*|\\*?)([a-zA-Z0-9\\-\\._]|(\\\\\ + [\\\\\\*\\?!\"#$$%&'\\(\\)\\+,/:;<=>@\\[\\]\\^`\\{\\|}~]))+(\\?*|\\*?))|[\\\ + *\\-])){5}(:(([a-zA-Z]{2,3}(-([a-zA-Z]{2}|[0-9]{3}))?)|[\\*\\-]))(:(((\\\ + ?*|\\*?)([a-zA-Z0-9\\-\\._]|(\\\\[\\\\\\*\\?!\"#$$%&'\\(\\)\\+,/:;<=>@\\\ + [\\]\\^`\\{\\|}~]))+(\\?*|\\*?))|[\\*\\-])){4})|([c][pP][eE]:/[AHOaho]?(:[A-Za-z0-9\\\ + ._\\-~%]*){0,6})" + description: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + directDependencies: + type: string + externalReferences: + type: array + items: + $ref: "#/components/schemas/ExternalReference" + group: + type: string + maxLength: 255 + minLength: 0 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + inactiveSince: + type: integer + format: int64 + description: UNIX epoch timestamp in milliseconds + readOnly: true + isLatest: + type: boolean + lastBomImport: + type: integer + format: int64 + description: UNIX epoch timestamp in milliseconds + lastBomImportFormat: + type: string + lastInheritedRiskScore: + type: number + format: double + lastVulnerabilityAnalysis: + type: integer + format: int64 + description: UNIX epoch timestamp in milliseconds + manufacturer: + $ref: "#/components/schemas/OrganizationalEntity" + metadata: + $ref: "#/components/schemas/ProjectMetadata" + metrics: + $ref: "#/components/schemas/ProjectMetrics" + name: + type: string + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + parent: + $ref: "#/components/schemas/Project" + publisher: + type: string + maxLength: 255 + minLength: 0 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + purl: + type: string + maxLength: 1024 + minLength: 0 + supplier: + $ref: "#/components/schemas/OrganizationalEntity" + swidTagId: + type: string + maxLength: 255 + minLength: 0 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + tags: + type: array + items: + $ref: "#/components/schemas/Tag" + uniqueItems: true + uuid: + type: string + format: uuid + version: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + versions: + type: array + items: + $ref: "#/components/schemas/ProjectVersion" + required: + - lastBomImport + - name + - uuid + ProjectMetadata: + type: object + properties: + authors: + type: array + items: + $ref: "#/components/schemas/OrganizationalContact" + supplier: + $ref: "#/components/schemas/OrganizationalEntity" + tools: + $ref: "#/components/schemas/Tools" + readOnly: true + ProjectMetrics: + type: object + properties: + components: + type: integer + format: int32 + critical: + type: integer + format: int32 + findingsAudited: + type: integer + format: int32 + findingsTotal: + type: integer + format: int32 + findingsUnaudited: + type: integer + format: int32 + firstOccurrence: + type: integer + format: int64 + description: UNIX epoch timestamp in milliseconds + high: + type: integer + format: int32 + inheritedRiskScore: + type: number + format: double + lastOccurrence: + type: integer + format: int64 + description: UNIX epoch timestamp in milliseconds + low: + type: integer + format: int32 + medium: + type: integer + format: int32 + policyViolationsAudited: + type: integer + format: int32 + policyViolationsFail: + type: integer + format: int32 + policyViolationsInfo: + type: integer + format: int32 + policyViolationsLicenseAudited: + type: integer + format: int32 + policyViolationsLicenseTotal: + type: integer + format: int32 + policyViolationsLicenseUnaudited: + type: integer + format: int32 + policyViolationsOperationalAudited: + type: integer + format: int32 + policyViolationsOperationalTotal: + type: integer + format: int32 + policyViolationsOperationalUnaudited: + type: integer + format: int32 + policyViolationsSecurityAudited: + type: integer + format: int32 + policyViolationsSecurityTotal: + type: integer + format: int32 + policyViolationsSecurityUnaudited: + type: integer + format: int32 + policyViolationsTotal: + type: integer + format: int32 + policyViolationsUnaudited: + type: integer + format: int32 + policyViolationsWarn: + type: integer + format: int32 + suppressed: + type: integer + format: int32 + unassigned: + type: integer + format: int32 + vulnerabilities: + type: integer + format: int32 + vulnerableComponents: + type: integer + format: int32 + required: + - firstOccurrence + - lastOccurrence + ProjectProperty: + type: object + properties: + description: + type: string + maxLength: 255 + minLength: 0 + pattern: "[\\P{Cc}]+" + groupName: + type: string + maxLength: 255 + minLength: 1 + pattern: "[\\P{Cc}]+" + propertyName: + type: string + maxLength: 255 + minLength: 1 + pattern: "[\\P{Cc}]+" + propertyType: + type: string + enum: + - BOOLEAN + - INTEGER + - NUMBER + - STRING + - TIMESTAMP + - URL + - UUID + propertyValue: + type: string + maxLength: 1024 + minLength: 0 + pattern: "[\\P{Cc}]+" + required: + - groupName + - propertyName + - propertyType + ProjectVersion: + type: object + properties: + active: + type: boolean + uuid: + type: string + format: uuid + version: + type: string + Publisher: + type: object + properties: + uuid: + type: string + format: uuid + required: + - uuid + Repository: + type: object + properties: + authenticationRequired: + type: boolean + enabled: + type: boolean + identifier: + type: string + minLength: 1 + internal: + type: boolean + password: + type: string + resolutionOrder: + type: integer + format: int32 + type: + type: string + enum: + - MAVEN + - NPM + - GEM + - PYPI + - NUGET + - HEX + - COMPOSER + - CARGO + - GO_MODULES + - CPAN + - GITHUB + - HACKAGE + - NIXPKGS + - UNSUPPORTED + url: + type: string + minLength: 1 + username: + type: string + uuid: + type: string + format: uuid + required: + - authenticationRequired + - enabled + - identifier + - internal + - resolutionOrder + - type + - url + - uuid + RepositoryMetaComponent: + type: object + properties: + lastCheck: + type: integer + format: int64 + description: UNIX epoch timestamp in milliseconds + latestVersion: + type: string + name: + type: string + namespace: + type: string + repositoryType: + type: string + enum: + - MAVEN + - NPM + - GEM + - PYPI + - NUGET + - HEX + - COMPOSER + - CARGO + - GO_MODULES + - CPAN + - GITHUB + - HACKAGE + - NIXPKGS + - UNSUPPORTED + Score: + type: object + properties: + businessImpact: + type: string + enum: + - HIGH + - MEDIUM + - LOW + businessImpactScore: + type: number + format: double + likelihood: + type: string + enum: + - HIGH + - MEDIUM + - LOW + likelihoodScore: + type: number + format: double + technicalImpact: + type: string + enum: + - HIGH + - MEDIUM + - LOW + technicalImpactScore: + type: number + format: double + ServiceComponent: + type: object + properties: + authenticated: + type: boolean + bomRef: + type: string + children: + type: array + items: + $ref: "#/components/schemas/ServiceComponent" + crossesTrustBoundary: + type: boolean + data: + type: array + items: + $ref: "#/components/schemas/DataClassification" + description: + type: string + maxLength: 1024 + minLength: 0 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + endpoints: + type: array + items: + type: string + externalReferences: + type: array + items: + $ref: "#/components/schemas/ExternalReference" + group: + type: string + maxLength: 255 + minLength: 0 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + lastInheritedRiskScore: + type: number + format: double + name: + type: string + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + notes: + type: string + parent: + $ref: "#/components/schemas/ServiceComponent" + project: + $ref: "#/components/schemas/Project" + provider: + $ref: "#/components/schemas/OrganizationalEntity" + uuid: + type: string + format: uuid + version: + type: string + maxLength: 255 + minLength: 0 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + vulnerabilities: + type: array + items: + $ref: "#/components/schemas/Vulnerability" + required: + - name + - project + - uuid + Tag: + type: object + properties: + name: + type: string + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + required: + - name + TagListResponseItem: + type: object + properties: + collectionProjectCount: + type: integer + format: int64 + description: Number of collection projects assigned to this tag + name: + type: string + description: Name of the tag + notificationRuleCount: + type: integer + format: int64 + description: Number of notification rules assigned to this tag + policyCount: + type: integer + format: int64 + description: Number of policies assigned to this tag + projectCount: + type: integer + format: int64 + description: Number of projects assigned to this tag + vulnerabilityCount: + type: integer + format: int64 + description: Number of vulnerabilities assigned to this tag + required: + - collectionProjectCount + - name + - notificationRuleCount + - policyCount + - projectCount + - vulnerabilityCount + TagOperationProblemDetails: + type: object + allOf: + - $ref: "#/components/schemas/ProblemDetails" + - type: object + properties: + errors: + type: object + additionalProperties: + type: string + description: "Errors encountered during the operation, grouped by tag\ + \ name" + description: "Errors encountered during the operation, grouped by tag\ + \ name" + required: + - detail + - status + - title + TaggedCollectionProjectListResponseItem: + type: object + properties: + name: + type: string + description: Name of the collection project + uuid: + type: string + format: uuid + description: UUID of the collection project + version: + type: string + description: Version of the collection project + required: + - name + - uuid + TaggedPolicyListResponseItem: + type: object + properties: + name: + type: string + description: Name of the policy + uuid: + type: string + format: uuid + description: UUID of the policy + required: + - name + - uuid + TaggedProjectListResponseItem: + type: object + properties: + name: + type: string + description: Name of the project + uuid: + type: string + format: uuid + description: UUID of the project + version: + type: string + description: Version of the project + required: + - name + - uuid + TaggedVulnerabilityListResponseItem: + type: object + properties: + source: + type: string + description: Source of the vulnerability + uuid: + type: string + format: uuid + description: UUID of the vulnerability + vulnId: + type: string + description: Vulnerability ID + required: + - source + - uuid + - vulnId + Team: + type: object + properties: + apiKeys: + type: array + items: + $ref: "#/components/schemas/ApiKey" + ldapUsers: + type: array + items: + $ref: "#/components/schemas/LdapUser" + managedUsers: + type: array + items: + $ref: "#/components/schemas/ManagedUser" + mappedLdapGroups: + type: array + items: + $ref: "#/components/schemas/MappedLdapGroup" + mappedOidcGroups: + type: array + items: + $ref: "#/components/schemas/MappedOidcGroup" + name: + type: string + maxLength: 255 + minLength: 1 + pattern: "[\\P{Cc}]+" + oidcUsers: + type: array + items: + $ref: "#/components/schemas/OidcUser" + permissions: + type: array + items: + $ref: "#/components/schemas/Permission" + uuid: + type: string + format: uuid + required: + - name + - uuid + TeamAlreadyExistsProblemDetails: + type: object + properties: + detail: + type: string + description: Human-readable explanation specific to this occurrence of the + problem + example: Example detail + instance: + type: string + format: uri + description: Reference URI that identifies the specific occurrence of the + problem + example: https://api.example.org/foo/bar/example-instance + status: + type: integer + format: int32 + description: HTTP status code generated by the origin server for this occurrence + of the problem + example: 400 + teamName: + type: string + description: Name of the existing team + teamUuid: + type: string + format: uuid + description: UUID of the existing team + title: + type: string + description: "Short, human-readable summary of the problem type" + example: Example title + type: + type: string + format: uri + description: A URI reference that identifies the problem type + example: https://api.example.org/foo/bar/example-problem + required: + - detail + - status + - title + TeamPermissionsSetRequest: + type: object + properties: + permissions: + type: array + items: + type: string + enum: + - BOM_UPLOAD + - VIEW_PORTFOLIO + - PORTFOLIO_ACCESS_CONTROL_BYPASS + - PORTFOLIO_MANAGEMENT + - PORTFOLIO_MANAGEMENT_CREATE + - PORTFOLIO_MANAGEMENT_READ + - PORTFOLIO_MANAGEMENT_UPDATE + - PORTFOLIO_MANAGEMENT_DELETE + - VIEW_VULNERABILITY + - VULNERABILITY_ANALYSIS + - VULNERABILITY_ANALYSIS_CREATE + - VULNERABILITY_ANALYSIS_READ + - VULNERABILITY_ANALYSIS_UPDATE + - VIEW_POLICY_VIOLATION + - VULNERABILITY_MANAGEMENT + - VULNERABILITY_MANAGEMENT_CREATE + - VULNERABILITY_MANAGEMENT_READ + - VULNERABILITY_MANAGEMENT_UPDATE + - VULNERABILITY_MANAGEMENT_DELETE + - POLICY_VIOLATION_ANALYSIS + - ACCESS_MANAGEMENT + - ACCESS_MANAGEMENT_CREATE + - ACCESS_MANAGEMENT_READ + - ACCESS_MANAGEMENT_UPDATE + - ACCESS_MANAGEMENT_DELETE + - SECRET_MANAGEMENT + - SECRET_MANAGEMENT_CREATE + - SECRET_MANAGEMENT_UPDATE + - SECRET_MANAGEMENT_DELETE + - SYSTEM_CONFIGURATION + - SYSTEM_CONFIGURATION_CREATE + - SYSTEM_CONFIGURATION_READ + - SYSTEM_CONFIGURATION_UPDATE + - SYSTEM_CONFIGURATION_DELETE + - PROJECT_CREATION_UPLOAD + - POLICY_MANAGEMENT + - POLICY_MANAGEMENT_CREATE + - POLICY_MANAGEMENT_READ + - POLICY_MANAGEMENT_UPDATE + - POLICY_MANAGEMENT_DELETE + - TAG_MANAGEMENT + - TAG_MANAGEMENT_DELETE + - VIEW_BADGES + uniqueItems: true + team: + type: string + minLength: 1 + required: + - permissions + - team + TeamSelfResponse: + type: object + properties: + name: + type: string + permissions: + type: array + items: + $ref: "#/components/schemas/Permission" + uuid: + type: string + format: uuid + TeamsSetRequest: + type: object + properties: + teams: + type: array + items: + type: string + uniqueItems: true + username: + type: string + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + required: + - teams + - username + Tools: + type: object + properties: + components: + type: array + items: + $ref: "#/components/schemas/Component" + services: + type: array + items: + $ref: "#/components/schemas/ServiceComponent" + UpdateNotificationPublisherRequest: + type: object + properties: + description: + type: string + extensionName: + type: string + minLength: 1 + name: + type: string + minLength: 1 + template: + type: string + templateMimeType: + type: string + uuid: + type: string + format: uuid + required: + - extensionName + - name + - uuid + UpdateNotificationRuleRequest: + type: object + properties: + enabled: + type: boolean + filterExpression: + type: string + maxLength: 2048 + minLength: 0 + level: + type: string + enum: + - INFORMATIONAL + - WARNING + - ERROR + logSuccessfulPublish: + type: boolean + name: + type: string + minLength: 1 + notifyChildren: + type: boolean + notifyOn: + type: array + items: + type: string + enum: + - CONFIGURATION + - DATASOURCE_MIRRORING + - REPOSITORY + - INTEGRATION + - FILE_SYSTEM + - ANALYZER + - NEW_VULNERABILITY + - NEW_VULNERABLE_DEPENDENCY + - VULNERABILITY_RETRACTED + - PROJECT_AUDIT_CHANGE + - BOM_CONSUMED + - BOM_PROCESSED + - BOM_PROCESSING_FAILED + - BOM_VALIDATION_FAILED + - VEX_CONSUMED + - VEX_PROCESSED + - POLICY_VIOLATION + - PROJECT_CREATED + - PROJECT_VULN_ANALYSIS_COMPLETE + - USER_CREATED + - USER_DELETED + - NEW_VULNERABILITIES_SUMMARY + - NEW_POLICY_VIOLATIONS_SUMMARY + uniqueItems: true + publisherConfig: + type: string + scheduleCron: + type: string + scheduleSkipUnchanged: + type: boolean + scope: + type: string + enum: + - SYSTEM + - PORTFOLIO + tags: + type: array + items: + $ref: "#/components/schemas/Tag" + uniqueItems: true + uuid: + type: string + format: uuid + required: + - level + - name + - scope + - uuid + User: + type: object + properties: + email: + type: string + maxLength: 255 + minLength: 0 + pattern: "[\\P{Cc}]+" + permissions: + type: array + items: + $ref: "#/components/schemas/Permission" + teams: + type: array + items: + $ref: "#/components/schemas/Team" + username: + type: string + maxLength: 255 + minLength: 1 + pattern: "[\\P{Cc}]+" + required: + - username + UserPermissionsSetRequest: + type: object + properties: + permissions: + type: array + items: + type: string + enum: + - BOM_UPLOAD + - VIEW_PORTFOLIO + - PORTFOLIO_ACCESS_CONTROL_BYPASS + - PORTFOLIO_MANAGEMENT + - PORTFOLIO_MANAGEMENT_CREATE + - PORTFOLIO_MANAGEMENT_READ + - PORTFOLIO_MANAGEMENT_UPDATE + - PORTFOLIO_MANAGEMENT_DELETE + - VIEW_VULNERABILITY + - VULNERABILITY_ANALYSIS + - VULNERABILITY_ANALYSIS_CREATE + - VULNERABILITY_ANALYSIS_READ + - VULNERABILITY_ANALYSIS_UPDATE + - VIEW_POLICY_VIOLATION + - VULNERABILITY_MANAGEMENT + - VULNERABILITY_MANAGEMENT_CREATE + - VULNERABILITY_MANAGEMENT_READ + - VULNERABILITY_MANAGEMENT_UPDATE + - VULNERABILITY_MANAGEMENT_DELETE + - POLICY_VIOLATION_ANALYSIS + - ACCESS_MANAGEMENT + - ACCESS_MANAGEMENT_CREATE + - ACCESS_MANAGEMENT_READ + - ACCESS_MANAGEMENT_UPDATE + - ACCESS_MANAGEMENT_DELETE + - SECRET_MANAGEMENT + - SECRET_MANAGEMENT_CREATE + - SECRET_MANAGEMENT_UPDATE + - SECRET_MANAGEMENT_DELETE + - SYSTEM_CONFIGURATION + - SYSTEM_CONFIGURATION_CREATE + - SYSTEM_CONFIGURATION_READ + - SYSTEM_CONFIGURATION_UPDATE + - SYSTEM_CONFIGURATION_DELETE + - PROJECT_CREATION_UPLOAD + - POLICY_MANAGEMENT + - POLICY_MANAGEMENT_CREATE + - POLICY_MANAGEMENT_READ + - POLICY_MANAGEMENT_UPDATE + - POLICY_MANAGEMENT_DELETE + - TAG_MANAGEMENT + - TAG_MANAGEMENT_DELETE + - VIEW_BADGES + uniqueItems: true + username: + type: string + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + required: + - permissions + - username + VexSubmitRequest: + type: object + properties: + project: + type: string + pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + projectName: + type: string + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + projectVersion: + type: string + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + vex: + type: string + pattern: "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$" + required: + - project + - projectName + - projectVersion + - vex + ViolationAnalysis: + type: object + properties: + analysisComments: + type: array + items: + $ref: "#/components/schemas/ViolationAnalysisComment" + analysisState: + type: string + enum: + - APPROVED + - REJECTED + - NOT_SET + isSuppressed: + type: boolean + violationAnalysisState: + type: string + enum: + - APPROVED + - REJECTED + - NOT_SET + writeOnly: true + required: + - analysisState + ViolationAnalysisComment: + type: object + properties: + comment: + type: string + commenter: + type: string + timestamp: + type: integer + format: int64 + description: UNIX epoch timestamp in milliseconds + required: + - comment + - timestamp + ViolationAnalysisRequest: + type: object + properties: + analysisState: + type: string + enum: + - APPROVED + - REJECTED + - NOT_SET + comment: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + component: + type: string + pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + isSuppressed: + type: boolean + writeOnly: true + policyViolation: + type: string + pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + suppressed: + type: boolean + required: + - component + - policyViolation + VisibleTeams: + type: object + properties: + name: + type: string + uuid: + type: string + format: uuid + Vulnerability: + type: object + properties: + affectedActiveProjectCount: + type: integer + format: int32 + affectedComponents: + type: array + items: + $ref: "#/components/schemas/AffectedComponent" + affectedInactiveProjectCount: + type: integer + format: int32 + affectedProjectCount: + type: integer + format: int32 + aliases: + type: array + items: + $ref: "#/components/schemas/VulnerabilityAlias" + components: + type: array + items: + $ref: "#/components/schemas/Component" + created: + type: string + format: date-time + credits: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + cvssV2BaseScore: + type: number + cvssV2ExploitabilitySubScore: + type: number + cvssV2ImpactSubScore: + type: number + cvssV2Vector: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + cvssV3BaseScore: + type: number + cvssV3ExploitabilitySubScore: + type: number + cvssV3ImpactSubScore: + type: number + cvssV3Vector: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + cvssV4Score: + type: number + cvssV4Vector: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + cwes: + type: array + items: + $ref: "#/components/schemas/Cwe" + description: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + detail: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + epss: + $ref: "#/components/schemas/Epss" + epssPercentile: + type: number + epssScore: + type: number + friendlyVulnId: + type: string + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + owaspRRBusinessImpactScore: + type: number + owaspRRLikelihoodScore: + type: number + owaspRRTechnicalImpactScore: + type: number + owaspRRVector: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + patchedVersions: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + published: + type: string + format: date-time + recommendation: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + references: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + serviceComponents: + type: array + items: + $ref: "#/components/schemas/ServiceComponent" + severity: + type: string + enum: + - CRITICAL + - HIGH + - MEDIUM + - LOW + - INFO + - UNASSIGNED + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + source: + type: string + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + subTitle: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + tags: + type: array + items: + $ref: "#/components/schemas/Tag" + uniqueItems: true + title: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + updated: + type: string + format: date-time + uuid: + type: string + format: uuid + vulnId: + type: string + maxLength: 255 + minLength: 1 + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$" + vulnerableVersions: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + required: + - friendlyVulnId + - source + - uuid + - vulnId + VulnerabilityAlias: + type: object + properties: + csafId: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + cveId: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + ghsaId: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + gsdId: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + internalId: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + osvId: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + snykId: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + sonatypeId: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + vulnDbId: + type: string + pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$" + VulnerabilityMetrics: + type: object + properties: + count: + type: integer + format: int32 + measuredAt: + type: integer + format: int64 + description: UNIX epoch timestamp in milliseconds + month: + type: integer + format: int32 + year: + type: integer + format: int32 + required: + - measuredAt + WorkflowState: + type: object + properties: + failureReason: + type: string + parent: + $ref: "#/components/schemas/WorkflowState" + startedAt: + type: string + format: date-time + status: + type: string + enum: + - PENDING + - TIMED_OUT + - COMPLETED + - FAILED + - CANCELLED + - NOT_APPLICABLE + step: + type: string + enum: + - BOM_CONSUMPTION + - BOM_PROCESSING + - VULN_ANALYSIS + - REPO_META_ANALYSIS + - POLICY_EVALUATION + - METRICS_UPDATE + - POLICY_BUNDLE_SYNC + - PROJECT_CLONE + token: + type: string + format: uuid + updatedAt: + type: string + format: date-time + required: + - status + - step + - token + securitySchemes: + ApiKeyAuth: + in: header + name: X-Api-Key + type: apiKey + ApiKeyQueryAuth: + in: query + name: apiKey + type: apiKey + BearerAuth: + scheme: Bearer + type: http diff --git a/docs/reference/api/openapi-v2.yaml b/docs/reference/api/openapi-v2.yaml new file mode 100644 index 00000000..aa1a4021 --- /dev/null +++ b/docs/reference/api/openapi-v2.yaml @@ -0,0 +1,3813 @@ +openapi: 3.0.3 +info: + title: OWASP Dependency-Track + description: |- + # REST API of OWASP Dependency-Track + + ## Pagination + + This API implements token-based pagination. + Collection responses have the following structure: + + ```json + { + "items": [...], + "next_page_token": "abcdefg", + "total": { + "count": 100, + "type": "EXACT" + } + } + ``` + + `next_page_token` is present when more items exist, and absent otherwise. + To fetch the next page, pass it as the `page_token` query parameter. + + To navigate backwards, clients should keep track of previous page tokens + as they paginate through collections. The API does *not* provide + backward navigation! + + Collections that support sorting will only consider the `sort_by` + and `sort_direction` query parameters for the request of the first + page. For subsequent pages, sorting preferences are bound to the + page token. + + Page tokens are opaque strings. Clients should not try to interpret + or generate them. Their format may change without notice. + + The `total` object discloses how many items exist in the collection + *across all pages*. Because counting is expensive, some collections + that hold *a lot* of items may return partial counts (type `AT_LEAST`) + instead of exact counts (type `EXACT`). Which type to expect is usually + documented in the operation's description. + + ## Sorting + + Items in a collection can be sorted using the `sort_by` and `sort_direction` + query parameters. Which fields are sortable is documented in the respective + operation's description. + + Note that if no sortable fields are documented for an operation, + sorting is not supported *at all*. + contact: + name: The Dependency-Track Authors + url: https://github.com/DependencyTrack/dependency-track + email: dependencytrack@owasp.org + license: + name: Apache-2.0 + url: https://www.apache.org/licenses/LICENSE-2.0.html + version: 2.0.0 +servers: +- url: /api/v2 +security: +- apiKeyAuth: [] +- bearerAuth: [] +tags: +- name: Advisories + description: Endpoints related to advisories +- name: Components + description: Endpoints related to components +- name: Extensions + description: Endpoints related to extensions +- name: Projects + description: Endpoints related to projects +- name: Secrets + description: Endpoints related to secrets +- name: Task Queues + description: Endpoints related to task queue management +- name: Vulnerability Policies + description: Endpoints related to vulnerability policies +- name: Workflows + description: Endpoints related to workflows +paths: + /advisories: + get: + tags: + - Advisories + summary: List all advisories + description: |- + Returns a paginated list of advisories, sorted by name in ascending order. + + Always reports `EXACT` total counts. + + Requires the `VULNERABILITY_MANAGEMENT` or `VULNERABILITY_MANAGEMENT_READ` permission. + operationId: listAdvisories + parameters: + - name: format + in: query + description: "Filter advisories by format (e.g., CSAF)" + required: false + schema: + type: string + - name: search_text + in: query + description: Search text to filter advisories + required: false + schema: + type: string + - name: page_token + in: query + description: Opaque token pointing to a specific position in a collection + schema: + type: string + - name: limit + in: query + description: Maximum number of items to retrieve from the collection + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 100 + responses: + "200": + description: Paginated list of advisories + content: + application/json: + schema: + $ref: "#/components/schemas/list-advisories-response" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + default: + $ref: "#/components/responses/generic-error" + post: + tags: + - Advisories + summary: Upload advisory document + description: Requires permission VULNERABILITY_ANALYSIS_CREATE + operationId: uploadAdvisory + parameters: + - name: format + in: query + description: The format of the advisory document + required: true + schema: + type: string + enum: + - CSAF + requestBody: + content: + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + description: The advisory document file to upload + format: binary + required: true + responses: + "201": + description: Advisory Uploaded + headers: + Location: + description: URL of the created advisory + schema: + type: string + format: uri + content: + application/json: + schema: + $ref: "#/components/schemas/upload-advisory-response" + "400": + $ref: "#/components/responses/invalid-request-error" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "500": + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: "#/components/schemas/problem-details" + default: + $ref: "#/components/responses/generic-error" + /advisories/{id}: + get: + tags: + - Advisories + summary: Get advisory details + description: Requires permission VULNERABILITY_ANALYSIS_READ + operationId: getAdvisoryById + parameters: + - name: id + in: path + description: The ID of the advisory to view + required: true + schema: + type: string + format: uuid + responses: + "200": + description: Advisory details + content: + application/json: + schema: + $ref: "#/components/schemas/get-advisory-response" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + delete: + tags: + - Advisories + summary: Delete advisory + description: Requires permission VULNERABILITY_ANALYSIS_UPDATE + operationId: deleteAdvisory + parameters: + - name: id + in: path + description: The ID of the advisory to delete + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Advisory Deleted + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /advisories/{id}/mark-seen: + post: + tags: + - Advisories + summary: Mark advisory as seen + description: Requires permission VULNERABILITY_ANALYSIS_UPDATE + operationId: markAdvisoryAsSeen + parameters: + - name: id + in: path + description: The ID of the advisory to mark as seen + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Advisory Marked as Seen + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /components: + get: + tags: + - Components + summary: List all components + description: |- + Retrieves a list of all components matching the provided filter criteria. + + Text filters are case-insensitive. + + ### Sortable fields + + Sorting is supported for the following fields: + + * `name` + * `version` + * `group` + * `purl` + * `cpe` + * `last_inherited_risk_score` + + Requires permission VIEW_PORTFOLIO + operationId: listComponents + parameters: + - name: group_contains + in: query + description: Filter by group (substring match) + schema: + type: string + - name: name_contains + in: query + description: Filter by name (substring match) + schema: + type: string + - name: version_contains + in: query + description: Filter by version (substring match) + schema: + type: string + - name: purl_prefix + in: query + description: |- + Filter by PURL (prefix match). + + Must be a valid PURL, with at least `pkg:/` populated. + schema: + type: string + - name: cpe + in: query + description: |- + Filter by CPE (exact match). + + Must be a valid CPE. + schema: + type: string + - name: swid_tag_id_contains + in: query + description: Filter by SWID Tag ID (substring match) + schema: + type: string + - name: hash_type + in: query + description: The hash type to filter by + schema: + type: string + enum: + - MD5 + - SHA1 + - SHA_256 + - SHA_384 + - SHA_512 + - SHA3_256 + - SHA3_384 + - SHA3_512 + - BLAKE2B_256 + - BLAKE2B_384 + - BLAKE2B_512 + - BLAKE3 + - name: hash + in: query + description: |- + Filter by hash value (exact match). + + Requires `hash_type` to be set. + schema: + type: string + - name: limit + in: query + description: Maximum number of items to retrieve from the collection + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 100 + - name: page_token + in: query + description: Opaque token pointing to a specific position in a collection + schema: + type: string + - name: sort_direction + in: query + schema: + $ref: "#/components/schemas/sort-direction" + - name: sort_by + in: query + description: Field to sort by. Refer to the operation description for information + about which fields are sortable. + schema: + maxLength: 255 + minLength: 1 + type: string + responses: + "200": + description: A list of components matching the provided filters + content: + application/json: + schema: + $ref: "#/components/schemas/list-components-response" + "400": + description: Bad Request + content: + application/problem+json: + schema: + anyOf: + - $ref: "#/components/schemas/json-schema-validation-problem-details" + - $ref: "#/components/schemas/problem-details" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + default: + $ref: "#/components/responses/generic-error" + post: + tags: + - Components + summary: Creates a new component for the project + description: Requires permission PORTFOLIO_MANAGEMENT or PORTFOLIO_MANAGEMENT_UPDATE + operationId: createComponent + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/create-component-request" + required: true + responses: + "201": + description: Component Created + headers: + Location: + description: URL of the created component + schema: + type: string + format: uri + "400": + description: Bad Request + content: + application/problem+json: + schema: + anyOf: + - $ref: "#/components/schemas/invalid-request-problem-details" + - $ref: "#/components/schemas/problem-details" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "409": + $ref: "#/components/responses/generic-conflict-error" + default: + $ref: "#/components/responses/generic-error" + /csaf-aggregators: + get: + tags: + - CSAF + summary: List CSAF aggregators + description: |- + Returns a paginated list of CSAF aggregators, sorted by namespace in ascending order. + + Always reports `EXACT` total counts. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_READ` permission. + operationId: listCsafAggregators + parameters: + - name: search_text + in: query + description: "Search text to filter aggregators. Has \"contains\" semantics\ + \ on the `namespace`, `name`, and `url` fields. Is treated case-insensitively." + schema: + type: string + - name: page_token + in: query + description: Opaque token pointing to a specific position in a collection + schema: + type: string + - name: limit + in: query + description: Maximum number of items to retrieve from the collection + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 100 + responses: + "200": + description: Paginated list of CSAF aggregators + content: + application/json: + schema: + $ref: "#/components/schemas/list-csaf-aggregators-response" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + default: + $ref: "#/components/responses/generic-error" + post: + tags: + - CSAF + summary: Create a new CSAF aggregator + description: Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_CREATE` + permission. + operationId: createCsafAggregator + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/create-csaf-aggregator-request" + required: true + responses: + "201": + description: CSAF aggregator created + headers: + Location: + description: URL of the created aggregator + schema: + type: string + format: uri + content: + application/json: + schema: + $ref: "#/components/schemas/csaf-aggregator" + "400": + $ref: "#/components/responses/invalid-request-error" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "409": + description: A CSAF aggregator with the specified URL already exists + content: + application/problem+json: + schema: + $ref: "#/components/schemas/problem-details" + default: + $ref: "#/components/responses/generic-error" + /csaf-aggregators/{id}: + get: + tags: + - CSAF + summary: Get a CSAF aggregator + description: Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_READ` + permission. + operationId: getCsafAggregator + parameters: + - name: id + in: path + description: The ID of the CSAF aggregator + required: true + schema: + type: string + format: uuid + responses: + "200": + description: CSAF aggregator + content: + application/json: + schema: + $ref: "#/components/schemas/csaf-aggregator" + "400": + $ref: "#/components/responses/invalid-request-error" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + delete: + tags: + - CSAF + summary: Delete a CSAF aggregator + description: |- + **Warning**: Deleting an aggregator will also delete all providers + that were discovered from it. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_DELETE` permission. + operationId: deleteCsafAggregator + parameters: + - name: id + in: path + description: The ID of the CSAF aggregator to delete + required: true + schema: + type: string + format: uuid + responses: + "204": + description: CSAF source deleted + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + patch: + tags: + - CSAF + summary: Update a CSAF aggregator + description: Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_UPDATE` + permission. + operationId: updateCsafAggregator + parameters: + - name: id + in: path + description: The ID of the CSAF aggregator to update + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/update-csaf-aggregator-request" + required: true + responses: + "200": + description: CSAF aggregator updated + content: + application/json: + schema: + $ref: "#/components/schemas/csaf-aggregator" + "400": + $ref: "#/components/responses/invalid-request-error" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /csaf-aggregators/{id}/provider-discovery: + post: + tags: + - CSAF + summary: Trigger CSAF provider discovery for an aggregator + description: |- + Triggers the discovery of CSAF providers from a given aggregator. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_UPDATE` permission. + operationId: triggerCsafProviderDiscovery + parameters: + - name: id + in: path + description: The ID of the CSAF aggregator to trigger provider discovery for + required: true + schema: + type: string + format: uuid + responses: + "202": + description: Discovery triggered + headers: + Location: + description: URL of the aggregator + schema: + type: string + format: uri + "400": + $ref: "#/components/responses/invalid-request-error" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + "409": + $ref: "#/components/responses/generic-conflict-error" + default: + $ref: "#/components/responses/generic-error" + /csaf-providers: + get: + tags: + - CSAF + summary: List CSAF provider + description: |- + Returns a paginated list of CSAF providers, sorted by namespace in ascending order. + + Always reports `EXACT` total counts. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_READ` permission. + operationId: listCsafProviders + parameters: + - name: discovered + in: query + description: "Whether to only include providers that were discovered from\ + \ aggregators (`true`), or those that weren't (`false`). Omitting this parameter\ + \ includes all providers." + schema: + type: boolean + - name: search_text + in: query + description: |- + Search text to filter providers. + Has "contains" semantics on the `namespace`, `name`, and `url` fields. + Is treated case-insensitively. + schema: + type: string + - name: page_token + in: query + description: Opaque token pointing to a specific position in a collection + schema: + type: string + - name: limit + in: query + description: Maximum number of items to retrieve from the collection + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 100 + responses: + "200": + description: Paginated list of CSAF providers + content: + application/json: + schema: + $ref: "#/components/schemas/list-csaf-providers-response" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + default: + $ref: "#/components/responses/generic-error" + post: + tags: + - CSAF + summary: Create a new CSAF provider + description: Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_CREATE` + permission. + operationId: createCsafProvider + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/create-csaf-provider-request" + required: true + responses: + "201": + description: CSAF provider created + headers: + Location: + description: URL of the created provider + schema: + type: string + format: uri + content: + application/json: + schema: + $ref: "#/components/schemas/csaf-provider" + "400": + $ref: "#/components/responses/invalid-request-error" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "409": + description: A CSAF provider with the specified URL already exists + content: + application/problem+json: + schema: + $ref: "#/components/schemas/problem-details" + default: + $ref: "#/components/responses/generic-error" + /csaf-providers/{id}: + get: + tags: + - CSAF + summary: Get a CSAF provider + description: Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_READ` + permission. + operationId: getCsafProvider + parameters: + - name: id + in: path + description: The ID of the CSAF provider + required: true + schema: + type: string + format: uuid + responses: + "200": + description: CSAF provider + content: + application/json: + schema: + $ref: "#/components/schemas/csaf-provider" + "400": + $ref: "#/components/responses/invalid-request-error" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + delete: + tags: + - CSAF + summary: Delete a CSAF provider + description: Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_DELETE` + permission. + operationId: deleteCsafProvider + parameters: + - name: id + in: path + description: The ID of the CSAF provider to delete + required: true + schema: + type: string + format: uuid + responses: + "204": + description: CSAF provider deleted + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + patch: + tags: + - CSAF + summary: Update a CSAF provider + description: Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_UPDATE` + permission. + operationId: updateCsafProvider + parameters: + - name: id + in: path + description: The ID of the CSAF provider to update + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/update-csaf-provider-request" + required: true + responses: + "200": + description: CSAF provider updated + content: + application/json: + schema: + $ref: "#/components/schemas/csaf-provider" + "400": + $ref: "#/components/responses/invalid-request-error" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /extension-points: + get: + tags: + - Extensions + summary: List all extension points + description: |- + Returns a list of extension points, sorted by name in ascending order. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_READ` permission. + operationId: listExtensionPoints + responses: + "200": + description: List of extension points + content: + application/json: + schema: + $ref: "#/components/schemas/list-extension-points-response" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + default: + $ref: "#/components/responses/generic-error" + /extension-points/{extensionPointName}/extensions: + get: + tags: + - Extensions + summary: List all extensions + description: |- + Returns a list of extensions for a given extension point, sorted by name in ascending order. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_READ` permission. + operationId: listExtensions + parameters: + - name: extensionPointName + in: path + description: Name of the extension point + required: true + schema: + type: string + responses: + "200": + description: List of extensions + content: + application/json: + schema: + $ref: "#/components/schemas/list-extensions-response" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /extension-points/{extensionPointName}/extensions/{extensionName}/config: + get: + tags: + - Extensions + summary: Get extension configuration + description: |- + Returns the configuration of an extension. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_READ` permission. + operationId: getExtensionConfig + parameters: + - name: extensionPointName + in: path + description: Name of the extension point + required: true + schema: + type: string + - name: extensionName + in: path + description: Name of the extension + required: true + schema: + type: string + responses: + "200": + description: List of extensions + content: + application/json: + schema: + $ref: "#/components/schemas/get-extension-config-response" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + put: + tags: + - Extensions + summary: Update extension configuration + description: |- + Updates the configuration of an extension. + + **Do not use clear text credentials in the supplied config**. + Fields annotated with `x-secret-ref` in the config schema expect + a name of a managed secret, which is resolved internally by the API. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_UPDATE` permission. + operationId: updateExtensionConfig + parameters: + - name: extensionPointName + in: path + description: Name of the extension point + required: true + schema: + type: string + - name: extensionName + in: path + description: Name of the extension + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/update-extension-config-request" + required: true + responses: + "204": + description: Configuration updated + "304": + description: Not Modified + "400": + description: Bad Request + content: + application/problem+json: + schema: + anyOf: + - $ref: "#/components/schemas/json-schema-validation-problem-details" + - $ref: "#/components/schemas/problem-details" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /extension-points/{extensionPointName}/extensions/{extensionName}/config-schema: + get: + tags: + - Extensions + summary: Get extension configuration schema + description: |- + Returns the JSON schema for an extension's configuration. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_READ` permission. + operationId: getExtensionConfigSchema + parameters: + - name: extensionPointName + in: path + description: Name of the extension point + required: true + schema: + type: string + - name: extensionName + in: path + description: Name of the extension + required: true + schema: + type: string + responses: + "200": + description: Extension config schema + content: + application/json: + schema: + $ref: "#/components/schemas/extension-config-schema" + "204": + description: Extension has no config schema + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /extension-points/{extensionPointName}/extensions/{extensionName}/test: + post: + tags: + - Extensions + summary: Test extension + description: |- + Tests an extension. + + If the extension is configurable (i.e. `/config-schema` returns status `200`), + a valid configuration **must** be provided in the test request. + The configuration is validated against the applicable JSON schema. + + **Do not use clear text credentials in the supplied config**. + Fields annotated with `x-secret-ref` in the config schema expect + a name of a managed secret, which is resolved internally by the API. + + Test results contain one or more checks, each of which can have a status of + `PASSED`, `FAILED`, or `SKIPPED`. If *at least one* check is `FAILED`, + the entire test should be considered `FAILED`. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_UPDATE` permission. + operationId: testExtension + parameters: + - name: extensionPointName + in: path + description: Name of the extension point + required: true + schema: + type: string + - name: extensionName + in: path + description: Name of the extension + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/test-extension-request" + required: true + responses: + "200": + description: Test result + content: + application/json: + schema: + $ref: "#/components/schemas/test-extension-response" + "400": + description: Bad Request + content: + application/problem+json: + schema: + anyOf: + - $ref: "#/components/schemas/json-schema-validation-problem-details" + - $ref: "#/components/schemas/problem-details" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /projects/{uuid}/advisories: + get: + tags: + - Projects + summary: List advisories affecting a project + description: |- + Returns a paginated list of advisories affecting the project, sorted by ID in ascending order. + + Requires the `VIEW_VULNERABILITY` permission. + operationId: listAdvisoriesForProject + parameters: + - name: uuid + in: path + description: The UUID of the project + required: true + schema: + type: string + format: uuid + - name: page_token + in: query + description: Opaque token pointing to a specific position in a collection + schema: + type: string + - name: limit + in: query + description: Maximum number of items to retrieve from the collection + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 100 + responses: + "200": + description: Paginated list of advisories affecting the project + content: + application/json: + schema: + $ref: "#/components/schemas/list-project-advisories-response" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /projects/{uuid}/advisories/{advisoryId}/findings: + get: + tags: + - Projects + summary: List findings by project and advisory + description: Requires permission VIEW_VULNERABILITY + operationId: getFindingsByProjectAdvisory + parameters: + - name: uuid + in: path + description: The UUID of the project + required: true + schema: + type: string + format: uuid + - name: advisoryId + in: path + description: The advisory ID + required: true + schema: + type: string + format: uuid + responses: + "200": + description: List of findings for the project and advisory + content: + application/json: + schema: + $ref: "#/components/schemas/list-project-advisory-findings-response" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /projects/{uuid}/clone: + post: + tags: + - Projects + summary: Clones a given project. + description: Requires permission PORTFOLIO_MANAGEMENT + operationId: cloneProject + parameters: + - name: uuid + in: path + description: The UUID of the project to clone + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/clone-project-request" + responses: + "201": + description: Project cloned + headers: + Location: + description: URL of the cloned project + schema: + type: string + format: uri + content: + application/json: + schema: + $ref: "#/components/schemas/clone-project-response" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + "409": + $ref: "#/components/responses/generic-conflict-error" + default: + $ref: "#/components/responses/generic-error" + /projects/{uuid}/components: + get: + tags: + - Projects + summary: Retrieves a list of all components for a given project. + description: Requires permission VIEW_PORTFOLIO + operationId: listProjectComponents + parameters: + - name: uuid + in: path + description: The UUID of the project to retrieve components for + required: true + schema: + type: string + format: uuid + - name: only_outdated + in: query + description: Optionally exclude recent components so only outdated components + are returned + schema: + type: boolean + - name: only_direct + in: query + description: Optionally exclude transitive dependencies so only direct dependencies + are returned + schema: + type: boolean + - name: limit + in: query + description: Maximum number of items to retrieve from the collection + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 100 + - name: page_token + in: query + description: Opaque token pointing to a specific position in a collection + schema: + type: string + responses: + "200": + description: A list of all components for a given project + content: + application/json: + schema: + $ref: "#/components/schemas/list-project-components-response" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /task-queues/{type}: + get: + tags: + - Task Queues + summary: List task queues + description: |- + Returns a paginated list of task queues of the given type. + + **Note:** This is an internal API endpoint and may change without notice. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_READ` permission. + operationId: listTaskQueues + parameters: + - name: type + in: path + description: Type of task queues to list + required: true + schema: + $ref: "#/components/schemas/task-queue-type" + - name: limit + in: query + description: Maximum number of items to retrieve from the collection + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 100 + - name: page_token + in: query + description: Opaque token pointing to a specific position in a collection + schema: + type: string + responses: + "200": + description: Paginated list of task queues + content: + application/json: + schema: + $ref: "#/components/schemas/list-task-queues-response" + "400": + $ref: "#/components/responses/invalid-request-error" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + default: + $ref: "#/components/responses/generic-error" + /task-queues/{type}/{name}: + patch: + tags: + - Task Queues + summary: Update a task queue + description: |- + Updates the status and/or capacity of a task queue. + + **Note:** This is an internal API endpoint and may change without notice. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_UPDATE` permission. + operationId: updateTaskQueue + parameters: + - name: type + in: path + description: Type of the task queue + required: true + schema: + $ref: "#/components/schemas/task-queue-type" + - name: name + in: path + description: Name of the task queue + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/update-task-queue-request" + required: true + responses: + "204": + description: Task queue updated + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /secrets: + get: + tags: + - Secrets + summary: List secret metadata + description: |- + Returns a paginated list of secret metadata. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_READ` permission. + operationId: listSecretMetadata + parameters: + - name: q + in: query + description: Optional search text to filter secrets by. Filtering uses case-insensitive + "starts with" semantics on the secret name. + schema: + type: string + - name: page_token + in: query + description: Opaque token pointing to a specific position in a collection + schema: + type: string + - name: limit + in: query + description: Maximum number of items to retrieve from the collection + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 100 + responses: + "200": + description: Paginated list of secret metadata + content: + application/json: + schema: + $ref: "#/components/schemas/list-secrets-response" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + default: + $ref: "#/components/responses/generic-error" + post: + tags: + - Secrets + summary: Create a secret + description: |- + Creates a new secret. + + Requires the `SECRET_MANAGEMENT` or `SECRET_MANAGEMENT_CREATE` permission. + + Administrators can configure the secret manager to be read-only. + In that case, create requests will be rejected with status code `400`. + operationId: createSecret + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/create-secret-request" + required: true + responses: + "201": + description: Secret created + headers: + Location: + description: URL of the created secret + schema: + type: string + format: uri + "400": + description: Bad Request + content: + application/problem+json: + schema: + anyOf: + - $ref: "#/components/schemas/invalid-request-problem-details" + - $ref: "#/components/schemas/problem-details" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "409": + $ref: "#/components/responses/generic-conflict-error" + default: + $ref: "#/components/responses/generic-error" + /secrets/{name}: + get: + tags: + - Secrets + summary: Get secret metadata + description: |- + Returns metadata about a given secret. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_READ` permission. + operationId: getSecretMetadata + parameters: + - name: name + in: path + description: The name of the secret + required: true + schema: + $ref: "#/components/schemas/secret-name" + responses: + "200": + description: Secret metadata + content: + application/json: + schema: + $ref: "#/components/schemas/secret-metadata" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + delete: + tags: + - Secrets + summary: Delete a secret + description: |- + Deletes an existing secret. + + Requires the `SECRET_MANAGEMENT` or `SECRET_MANAGEMENT_DELETE` permission. + + Administrators can configure the secret manager to be read-only. + In that case, delete requests will be rejected with status code `400`. + operationId: deleteSecret + parameters: + - name: name + in: path + description: The name of the secret + required: true + schema: + $ref: "#/components/schemas/secret-name" + responses: + "204": + description: Secret deleted + "400": + description: Bad Request + content: + application/problem+json: + schema: + anyOf: + - $ref: "#/components/schemas/invalid-request-problem-details" + - $ref: "#/components/schemas/problem-details" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + patch: + tags: + - Secrets + summary: Update a secret + description: |- + Updates an existing secret. + + Requires the `SECRET_MANAGEMENT` or `SECRET_MANAGEMENT_UPDATE` permission. + + Administrators can configure the secret manager to be read-only. + In that case, update requests will be rejected with status code `400`. + operationId: updateSecret + parameters: + - name: name + in: path + description: The name of the secret + required: true + schema: + $ref: "#/components/schemas/secret-name" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/update-secret-request" + required: true + responses: + "204": + description: Secret updated + "304": + description: Not modified + "400": + description: Bad Request + content: + application/problem+json: + schema: + anyOf: + - $ref: "#/components/schemas/invalid-request-problem-details" + - $ref: "#/components/schemas/problem-details" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /vuln-policies: + get: + tags: + - Vulnerability Policies + summary: List vulnerability policies + description: |- + Returns a paginated list of vulnerability policies, sorted by priority + (ascending) and name (ascending). + + Reports `EXACT` total counts for up to 500 items, and `AT_LEAST` past that. + + Requires permission `POLICY_MANAGEMENT` or `POLICY_MANAGEMENT_READ`. + operationId: listVulnPolicies + parameters: + - name: limit + in: query + description: Maximum number of items to retrieve from the collection + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 100 + - name: page_token + in: query + description: Opaque token pointing to a specific position in a collection + schema: + type: string + - name: name + in: query + description: "Filter by name (partial match, case-insensitive)" + schema: + type: string + responses: + "200": + description: Paginated list of vulnerability policies + content: + application/json: + schema: + $ref: "#/components/schemas/list-vuln-policies-response" + "400": + $ref: "#/components/responses/invalid-request-error" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + default: + $ref: "#/components/responses/generic-error" + post: + tags: + - Vulnerability Policies + summary: Create a vulnerability policy + description: |- + Creates a user-managed vulnerability policy. + + CEL conditions are compiled server-side. On compilation failure, + a 400 response with structured error details is returned. + + Requires permission `POLICY_MANAGEMENT` or `POLICY_MANAGEMENT_CREATE`. + operationId: createVulnPolicy + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/create-vuln-policy-request" + required: true + responses: + "201": + description: Policy created + headers: + Location: + description: URL of the created policy + schema: + type: string + format: uri + content: + application/json: + schema: + required: + - uuid + type: object + properties: + uuid: + type: string + format: uuid + "400": + description: Bad Request + content: + application/problem+json: + schema: + anyOf: + - $ref: "#/components/schemas/invalid-vuln-policy-condition-problem-details" + - $ref: "#/components/schemas/invalid-request-problem-details" + - $ref: "#/components/schemas/problem-details" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "409": + $ref: "#/components/responses/generic-conflict-error" + default: + $ref: "#/components/responses/generic-error" + /vuln-policies/{uuid}: + get: + tags: + - Vulnerability Policies + summary: Get a vulnerability policy + description: |- + Returns a vulnerability policy. + + Requires permission `POLICY_MANAGEMENT` or `POLICY_MANAGEMENT_READ`. + operationId: getVulnPolicy + parameters: + - name: uuid + in: path + description: UUID of the vulnerability policy + required: true + schema: + type: string + format: uuid + responses: + "200": + description: The vulnerability policy + content: + application/json: + schema: + $ref: "#/components/schemas/get-vuln-policy-response" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + put: + tags: + - Vulnerability Policies + summary: Replace a vulnerability policy + description: |- + Replaces a user-managed vulnerability policy with the provided data. + + Policies managed by a bundle can not be modified. + + Requires permission `POLICY_MANAGEMENT` or `POLICY_MANAGEMENT_UPDATE`. + operationId: updateVulnPolicy + parameters: + - name: uuid + in: path + description: UUID of the vulnerability policy + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/update-vuln-policy-request" + required: true + responses: + "204": + description: Policy updated + "400": + description: Bad Request + content: + application/problem+json: + schema: + anyOf: + - $ref: "#/components/schemas/invalid-vuln-policy-condition-problem-details" + - $ref: "#/components/schemas/invalid-request-problem-details" + - $ref: "#/components/schemas/problem-details" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + "409": + $ref: "#/components/responses/generic-conflict-error" + default: + $ref: "#/components/responses/generic-error" + delete: + tags: + - Vulnerability Policies + summary: Delete a vulnerability policy + description: |- + Deletes a user-managed vulnerability policy. + + Policies managed by a bundle can not be deleted. + + Analysis records matched by this policy are reset upon deletion. + + Requires permission `POLICY_MANAGEMENT` or `POLICY_MANAGEMENT_DELETE`. + operationId: deleteVulnPolicy + parameters: + - name: uuid + in: path + description: UUID of the vulnerability policy + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Policy deleted + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /vuln-policy-bundles: + get: + tags: + - Vulnerability Policies + summary: List vulnerability policy bundles + description: |- + Returns a list of vulnerability policy bundles. + + Requires permission `POLICY_MANAGEMENT` or `POLICY_MANAGEMENT_READ`. + operationId: listVulnPolicyBundles + responses: + "200": + description: List of vulnerability policy bundles + content: + application/json: + schema: + $ref: "#/components/schemas/list-vuln-policy-bundles-response" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + default: + $ref: "#/components/responses/generic-error" + /vuln-policy-bundles/{uuid}: + delete: + tags: + - Vulnerability Policies + summary: Delete a vulnerability policy bundle + description: |- + Deletes a vulnerability policy bundle and cascade-deletes all associated policies. + + Analysis records matched by deleted policies are reset. + + Requires permission `POLICY_MANAGEMENT` or `POLICY_MANAGEMENT_DELETE`. + operationId: deleteVulnPolicyBundle + parameters: + - name: uuid + in: path + description: UUID of the vulnerability policy bundle + required: true + schema: + type: string + format: uuid + responses: + "204": + description: Bundle deleted + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /vuln-policy-bundles/{uuid}/sync: + get: + tags: + - Vulnerability Policies + summary: Get bundle synchronization status + description: |- + Returns the status of the most recent synchronization for a given + vulnerability policy bundle. + + Returns 404 if no synchronization has been triggered yet. + + Requires permission `POLICY_MANAGEMENT` or `POLICY_MANAGEMENT_READ`. + operationId: getVulnPolicyBundleSyncStatus + parameters: + - name: uuid + in: path + description: UUID of the vulnerability policy bundle + required: true + schema: + type: string + format: uuid + responses: + "200": + description: Synchronization status + content: + application/json: + schema: + $ref: "#/components/schemas/vuln-policy-bundle-sync-status" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + post: + tags: + - Vulnerability Policies + summary: Trigger bundle synchronization + description: |- + Triggers synchronization of the vulnerability policy bundle. + + Requires permission `POLICY_MANAGEMENT` or `POLICY_MANAGEMENT_UPDATE`. + operationId: triggerVulnPolicyBundleSync + parameters: + - name: uuid + in: path + description: UUID of the vulnerability policy bundle + required: true + schema: + type: string + format: uuid + responses: + "202": + description: Synchronization triggered + headers: + Location: + description: URL of the synchronization status endpoint + schema: + type: string + format: uri + "400": + description: Bad Request + content: + application/problem+json: + schema: + $ref: "#/components/schemas/problem-details" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + "409": + description: Synchronization already in progress + content: + application/problem+json: + schema: + $ref: "#/components/schemas/problem-details" + default: + $ref: "#/components/responses/generic-error" + /workflow-instances/{id}: + get: + tags: + - Workflows + summary: Get a workflow instance + description: |- + Returns run metadata of a given workflow instance. + + Multiple runs can share an instance ID, but only a single run can exist + in non-terminal state at any given time. Thus, this operation only + returns metadata if a run in non-terminal state exists. + + To list all runs for an instance ID, including terminated ones, + use the `/workflow-runs` endpoint and filter by `workflow_instance_id`. + + **Note:** This is an internal API endpoint and may change without notice. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_READ` permission. + operationId: getWorkflowInstance + parameters: + - name: id + in: path + description: ID of the workflow instance + required: true + schema: + type: string + responses: + "200": + description: Workflow run metadata + content: + application/json: + schema: + $ref: "#/components/schemas/workflow-run-metadata" + "400": + $ref: "#/components/responses/invalid-request-error" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /workflow-runs: + get: + tags: + - Workflows + summary: List all workflow runs + description: |- + Returns a paginated list of workflow runs. + + ### Sortable fields + + Sorting is supported for the for the following fields: + + * `id` + * `created_at` + * `completed_at` + + **Note:** This is an internal API endpoint and may change without notice. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_READ` permission. + operationId: listWorkflowRuns + parameters: + - name: workflow_name + in: query + description: Name of the workflow to filter by. Must be an exact match. + schema: + type: string + - name: workflow_version + in: query + description: Version of the workflow to filter by. Must be an exact match. + schema: + maximum: 100 + minimum: 1 + type: integer + format: int32 + - name: workflow_instance_id + in: query + description: Workflow instance ID to filter by. Must be an exact match. + schema: + type: string + - name: status + in: query + description: Status to filter by + schema: + $ref: "#/components/schemas/workflow-run-status" + - name: created_at_from + in: query + description: Filter runs created on or after this timestamp. + schema: + $ref: "#/components/schemas/timestamp" + - name: created_at_to + in: query + description: Filter runs created before this timestamp. + schema: + $ref: "#/components/schemas/timestamp" + - name: completed_at_from + in: query + description: Filter runs completed on or after this timestamp. + schema: + $ref: "#/components/schemas/timestamp" + - name: completed_at_to + in: query + description: Filter runs completed before this timestamp. + schema: + $ref: "#/components/schemas/timestamp" + - name: limit + in: query + description: Maximum number of items to retrieve from the collection + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 100 + - name: page_token + in: query + description: Opaque token pointing to a specific position in a collection + schema: + type: string + - name: sort_direction + in: query + schema: + $ref: "#/components/schemas/sort-direction" + - name: sort_by + in: query + description: Field to sort by. Refer to the operation description for information + about which fields are sortable. + schema: + maxLength: 255 + minLength: 1 + type: string + responses: + "200": + description: Paginated list of workflow runs + content: + application/json: + schema: + $ref: "#/components/schemas/list-workflow-runs-response" + "400": + $ref: "#/components/responses/invalid-request-error" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + default: + $ref: "#/components/responses/generic-error" + /workflow-runs/{id}: + get: + tags: + - Workflows + summary: Get a workflow run + description: |- + Returns metadata of a given workflow run. + + **Note:** This is an internal API endpoint and may change without notice. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_READ` permission. + operationId: getWorkflowRun + parameters: + - name: id + in: path + description: ID of the workflow run + required: true + schema: + type: string + format: uuid + responses: + "200": + description: Workflow run metadata + content: + application/json: + schema: + $ref: "#/components/schemas/workflow-run-metadata" + "400": + $ref: "#/components/responses/invalid-request-error" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + "404": + $ref: "#/components/responses/generic-not-found-error" + default: + $ref: "#/components/responses/generic-error" + /workflow-runs/{id}/events: + get: + tags: + - Workflows + summary: List all events of a workflow run + description: |- + Returns a paginated list of workflow run events, sorted by sequence number. + + **Note:** This is an internal API endpoint and may change without notice. + + Requires the `SYSTEM_CONFIGURATION` or `SYSTEM_CONFIGURATION_READ` permission. + operationId: listWorkflowRunEvents + parameters: + - name: id + in: path + description: ID of the workflow run + required: true + schema: + type: string + format: uuid + - name: from_sequence_number + in: query + description: |- + Sequence number of the last seen event. + May be used to continuously poll for new events. + Can not be used together with `page_token`. + schema: + minimum: 0 + type: integer + format: int32 + - name: limit + in: query + description: Maximum number of items to retrieve from the collection + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 100 + - name: page_token + in: query + description: Opaque token pointing to a specific position in a collection + schema: + type: string + - name: sort_direction + in: query + schema: + $ref: "#/components/schemas/sort-direction" + responses: + "200": + description: Paginated list of workflow run events + content: + application/json: + schema: + $ref: "#/components/schemas/list-workflow-run-events-response" + "400": + $ref: "#/components/responses/invalid-request-error" + "401": + $ref: "#/components/responses/generic-unauthorized-error" + "403": + $ref: "#/components/responses/generic-forbidden-error" + default: + $ref: "#/components/responses/generic-error" +components: + schemas: + list-advisories-response: + required: + - items + type: object + properties: + items: + type: array + items: + $ref: "#/components/schemas/list-advisories-response-item" + allOf: + - $ref: "#/components/schemas/paginated-response" + upload-advisory-response: + required: + - id + type: object + properties: + id: + type: string + description: The unique identifier of the created advisory + format: uuid + problem-details: + required: + - detail + - title + type: object + properties: + type: + type: string + description: A URI reference that identifies the problem type + format: uri + default: about:blank + status: + maximum: 599 + minimum: 400 + type: integer + description: HTTP status code generated by the origin server for this occurrence + of the problem + format: int32 + example: 500 + title: + maxLength: 255 + type: string + description: "Short, human-readable summary of the problem type" + detail: + maxLength: 1024 + type: string + description: Human-readable explanation specific to this occurrence of the + problem + instance: + type: string + description: Reference URI that identifies the specific occurrence of the + problem + format: uri + description: An RFC 9457 problem object. + externalDocs: + url: https://www.rfc-editor.org/rfc/rfc9457.html + x-parent: true + get-advisory-response: + required: + - content + type: object + properties: + content: + type: string + description: The full content of the advisory document + nullable: true + allOf: + - $ref: "#/components/schemas/list-advisories-response-item" + sort-direction: + type: string + enum: + - ASC + - DESC + list-components-response: + required: + - items + type: object + properties: + items: + type: array + items: + $ref: "#/components/schemas/list-components-response-item" + allOf: + - $ref: "#/components/schemas/paginated-response" + json-schema-validation-problem-details: + required: + - errors + type: object + properties: + errors: + type: array + description: List of JSON Schema validation errors + items: + $ref: "#/components/schemas/json-schema-validation-error" + allOf: + - $ref: "#/components/schemas/problem-details" + create-component-request: + required: + - name + - project_uuid + type: object + properties: + project_uuid: + type: string + format: uuid + name: + maxLength: 255 + type: string + description: + maxLength: 255 + type: string + group: + maxLength: 255 + type: string + version: + maxLength: 255 + type: string + classifier: + $ref: "#/components/schemas/classifier" + filename: + maxLength: 255 + type: string + extension: + maxLength: 255 + type: string + hashes: + $ref: "#/components/schemas/hashes" + cpe: + maxLength: 255 + type: string + publisher: + maxLength: 255 + type: string + supplier: + $ref: "#/components/schemas/organizational-entity" + authors: + type: array + items: + $ref: "#/components/schemas/organizational-contact" + purl: + maxLength: 1024 + type: string + swid_tag_id: + maxLength: 255 + type: string + internal: + type: boolean + copyright: + maxLength: 255 + type: string + license: + maxLength: 255 + type: string + license_expression: + maxLength: 255 + type: string + license_url: + maxLength: 255 + type: string + notes: + maxLength: 255 + type: string + invalid-request-problem-details: + required: + - errors + type: object + properties: + errors: + type: array + items: + $ref: "#/components/schemas/constraint-violation-error" + allOf: + - $ref: "#/components/schemas/problem-details" + list-csaf-aggregators-response: + required: + - items + type: object + properties: + items: + type: array + items: + $ref: "#/components/schemas/csaf-aggregator" + allOf: + - $ref: "#/components/schemas/paginated-response" + create-csaf-aggregator-request: + required: + - enabled + - name + - namespace + - url + type: object + properties: + namespace: + type: string + format: uri + name: + minLength: 1 + type: string + description: The name of the CSAF aggregator + url: + type: string + description: The URL of the CSAF aggregator + format: uri + enabled: + type: boolean + description: Whether the aggregator is enabled + csaf-aggregator: + required: + - created_at + - enabled + - id + - name + - namespace + - url + type: object + properties: + id: + type: string + format: uuid + url: + type: string + format: uri + namespace: + type: string + format: uri + name: + type: string + enabled: + type: boolean + last_discovery_at: + $ref: "#/components/schemas/timestamp" + created_at: + $ref: "#/components/schemas/timestamp" + updated_at: + $ref: "#/components/schemas/timestamp" + update-csaf-aggregator-request: + required: + - enabled + type: object + properties: + enabled: + type: boolean + description: Whether the aggregator is enabled + list-csaf-providers-response: + required: + - items + type: object + properties: + items: + type: array + items: + $ref: "#/components/schemas/csaf-provider" + allOf: + - $ref: "#/components/schemas/paginated-response" + create-csaf-provider-request: + required: + - enabled + - name + - namespace + - url + type: object + properties: + namespace: + type: string + format: uri + name: + minLength: 1 + type: string + description: The name of the CSAF provider + url: + type: string + description: The URL of the CSAF provider + format: uri + enabled: + type: boolean + description: Whether the provider is enabled + csaf-provider: + required: + - created_at + - enabled + - id + - name + - namespace + - url + type: object + properties: + id: + type: string + format: uuid + url: + type: string + format: uri + namespace: + type: string + format: uri + name: + type: string + enabled: + type: boolean + description: Whether the aggregator is enabled. + discovered_from: + type: string + description: "ID of the aggregator that the provider was discovered from,\ + \ **if** it was discovered." + format: uuid + discovered_at: + $ref: "#/components/schemas/timestamp" + latest_document_release_date: + $ref: "#/components/schemas/timestamp" + created_at: + $ref: "#/components/schemas/timestamp" + updated_at: + $ref: "#/components/schemas/timestamp" + update-csaf-provider-request: + required: + - enabled + type: object + properties: + enabled: + type: boolean + description: Whether the provider is enabled + list-extension-points-response: + required: + - extension_points + type: object + properties: + extension_points: + type: array + items: + $ref: "#/components/schemas/list-extension-points-response-item" + list-extensions-response: + required: + - extensions + type: object + properties: + extensions: + type: array + items: + $ref: "#/components/schemas/list-extensions-response-item" + get-extension-config-response: + required: + - config + type: object + properties: + config: + type: object + additionalProperties: true + update-extension-config-request: + required: + - config + type: object + properties: + config: + type: object + additionalProperties: true + extension-config-schema: + required: + - $schema + type: object + properties: + $schema: + type: string + format: uri + additionalProperties: true + test-extension-request: + type: object + properties: + config: + type: object + additionalProperties: true + test-extension-response: + required: + - checks + type: object + properties: + checks: + type: array + items: + $ref: "#/components/schemas/extension-test-check" + list-project-advisories-response: + required: + - items + type: object + properties: + items: + type: array + items: + $ref: "#/components/schemas/list-project-advisories-response-item" + allOf: + - $ref: "#/components/schemas/paginated-response" + list-project-advisory-findings-response: + required: + - data + type: object + properties: + data: + type: array + items: + $ref: "#/components/schemas/list-project-advisory-findings-response-item" + clone-project-request: + required: + - version + type: object + properties: + version: + minLength: 1 + type: string + description: Version of the cloned project. + version_is_latest: + type: boolean + description: "Whether to mark the cloned project version as latest. If another\ + \ version is already marked as latest, it will be atomically un-unmarked\ + \ as part of the cloning operation." + default: false + includes: + uniqueItems: true + type: array + description: |- + List of items to include in the clone: + + * `ACL`: Include portfolio ACL definitions. + * `COMPONENTS`: Include components. + * `FINDINGS`: Include findings. + * Has no effect unless `COMPONENTS` is also included. + * `FINDINGS_AUDIT_HISTORY`: Include audit history of findings. + * Has no effect unless `FINDINGS` is also included. + * `POLICY_VIOLATIONS`: Include policy violations. + * Has no effect unless `COMPONENTS` is also included. + * `POLICY_VIOLATIONS_AUDIT_HISTORY`: Include audit history of policy violations. + * Has no effect unless `POLICY_VIOLATIONS` is also included. + * `PROPERTIES`: Include project properties. + * `SERVICES`: Include services. + * `TAGS`: Include project tags. + items: + $ref: "#/components/schemas/clone-project-include" + default: [] + clone-project-response: + required: + - uuid + type: object + properties: + uuid: + type: string + description: UUID of the cloned project. + format: uuid + list-project-components-response: + required: + - items + type: object + properties: + items: + type: array + items: + $ref: "#/components/schemas/list-project-components-response-item" + allOf: + - $ref: "#/components/schemas/paginated-response" + task-queue-type: + type: string + enum: + - ACTIVITY + - WORKFLOW + list-task-queues-response: + required: + - items + type: object + properties: + items: + type: array + items: + $ref: "#/components/schemas/task-queue" + allOf: + - $ref: "#/components/schemas/paginated-response" + update-task-queue-request: + type: object + properties: + status: + $ref: "#/components/schemas/task-queue-status" + capacity: + minimum: 1 + type: integer + format: int32 + list-secrets-response: + required: + - items + type: object + properties: + items: + type: array + items: + $ref: "#/components/schemas/secret-metadata" + allOf: + - $ref: "#/components/schemas/paginated-response" + create-secret-request: + required: + - name + - value + type: object + properties: + name: + $ref: "#/components/schemas/secret-name" + description: + maxLength: 255 + type: string + value: + maxLength: 4096 + minLength: 1 + type: string + secret-name: + pattern: "^[a-zA-Z0-9_-]{1,64}$" + type: string + example: MY_SECRET + secret-metadata: + required: + - name + type: object + properties: + name: + $ref: "#/components/schemas/secret-name" + description: + type: string + created_at: + $ref: "#/components/schemas/timestamp" + updated_at: + $ref: "#/components/schemas/timestamp" + update-secret-request: + type: object + properties: + description: + maxLength: 255 + type: string + description: The new description. Omit this field to retain the current + description. + value: + maxLength: 4096 + minLength: 1 + type: string + description: The new value. Omit this field to retain the current value. + list-vuln-policies-response: + required: + - items + type: object + properties: + items: + type: array + items: + $ref: "#/components/schemas/list-vuln-policies-response-item" + allOf: + - $ref: "#/components/schemas/paginated-response" + create-vuln-policy-request: + required: + - analysis + - condition + - name + type: object + properties: + name: + maxLength: 255 + minLength: 1 + type: string + description: + maxLength: 512 + type: string + author: + maxLength: 255 + type: string + condition: + maxLength: 4096 + minLength: 1 + type: string + analysis: + $ref: "#/components/schemas/vuln-policy-analysis" + ratings: + maxItems: 3 + type: array + items: + $ref: "#/components/schemas/vuln-policy-rating" + operation_mode: + $ref: "#/components/schemas/vuln-policy-operation-mode" + priority: + maximum: 100 + minimum: 0 + type: integer + format: int32 + default: 0 + valid_from: + $ref: "#/components/schemas/timestamp" + valid_until: + $ref: "#/components/schemas/timestamp" + invalid-vuln-policy-condition-problem-details: + required: + - errors + type: object + properties: + errors: + type: array + items: + $ref: "#/components/schemas/vuln-policy-condition-error" + allOf: + - $ref: "#/components/schemas/problem-details" + get-vuln-policy-response: + required: + - analysis + - condition + - name + - operation_mode + - priority + - source + - uuid + type: object + properties: + uuid: + type: string + format: uuid + name: + type: string + description: + type: string + author: + type: string + condition: + type: string + analysis: + $ref: "#/components/schemas/vuln-policy-analysis" + ratings: + maxItems: 3 + type: array + items: + $ref: "#/components/schemas/vuln-policy-rating" + operation_mode: + $ref: "#/components/schemas/vuln-policy-operation-mode" + priority: + maximum: 100 + minimum: 0 + type: integer + format: int32 + source: + $ref: "#/components/schemas/vuln-policy-source" + valid_from: + $ref: "#/components/schemas/timestamp" + valid_until: + $ref: "#/components/schemas/timestamp" + created: + $ref: "#/components/schemas/timestamp" + updated: + $ref: "#/components/schemas/timestamp" + update-vuln-policy-request: + required: + - analysis + - condition + - name + type: object + properties: + name: + maxLength: 255 + minLength: 1 + type: string + description: + maxLength: 512 + type: string + author: + maxLength: 255 + type: string + condition: + maxLength: 4096 + minLength: 1 + type: string + analysis: + $ref: "#/components/schemas/vuln-policy-analysis" + ratings: + maxItems: 3 + type: array + items: + $ref: "#/components/schemas/vuln-policy-rating" + operation_mode: + $ref: "#/components/schemas/vuln-policy-operation-mode" + priority: + maximum: 100 + minimum: 0 + type: integer + format: int32 + default: 0 + valid_from: + $ref: "#/components/schemas/timestamp" + valid_until: + $ref: "#/components/schemas/timestamp" + list-vuln-policy-bundles-response: + required: + - items + type: object + properties: + items: + type: array + items: + $ref: "#/components/schemas/list-vuln-policy-bundles-response-item" + allOf: + - $ref: "#/components/schemas/paginated-response" + vuln-policy-bundle-sync-status: + required: + - status + type: object + properties: + status: + type: string + description: Status of the synchronization. + enum: + - PENDING + - RUNNING + - COMPLETED + - FAILED + started_at: + $ref: "#/components/schemas/timestamp" + completed_at: + $ref: "#/components/schemas/timestamp" + failure_reason: + type: string + description: Reason for why the synchronization failed. + workflow-run-metadata: + required: + - created_at + - id + - priority + - status + - task_queue_name + - workflow_name + - workflow_version + type: object + properties: + id: + type: string + format: uuid + workflow_name: + type: string + workflow_version: + maximum: 100 + minimum: 1 + type: integer + format: int32 + workflow_instance_id: + type: string + task_queue_name: + type: string + status: + $ref: "#/components/schemas/workflow-run-status" + priority: + maximum: 100 + minimum: 0 + type: integer + format: int32 + concurrency_key: + type: string + labels: + type: object + additionalProperties: + type: string + created_at: + $ref: "#/components/schemas/timestamp" + updated_at: + $ref: "#/components/schemas/timestamp" + started_at: + $ref: "#/components/schemas/timestamp" + completed_at: + $ref: "#/components/schemas/timestamp" + workflow-run-status: + type: string + enum: + - CREATED + - RUNNING + - SUSPENDED + - FAILED + - COMPLETED + - CANCELLED + timestamp: + type: integer + description: "Epoch timestamp in milliseconds since January 1, 1970 UTC." + format: int64 + example: 1752209050377 + list-workflow-runs-response: + required: + - items + type: object + properties: + items: + type: array + items: + $ref: "#/components/schemas/workflow-run-metadata" + allOf: + - $ref: "#/components/schemas/paginated-response" + list-workflow-run-events-response: + required: + - items + type: object + properties: + items: + type: array + items: + $ref: "#/components/schemas/list-workflow-run-events-response-item" + allOf: + - $ref: "#/components/schemas/paginated-response" + paginated-response: + type: object + properties: + next_page_token: + type: string + description: Token to retrieve the next page. Absent when no more items + exist. + total: + $ref: "#/components/schemas/total-count" + x-parent: true + list-advisories-response-item: + required: + - affected_component_count + - affected_project_count + - id + - last_fetched + - name + - publisher + - title + - url + - version + type: object + properties: + id: + type: string + description: The unique identifier of the advisory + format: uuid + publisher: + type: string + description: The publisher of the advisory + name: + type: string + description: The name/tracking ID of the advisory + version: + type: string + description: The version of the advisory + title: + type: string + description: The title of the advisory + url: + type: string + description: The URL of the advisory + format: uri + seen_at: + $ref: "#/components/schemas/timestamp" + last_fetched: + $ref: "#/components/schemas/timestamp" + format: + type: string + description: "The format of the advisory (e.g., CSAF)" + affected_component_count: + type: integer + description: The number of affected components. Reports counts up to 1001. + A number of 1001 should be interpreted as "more than 1000 components". + format: int32 + affected_project_count: + type: integer + description: The number of affected projects. Reports counts up to 1001. + A number of 1001 should be interpreted as "more than 1000 projects". + format: int32 + list-components-response-item: + type: object + properties: + name: + maxLength: 255 + type: string + version: + maxLength: 255 + type: string + group: + maxLength: 255 + type: string + classifier: + maxLength: 255 + type: string + hashes: + $ref: "#/components/schemas/hashes" + cpe: + maxLength: 255 + type: string + purl: + maxLength: 1024 + type: string + swid_tag_id: + maxLength: 255 + type: string + internal: + type: boolean + copyright: + maxLength: 255 + type: string + license: + maxLength: 255 + type: string + license_expression: + maxLength: 255 + type: string + license_url: + maxLength: 255 + type: string + resolved_license: + $ref: "#/components/schemas/license" + last_inherited_risk_score: + type: number + format: double + uuid: + type: string + format: uuid + project: + $ref: "#/components/schemas/component-project" + metrics: + $ref: "#/components/schemas/dependency-metrics" + json-schema-validation-error: + required: + - instance_location + - message + type: object + properties: + instance_location: + type: string + description: JSON Pointer to the location in the instance that failed validation + example: /config/port + evaluation_path: + type: string + description: JSON Pointer to the location in the schema during evaluation + example: /properties/config/properties/port + schema_location: + type: string + description: Schema location that generated the error + example: https://example.com/schemas/config#/properties/config/properties/port + keyword: + type: string + description: The validation keyword that failed + example: type + message: + type: string + description: Human-readable error message + example: Value must be a number + description: |- + A JSON Schema validation error as per + . + classifier: + type: string + enum: + - APPLICATION + - FRAMEWORK + - LIBRARY + - CONTAINER + - OPERATING_SYSTEM + - DEVICE + - FIRMWARE + - FILE + - PLATFORM + - DEVICE_DRIVER + - MACHINE_LEARNING_MODEL + - DATA + hashes: + type: object + properties: + sha1: + maxLength: 40 + type: string + sha256: + maxLength: 64 + type: string + sha384: + maxLength: 96 + type: string + sha512: + maxLength: 128 + type: string + sha3_256: + maxLength: 64 + type: string + sha3_384: + maxLength: 96 + type: string + sha3_512: + maxLength: 128 + type: string + blake2b_256: + maxLength: 64 + type: string + blake2b_384: + maxLength: 96 + type: string + blake2b_512: + maxLength: 128 + type: string + blake3: + maxLength: 255 + type: string + md5: + maxLength: 32 + type: string + organizational-entity: + type: object + properties: + name: + maxLength: 255 + type: string + description: Name of the organizational entity + urls: + type: array + items: + maxLength: 255 + type: string + contacts: + type: array + items: + $ref: "#/components/schemas/organizational-contact" + organizational-contact: + type: object + properties: + name: + maxLength: 255 + type: string + description: Name of the organizational contact + email: + maxLength: 255 + type: string + description: Email of the organizational contact + phone: + maxLength: 255 + type: string + description: Phone of the organizational contact + constraint-violation-error: + required: + - message + type: object + properties: + path: + type: string + description: Path to the invalid field in the request + value: + type: string + description: The invalid value + message: + type: string + description: Message explaining the error + list-extension-points-response-item: + required: + - name + type: object + properties: + name: + type: string + list-extensions-response-item: + required: + - name + type: object + properties: + name: + type: string + extension-test-check: + required: + - name + - status + type: object + properties: + name: + type: string + example: connection + status: + $ref: "#/components/schemas/extension-test-check-status" + message: + type: string + example: Connection failed + list-project-advisories-response-item: + required: + - findings_count + - format + - id + - last_fetched + - name + - publisher + - title + - url + - version + type: object + properties: + id: + type: string + description: The unique identifier of the advisory + format: uuid + publisher: + type: string + description: The publisher of the advisory + name: + type: string + description: The name/tracking ID of the advisory + version: + type: string + description: The version of the advisory + title: + type: string + description: The title of the advisory + url: + type: string + description: The URL of the advisory + format: uri + seen_at: + $ref: "#/components/schemas/timestamp" + last_fetched: + $ref: "#/components/schemas/timestamp" + format: + type: string + description: "The format of the advisory (e.g., CSAF)" + findings_count: + type: integer + description: The number of findings for this advisory in the project + format: int64 + list-project-advisory-findings-response-item: + required: + - component_uuid + - confidence + - desc + - group + - name + - version + type: object + properties: + name: + type: string + description: The name of the component + confidence: + maximum: 100 + minimum: 0 + type: integer + description: The confidence/matching percentage of the finding as integer + ranging 0...100 + format: int32 + desc: + type: string + description: The description of the component + group: + type: string + description: The group of the component + version: + type: string + description: The version of the component + component_uuid: + type: string + description: The UUID of the component + format: uuid + clone-project-include: + type: string + enum: + - ACL + - COMPONENTS + - FINDINGS + - FINDINGS_AUDIT_HISTORY + - POLICY_VIOLATIONS + - POLICY_VIOLATIONS_AUDIT_HISTORY + - PROPERTIES + - SERVICES + - TAGS + list-project-components-response-item: + type: object + properties: + name: + maxLength: 255 + type: string + version: + maxLength: 255 + type: string + group: + maxLength: 255 + type: string + classifier: + maxLength: 255 + type: string + hashes: + $ref: "#/components/schemas/hashes" + cpe: + maxLength: 255 + type: string + purl: + maxLength: 1024 + type: string + swid_tag_id: + maxLength: 255 + type: string + internal: + type: boolean + copyright: + maxLength: 255 + type: string + license: + maxLength: 255 + type: string + license_expression: + maxLength: 255 + type: string + license_url: + maxLength: 255 + type: string + resolved_license: + $ref: "#/components/schemas/license" + occurrence_count: + minimum: 0 + type: integer + format: int64 + last_inherited_risk_score: + type: number + format: double + uuid: + type: string + format: uuid + task-queue: + required: + - capacity + - created_at + - depth + - name + - status + type: object + properties: + name: + type: string + status: + $ref: "#/components/schemas/task-queue-status" + capacity: + minimum: 1 + type: integer + format: int32 + depth: + minimum: 0 + type: integer + format: int32 + created_at: + $ref: "#/components/schemas/timestamp" + updated_at: + $ref: "#/components/schemas/timestamp" + task-queue-status: + type: string + enum: + - ACTIVE + - PAUSED + list-vuln-policies-response-item: + required: + - name + - operation_mode + - priority + - source + - uuid + type: object + properties: + uuid: + type: string + format: uuid + name: + type: string + description: + type: string + author: + type: string + priority: + type: integer + format: int32 + operation_mode: + $ref: "#/components/schemas/vuln-policy-operation-mode" + source: + $ref: "#/components/schemas/vuln-policy-source" + vuln-policy-analysis: + required: + - state + type: object + properties: + state: + type: string + enum: + - EXPLOITABLE + - IN_TRIAGE + - FALSE_POSITIVE + - NOT_AFFECTED + - RESOLVED + justification: + type: string + enum: + - CODE_NOT_PRESENT + - CODE_NOT_REACHABLE + - REQUIRES_CONFIGURATION + - REQUIRES_DEPENDENCY + - REQUIRES_ENVIRONMENT + - PROTECTED_BY_COMPILER + - PROTECTED_AT_RUNTIME + - PROTECTED_AT_PERIMETER + - PROTECTED_BY_MITIGATING_CONTROL + vendor_response: + type: string + enum: + - CAN_NOT_FIX + - WILL_NOT_FIX + - UPDATE + - ROLLBACK + - WORKAROUND_AVAILABLE + details: + type: string + suppress: + type: boolean + default: false + vuln-policy-rating: + required: + - method + - severity + type: object + properties: + method: + type: string + enum: + - CVSSV2 + - CVSSV3 + - CVSSV4 + - OWASP + severity: + type: string + enum: + - CRITICAL + - HIGH + - MEDIUM + - LOW + - INFO + vector: + type: string + score: + type: number + format: double + vuln-policy-operation-mode: + type: string + enum: + - DISABLED + - APPLY + - LOG + vuln-policy-condition-error: + required: + - column + - line + - message + type: object + properties: + line: + type: integer + description: Line number where the error occurred + format: int32 + column: + type: integer + description: Column number where the error occurred + format: int32 + message: + type: string + description: Description of the error + vuln-policy-source: + type: string + enum: + - USER + - BUNDLE + list-vuln-policy-bundles-response-item: + required: + - url + - uuid + type: object + properties: + uuid: + type: string + format: uuid + url: + type: string + hash: + type: string + last_successful_sync: + $ref: "#/components/schemas/timestamp" + created: + $ref: "#/components/schemas/timestamp" + updated: + $ref: "#/components/schemas/timestamp" + list-workflow-run-events-response-item: + required: + - event + - sequence_number + type: object + properties: + sequence_number: + type: integer + format: int32 + event: + type: object + additionalProperties: true + total-count: + required: + - count + - type + type: object + properties: + count: + minimum: 0 + type: integer + description: "The total number of records across all pages. Might be an\ + \ exact count, or a lower bound. Refer to the `type` field for the applicable\ + \ semantics." + format: int64 + type: + $ref: "#/components/schemas/total-count-type" + license: + type: object + properties: + name: + maxLength: 255 + type: string + license_id: + maxLength: 255 + type: string + uuid: + type: string + format: uuid + osi_approved: + type: boolean + fsf_libre: + type: boolean + custom_license: + type: boolean + component-project: + type: object + properties: + name: + maxLength: 255 + type: string + version: + maxLength: 255 + type: string + uuid: + type: string + format: uuid + dependency-metrics: + type: object + properties: + critical: + type: integer + format: int32 + high: + type: integer + format: int32 + medium: + type: integer + format: int32 + low: + type: integer + format: int32 + unassigned: + type: integer + format: int32 + vulnerabilities: + type: integer + format: int32 + suppressed: + type: integer + format: int32 + inherited_risk_score: + type: number + format: double + findings_total: + type: integer + format: int32 + findings_audited: + type: integer + format: int32 + findings_unaudited: + type: integer + format: int32 + policy_violations_fail: + type: integer + format: int32 + policy_violations_warn: + type: integer + format: int32 + policy_violations_info: + type: integer + format: int32 + policy_violations_total: + type: integer + format: int32 + policy_violations_audited: + type: integer + format: int32 + policy_violations_unaudited: + type: integer + format: int32 + policy_violations_security_total: + type: integer + format: int32 + policy_violations_security_audited: + type: integer + format: int32 + policy_violations_security_unaudited: + type: integer + format: int32 + policy_violations_license_total: + type: integer + format: int32 + policy_violations_license_audited: + type: integer + format: int32 + policy_violations_license_unaudited: + type: integer + format: int32 + policy_violations_operational_total: + type: integer + format: int32 + policy_violations_operational_audited: + type: integer + format: int32 + policy_violations_operational_unaudited: + type: integer + format: int32 + extension-test-check-status: + type: string + enum: + - PASSED + - FAILED + - SKIPPED + total-count-type: + type: string + enum: + - AT_LEAST + - EXACT + responses: + generic-unauthorized-error: + description: Unauthorized + content: + application/problem+json: + schema: + $ref: "#/components/schemas/problem-details" + example: + type: about:blank + status: 401 + title: Unauthorized + detail: Not authorized to access the requested resource. + generic-forbidden-error: + description: Forbidden + content: + application/problem+json: + schema: + $ref: "#/components/schemas/problem-details" + example: + type: about:blank + status: 403 + title: Forbidden + detail: Not permitted to access the requested resource. + generic-error: + description: Unexpected error + content: + application/problem+json: + schema: + $ref: "#/components/schemas/problem-details" + invalid-request-error: + description: Bad request + content: + application/problem+json: + schema: + $ref: "#/components/schemas/invalid-request-problem-details" + example: + type: about:blank + status: 400 + title: Bad Request + detail: The request could not be processed because it failed validation. + errors: + - path: foo.bar + value: baz + message: Must be a number + generic-not-found-error: + description: Not found + content: + application/problem+json: + schema: + $ref: "#/components/schemas/problem-details" + example: + type: about:blank + status: 404 + title: Not Found + detail: The requested resource could not be found. + generic-conflict-error: + description: Forbidden + content: + application/problem+json: + schema: + $ref: "#/components/schemas/problem-details" + example: + type: about:blank + status: 409 + title: Conflict + detail: The resource already exists. + parameters: + page-token: + name: page_token + in: query + description: Opaque token pointing to a specific position in a collection + schema: + type: string + pagination-limit: + name: limit + in: query + description: Maximum number of items to retrieve from the collection + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 100 + sort-direction: + name: sort_direction + in: query + schema: + $ref: "#/components/schemas/sort-direction" + sort-by: + name: sort_by + in: query + description: Field to sort by. Refer to the operation description for information + about which fields are sortable. + schema: + maxLength: 255 + minLength: 1 + type: string + securitySchemes: + apiKeyAuth: + type: apiKey + description: Authentication via API key + name: X-Api-Key + in: header + bearerAuth: + type: http + description: Authentication via Bearer token + scheme: Bearer diff --git a/docs/reference/api/v1.md b/docs/reference/api/v1.md new file mode 100644 index 00000000..78c24fad --- /dev/null +++ b/docs/reference/api/v1.md @@ -0,0 +1,8 @@ +--- +hide: + - toc +--- + +# REST API v1 + + diff --git a/docs/reference/api/v2.md b/docs/reference/api/v2.md new file mode 100644 index 00000000..f1f56916 --- /dev/null +++ b/docs/reference/api/v2.md @@ -0,0 +1,8 @@ +--- +hide: + - toc +--- + +# REST API v2 + + diff --git a/docs/reference/badges.md b/docs/reference/badges.md new file mode 100644 index 00000000..c30059fa --- /dev/null +++ b/docs/reference/badges.md @@ -0,0 +1,95 @@ +# Badges + +Dependency-Track provides SVG badges that display a project's current vulnerability +and policy violation metrics. Badges can be embedded in README files, dashboards, or +internal documentation to give at-a-glance visibility into a project's security posture. + +## Badge Types + +### Vulnerable Components + +Displays a severity breakdown of vulnerable components in the project. The badge shows +the highest severity present, or *no vulns* if no active findings exist. + +Suppressed vulnerabilities are excluded from badge counts. + +**By project name and version:** + +```text +https://dtrack.example.com/api/v1/badge/vulns/project/{name}/{version}?apiKey={apiKey} +``` + +**By project UUID:** + +```text +https://dtrack.example.com/api/v1/badge/vulns/project/{uuid}?apiKey={apiKey} +``` + +### Policy Violations + +Displays the current policy violation state. Shows *violations* if any active (non-suppressed) +violations are present, or *no violations* otherwise. + +**By project name and version:** + +```text +https://dtrack.example.com/api/v1/badge/violations/project/{name}/{version}?apiKey={apiKey} +``` + +**By project UUID:** + +```text +https://dtrack.example.com/api/v1/badge/violations/project/{uuid}?apiKey={apiKey} +``` + +## Embedding Badges + +=== "Markdown" + + ```markdown + ![Vulnerabilities](https://dtrack.example.com/api/v1/badge/vulns/project/my-app/1.0.0?apiKey=odt_...) + ![Policy Violations](https://dtrack.example.com/api/v1/badge/violations/project/my-app/1.0.0?apiKey=odt_...) + ``` + +=== "HTML" + + ```html + Vulnerabilities + Policy Violations + ``` + +## Access Configuration + +Badge requests require authentication. Two approaches are available: + +### API Key in URL + +Pass the API key as a query parameter (`?apiKey={apiKey}`). This is the simplest +approach for static badge URLs embedded in documentation. + +```text +https://dtrack.example.com/api/v1/badge/vulns/project/{uuid}?apiKey=odt_... +``` + +### API Key in Header + +Pass the API key in the `X-Api-Key` request header. This is appropriate for server-side +badge proxies where the key should not appear in URLs. + +```shell +curl -H "X-Api-Key: odt_..." \ + "https://dtrack.example.com/api/v1/badge/vulns/project/{uuid}" +``` + +## Required Permission + +The API key (or the team it belongs to) must have the `VIEW_BADGES` permission. + +Dependency-Track creates a default **Badge Viewers** team with this permission and a +pre-generated API key on first startup. You may use this key for badge access, but +rotate it before going to production. + +!!! warning + API keys in badge URLs are visible to anyone who can view the source of the page + embedding them. Use a dedicated, low-privilege API key with only the `VIEW_BADGES` + permission for this purpose, and avoid reusing keys from more privileged teams. diff --git a/docs/reference/cel-expressions.md b/docs/reference/cel-expressions.md new file mode 100644 index 00000000..7a25f21e --- /dev/null +++ b/docs/reference/cel-expressions.md @@ -0,0 +1,533 @@ +# CEL Expressions + +Dependency-Track uses the [Common Expression Language] (CEL) for policy conditions and +[notification filter expressions](notifications/filter-expressions.md). This page describes +the available variables, functions, and expression patterns. + +For instructions on creating CEL-based policy conditions, see +[Managing vulnerability policies](../guides/user/managing-vulnerability-policies.md). + +## Syntax + +The CEL syntax is similar to other [C-style languages] like Java and JavaScript. +However, CEL is not [Turing-complete]. As such, it does *not* support constructs like `if` statements or loops (that is, `for`, `while`). + +As a compensation for missing loops, CEL offers [macros] like `all`, `exists`, `exists_one`, `map`, and `filter`. +Refer to the [macros] documentation for more details, or have a look at the [examples](#examples) to see how they may +be utilized in practice. + +CEL syntax is described thoroughly in the official [language definition]. + +## Evaluation Context + +Conditions are scoped to individual components. +Each condition is evaluated for every single component in a project. + +The context in which expressions are evaluated in contains the following variables: + +| Variable | Type | Description | +|:------------|:------------------------------------------------|:---------------------------------------------| +| `component` | [Component] | The component being evaluated | +| `project` | [Project] | The project the component is part of | +| `vulns` | list([Vulnerability]) | Vulnerabilities the component is affected by | +| `now` | [`google.protobuf.Timestamp`][protobuf-ts-docs] | The current time at the start of evaluation | + +!!! note + Many fields on [Component], [Project], and [Vulnerability] are optional. + Use the `has()` macro to [check for presence of optional fields](#optional-field-checking) + before accessing them. + +## Examples + +### Component age + +Besides out-of-date versions, component age is another indicator of potential risk. Components may be on the latest +available version, but still be 20 years old. + +The following expression matches [Component]s that are two years old, or even older, using the `now` +variable and timestamp arithmetic: + +```js linenums="1" +has(component.published_at) + && component.published_at < now - duration("17520h") // ~2 years +``` + +### Component blacklist + +The following expression matches on the [Component]'s [Package URL], using a regular expression in [RE2] syntax. +Additionally, it checks whether the [Component]'s version falls into a given [vers] range using +[`matches_range`](#matches_range), consisting of multiple constraints. + +```js linenums="1" +component.purl.matches("^pkg:maven/com.acme/acme-lib\\b.*") + && component.matches_range("vers:maven/>0|<1|!=0.2.4") +``` + +The expression will match: + +* `pkg:maven/com.acme/acme-lib@0.1.0` +* `pkg:maven/com.acme/acme-lib@0.9.9` + +but not: + +* `pkg:maven/com.acme/acme-library@0.1.0` +* `pkg:maven/com.acme/acme-lib@0.2.4` + +### Dependency graph traversal + +The following expression matches [Component]s that are a (possibly transitive) dependency of a [Component] +with name `foo`, *but only if* a [Component] with name `bar` is also present in the [Project]. + +```js linenums="1" +component.is_dependency_of(v1.Component{name: "foo"}) + && project.depends_on(v1.Component{name: "bar"}) +``` + +To check whether a component is a *direct* (that is, non-transitive) dependency: + +```js linenums="1" +component.is_direct_dependency_of(v1.Component{name: "foo"}) +``` + +To check whether a component is *exclusively* introduced through another component +(that is, no other path in the dependency graph leads to it): + +```js linenums="1" +component.is_exclusive_dependency_of(v1.Component{name: "foo"}) +``` + +Dependency graph functions support the following [Component] fields for matching: + +| Field | `re:` prefix | `vers:` prefix | +|:--------------|:------------:|:--------------:| +| `uuid` | | | +| `group` | ✅ | | +| `name` | ✅ | | +| `version` | ✅ | ✅ | +| `classifier` | | | +| `cpe` | ✅ | | +| `purl` | ✅ | | +| `swid_tag_id` | ✅ | | +| `is_internal` | | | + +The `re:` prefix enables [RE2] regex matching on the field value: + +```js linenums="1" +project.depends_on(v1.Component{name: "re:^acme-.*"}) +``` + +The `vers:` prefix enables [vers] range matching on the `version` field: + +```js linenums="1" +project.depends_on(v1.Component{ + name: "acme-lib", + version: "vers:maven/>1.0.0|<2.0.0" +}) +``` + +!!! note + When constructing objects like [Component] on-the-fly, it is necessary to use their version namespace, + that is, `v1`. This is required in order to perform type checking, as well as ensuring backward compatibility. + +### License expression allowlist + +The following expression matches non-internal [Component]s whose [SPDX license expression][SPDX license expressions] +cannot be satisfied using only the approved set of licenses. +License-with-exception combinations are listed as a single compound entry. + +```js linenums="1" +!spdx_expr_allows(component.license_expression, [ + "MIT", "Apache-2.0", "BSD-3-Clause", + "GPL-2.0-only WITH Classpath-exception-2.0" +]) +``` + +When components don't have a license expression, `component.resolved_license.id` can be used as a fallback. +A single license ID is a valid SPDX expression, so it gets the same version-aware treatment: + +```js linenums="1" +!spdx_expr_allows( + has(component.license_expression) + ? component.license_expression + : component.resolved_license.id, + ["MIT", "Apache-2.0"] +) +``` + +### License blacklist + +The following expression matches [Component]s that are **not** internal to the organization, +and have either: + +* No resolved [License] at all +* A resolved [License] that is not part of the `Permissive` license group + +```js linenums="1" +!component.is_internal && ( + !has(component.resolved_license) + || !component.resolved_license.groups.exists(licenseGroup, + licenseGroup.name == "Permissive") +) +``` + +### Vulnerability blacklist + +The following expression matches [Component]s in [Project]s tagged as `3rd-party`, with at least one [Vulnerability] +being any of the given blacklisted IDs. + +```js linenums="1" +"3rd-party" in project.tags + && vulns.exists(vuln, vuln.id in [ + "CVE-2017-5638", // struts RCE + "CVE-2021-44228", // log4shell + "CVE-2022-22965", // spring4shell + ]) +``` + +### Vulnerabilities with high severity in public facing projects + +The following expression matches [Component]s in [Project]s tagged as `public-facing`, with at least one `HIGH` +or `CRITICAL` +[Vulnerability], where the [CVSSv3] attack vector is `Network`. + +```js linenums="1" +"public-facing" in project.tags + && vulns.exists(vuln, + vuln.severity in ["HIGH", "CRITICAL"] + && vuln.cvssv3_vector.matches(".*/AV:N/.*") + ) +``` + +### Version distance + +The [`version_distance`](#version_distance) function allows matching based on how far behind a component's version +is from the latest known version. The distance is specified using a [VersionDistance] object with `epoch`, `major`, +`minor`, and `patch` fields. + +The following expression matches components that are more than one major version behind: + +```js linenums="1" +component.version_distance(">=", v1.VersionDistance{major: 1}) +``` + +### Optional field checking + +CEL does not have a concept of `null`. Accessing a field that is not set +returns its default value (for example, `""` for strings, `0` for numbers, `false` for booleans), which can +lead to misleading matches. Use the `has()` macro to check for field presence before accessing it: + +```js linenums="1" +has(component.published_at) + && component.published_at < now - duration("8760h") +``` + +```js linenums="1" +has(project.metadata) && has(project.metadata.tools) +``` + +## SPDX License Expressions + +The `spdx_expr_*` functions evaluate [SPDX license expressions]. They operate on expression strings +(typically `component.license_expression`) and can also be used with `component.resolved_license.id` +as a fallback for components without a license expression. + +All license ID comparisons are **case-insensitive** per the SPDX specification. + +### Version equivalence + +Deprecated license IDs are treated as equivalent to their modern counterparts. +For example, `GPL-2.0` and `GPL-2.0-only` are considered the same license. + +### Version ranges + +The `+` operator and `-or-later` suffix are understood as "this version or any later +version in the same license family." For example, `GPL-3.0-only` satisfies an allow-list containing +`GPL-2.0-or-later`, and `Apache-1.0+` satisfies an allow-list containing `Apache-2.0`. + +### Deprecated `WITH`-compounds + +Legacy compound IDs like `GPL-2.0-with-classpath-exception` are automatically +resolved to their modern `WITH` expression form (`GPL-2.0-only WITH Classpath-exception-2.0`). + +### `WITH` composites + +License-with-exception combinations are treated as atomic composites. The full +compound (for example, `"GPL-2.0-only WITH Classpath-exception-2.0"`) must appear as a single entry in +allow-lists, not as separate license and exception IDs. The license part uses version-aware matching +(for example, `GPL-2.0 WITH ...` matches `GPL-2.0-only WITH ...`), while the exception part requires an exact match. + +## Function Reference + +For type definitions, refer to the [schema reference](schemas/policy.md). + +In addition to the [standard definitions] of the CEL specification, Dependency-Track offers the following functions. + +### `depends_on` + +Checks whether a [Project] contains a [Component] matching the given criteria. +Useful for enforcing policies only when specific components are present in a project. + +| Name | Type | Description | +|:------------|:------------|:----------------------------------------------------------------| +| *receiver* | [Project] | The project to check | +| `component` | [Component] | Criteria to match against. Supports `re:` and `vers:` prefixes. | + +**Returns:** `true` if a matching component exists in the project. + +```js linenums="1" +project.depends_on(v1.Component{name: "baz"}) +``` + +```mermaid +graph TD + P["Project"]:::match --> A["foo"] + P --> B["bar"] + A --> C["baz"]:::criteria + A --> D["qux"] + B --> D + classDef match stroke:#22c55e,stroke-width:3 + classDef criteria fill:#22c55e,color:#fff +``` + +!!! tip + `project` matches because `baz` exists in its dependency graph. + +### `is_dependency_of` + +Checks whether a [Component] is a (possibly transitive) dependency of another [Component]. + +| Name | Type | Description | +|:------------|:------------|:---------------------------------------------------------------------------| +| *receiver* | [Component] | The component being evaluated | +| `component` | [Component] | Criteria to match the parent against. Supports `re:` and `vers:` prefixes. | + +**Returns:** `true` if the receiver is a dependency (direct or transitive) of a matching component. + +```js linenums="1" +component.is_dependency_of(v1.Component{name: "foo"}) +``` + +```mermaid +graph TD + P["Project"] --> A["foo"]:::criteria + P --> B["bar"] + A --> C["baz"]:::match + A --> D["qux"]:::match + B --> D + classDef match stroke:#22c55e,stroke-width:3 + classDef criteria fill:#22c55e,color:#fff +``` + +!!! tip + `baz` and `qux` match since both are dependencies of `foo`. + `qux` matches even though it's also reachable through `bar`. + +### `is_direct_dependency_of` + +Checks whether a [Component] is a *direct* (non-transitive) dependency of another [Component]. + +| Name | Type | Description | +|:------------|:------------|:---------------------------------------------------------------------------| +| *receiver* | [Component] | The component being evaluated | +| `component` | [Component] | Criteria to match the parent against. Supports `re:` and `vers:` prefixes. | + +**Returns:** `true` if the receiver is a direct dependency of a matching component. + +```js linenums="1" +component.is_direct_dependency_of(v1.Component{name: "foo"}) +``` + +```mermaid +graph TD + P["Project"] --> A["foo"]:::criteria + P --> B["bar"] + A --> C["baz"]:::match + A --> D["qux"]:::match + B --> D + classDef match stroke:#22c55e,stroke-width:3 + classDef criteria fill:#22c55e,color:#fff +``` + +!!! tip + `baz` and `qux` match since both are direct children of `foo`. + +With a deeper graph, transitive dependencies do **not** match: + +```mermaid +graph TD + A["foo"]:::criteria --> C["baz"]:::match + C --> E["deep"]:::nomatch + classDef match stroke:#22c55e,stroke-width:3 + classDef criteria fill:#22c55e,color:#fff + classDef nomatch stroke:#ef4444,stroke-width:3,stroke-dasharray:5 +``` + +!!! tip + `baz` matches since it's a direct child of `foo`. + `deep` does **not** match, as it's a transitive dependency. + +### `is_exclusive_dependency_of` + +Checks whether a [Component] is *exclusively* introduced through another [Component]. +Returns `true` only if every path from the project root to the receiver passes through a matching component. + +| Name | Type | Description | +|:------------|:------------|:---------------------------------------------------------------------------| +| *receiver* | [Component] | The component being evaluated | +| `component` | [Component] | Criteria to match the parent against. Supports `re:` and `vers:` prefixes. | + +**Returns:** `true` if the receiver is exclusively introduced through a matching component. + +```js linenums="1" +component.is_exclusive_dependency_of(v1.Component{name: "foo"}) +``` + +```mermaid +graph TD + P["Project"] --> A["foo"]:::criteria + P --> B["bar"] + A --> C["baz"]:::match + A --> D["qux"]:::nomatch + B --> D + classDef match stroke:#22c55e,stroke-width:3 + classDef criteria fill:#22c55e,color:#fff + classDef nomatch stroke:#ef4444,stroke-width:3,stroke-dasharray:5 +``` + +!!! tip + `baz` matches since it's only reachable through `foo`. + `qux` does **not** match, as it's also reachable through `bar`. + +### `matches_range` + +Checks whether a [Component]'s or [Project]'s version falls within a [vers] range. + +| Name | Type | Description | +|:-----------|:-------------------------|:-----------------------------------------------------------| +| *receiver* | [Component] or [Project] | The component or project to check | +| `range` | `string` | A [vers] range string (for example, `"vers:maven/>1.0.0\|<2.0.0"`) | + +**Returns:** `true` if the version is within the specified range. + +```js linenums="1" +component.matches_range("vers:maven/>0|<1|!=0.2.4") +``` + +Currently supported versioning schemes: + +| Versioning Scheme | Ecosystem | +|:------------------|:---------------------------------| +| `deb` | Debian / Ubuntu | +| `generic` | Generic / Any | +| `golang` | Go | +| `maven` | Java / Maven | +| `npm` | JavaScript / NodeJS | +| `rpm` | CentOS / Fedora / Red Hat / SUSE | + +!!! note + If the ecosystem of the components to match against is known upfront, it's good practice to use the according + versioning scheme in `matches_range`. This helps with accuracy, as versioning schemes have different nuances + across ecosystems, which makes comparisons error-prone. + +### `spdx_expr_allows` + +Checks whether an [SPDX license expression][SPDX license expressions] can be satisfied +using only licenses from the given set. For `OR` expressions, at least one branch must +be satisfiable. For `AND` expressions, all children must be satisfiable. `WITH` expressions +are treated as atomic composites (see below). + +| Name | Type | Description | +|:-------------|:---------------|:---------------------------------------------------------| +| `expression` | `string` | An SPDX license expression | +| `ids` | `list(string)` | Allowed licenses, including `WITH` composites if needed | + +**Returns:** `true` if the expression is satisfiable with the given IDs. + +```js linenums="1" +spdx_expr_allows(component.license_expression, ["MIT", "Apache-2.0"]) +// "MIT" => true (MIT is allowed) +// "MIT OR GPL-3.0-only" => true (MIT branch is satisfiable) +// "MIT AND Apache-2.0" => true (both are allowed) +// "MIT AND GPL-3.0-only" => false (GPL-3.0-only is not allowed) +// "GPL-3.0-only" => false (not in the allowed set) +``` + +Version-range matching is applied automatically: + +```js linenums="1" +spdx_expr_allows(component.license_expression, ["GPL-2.0-or-later"]) +// "GPL-2.0-only" => true (2.0 is within 2.0-or-later range) +// "GPL-3.0-only" => true (3.0 is within 2.0-or-later range) +// "GPL-1.0-only" => false (1.0 is below 2.0) +// "GPL-2.0" => true (deprecated ID, equivalent to GPL-2.0-only) +``` + +!!! tip + `WITH` expressions (license-with-exception) are matched as a single unit. + The allowed set must contain the full compound entry, not the license and exception separately: + + ```js linenums="1" + spdx_expr_allows(component.license_expression, [ + "GPL-2.0-only WITH Classpath-exception-2.0" + ]) + // "GPL-2.0-only WITH Classpath-exception-2.0" => true (composite matches) + // "GPL-2.0-only" => false (plain license, not in set) + // "GPL-2.0-only WITH LLVM-exception" => false (different composite) + ``` + +### `spdx_expr_requires_any` + +Checks whether at least one of the given license IDs is required in every possible satisfaction +of an [SPDX license expression][SPDX license expressions]. For `OR` expressions, at least one of +the IDs must be required in all branches. For `AND` expressions, at least one of the IDs must be +required in at least one child. + +| Name | Type | Description | +|:-------------|:----------------|:---------------------------| +| `expression` | `string` | An SPDX license expression | +| `ids` | `list(string)` | License IDs to check | + +**Returns:** `true` if at least one of the IDs is always required. + +```js linenums="1" +spdx_expr_requires_any(component.license_expression, ["GPL-2.0-only", "GPL-3.0-only"]) +// "GPL-2.0-only AND MIT" => true (GPL-2.0-only always required) +// "GPL-2.0-only OR GPL-3.0-only" => true (every branch requires one) +// "GPL-2.0 AND MIT" => true (GPL-2.0 is equivalent to GPL-2.0-only) +// "GPL-2.0-only OR MIT" => false (MIT branch requires neither) +``` + +### `version_distance` + +Checks whether the distance between a [Component]'s current version and its latest known version +matches a given [VersionDistance]. + +| Name | Type | Description | +|:-----------|:------------------|:----------------------------------------------------| +| *receiver* | [Component] | The component to check | +| `operator` | `string` | Numeric comparator: `<`, `<=`, `=`, `!=`, `>`, `>=` | +| `distance` | [VersionDistance] | The version distance to compare against | + +**Returns:** `true` if the version distance satisfies the comparison. + +```js linenums="1" +component.version_distance(">=", v1.VersionDistance{major: 1}) +``` + +[C-style languages]: https://en.wikipedia.org/wiki/List_of_C-family_programming_languages +[CVSSv3]: https://www.first.org/cvss/v3.0/specification-document +[Common Expression Language]: https://cel.dev/ +[Component]: schemas/policy.md#component +[License]: schemas/policy.md#license +[Package URL]: https://github.com/package-url/purl-spec/blob/master/PURL-SPECIFICATION.rst +[Project]: schemas/policy.md#project +[RE2]: https://github.com/google/re2/wiki/Syntax +[SPDX license expressions]: https://spdx.github.io/spdx-spec/v2.3/SPDX-license-expressions/ +[Turing-complete]: https://en.wikipedia.org/wiki/Turing_completeness +[VersionDistance]: schemas/policy.md#versiondistance +[Vulnerability]: schemas/policy.md#vulnerability +[language definition]: https://github.com/google/cel-spec/blob/v0.13.0/doc/langdef.md#language-definition +[macros]: https://github.com/google/cel-spec/blob/v0.13.0/doc/langdef.md#macros +[protobuf-ts-docs]: https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp +[standard definitions]: https://github.com/google/cel-spec/blob/v0.13.0/doc/langdef.md#list-of-standard-definitions +[vers]: https://github.com/package-url/vers-spec diff --git a/docs/reference/community-integrations.md b/docs/reference/community-integrations.md new file mode 100644 index 00000000..68e7507c --- /dev/null +++ b/docs/reference/community-integrations.md @@ -0,0 +1,68 @@ +# Community Integrations + +The following tools and integrations have been built by the community on top of +Dependency-Track's API-first design. They are maintained independently and are not +officially supported by the Dependency-Track project. + +!!! note + Dependency-Track's [REST API](api/v1.md) provides full programmatic access to + all platform features. This makes it straightforward to build custom integrations + for tools and workflows not listed here. + +## CI/CD and Build System Plugins + +These plugins automate SBOM upload and vulnerability gate evaluation as part of your +build pipeline. + +| Tool | Integration | Link | +|:-----|:------------|:-----| +| Jenkins | Dependency-Track Jenkins Plugin | [jenkins.io](https://plugins.jenkins.io/dependency-track/) | +| GitHub | OWASP Dependency-Track Check GitHub Action | [GitHub Marketplace](https://github.com/marketplace/actions/owasp-dependency-track-check) | +| Azure DevOps | Azure DevOps Extension | [Visual Studio Marketplace](https://marketplace.visualstudio.com/) | +| Maven | `dependency-track-maven-plugin` | [GitHub](https://github.com/pmckeown/dependency-track-maven-plugin) | + +## Developer Portals + +| Tool | Integration | Link | +|:-----|:------------|:-----| +| Backstage | Dependency-Track Backstage Plugin (TRIMM) | [GitHub](https://github.com/TRIMM/plugin-dependency-track) | + +## Client Libraries + +These libraries provide programmatic access to the Dependency-Track API from your +own tools and automation scripts. + +| Language | Library | Link | +|:---------|:--------|:-----| +| Go | Dependency-Track Client | [GitHub](https://github.com/nscuro/dtrack-client-go) | +| Python | Dependency-Track Client | [GitHub](https://github.com/nscuro/dtrack-client-py) | +| Ruby | Dependency-Track Client | [GitHub](https://github.com/nscuro/dtrack-client-rb) | + +## Security and Vulnerability Management + +| Tool | Integration | Link | +|:-----|:------------|:-----| +| SecObserve | Dependency-Track integration | [GitHub](https://github.com/MaibornWolff/SecObserve) | +| Mixeway Hub | Risk aggregation platform | [mixeway.pl](https://mixeway.pl) | +| SD Elements (Security Compass) | Dependency-Track integration | [securitycompass.com](https://securitycompass.com) | + +## Reporting and Auditing + +| Tool | Description | Link | +|:-----|:------------|:-----| +| Dependency-Track Reporting Tool | Generates reports from Dependency-Track data (Modus Operandi) | [GitHub](https://github.com/ModusCreateOrg/dependency-track-report-tool) | +| dtrack-audit | CLI tool for auditing findings (OZON.ru) | [GitHub](https://github.com/ozonru/dtrack-audit) | +| dtrack-auditor | Policy-driven finding auditor | [GitHub](https://github.com/jetstack/dtrack-auditor) | +| `dependency-track-exporter` | Prometheus metrics exporter (Jetstack) | [GitHub](https://github.com/jetstack/dependency-track-exporter) | + +## Other Utilities + +| Tool | Description | Link | +|:-----|:------------|:-----| +| dtapac | Policy-as-code for Dependency-Track via OPA | [GitHub](https://github.com/nscuro/dtapac) | +| sbomify | SBOM enrichment and sharing | [sbomify.com](https://sbomify.com) | + +--- + +*Know of an integration that should be listed here? Open a pull request on the +[documentation repository](https://github.com/DependencyTrack/hyades).* diff --git a/docs/reference/configuration/.pages b/docs/reference/configuration/.pages new file mode 100644 index 00000000..10fd96ea --- /dev/null +++ b/docs/reference/configuration/.pages @@ -0,0 +1,7 @@ +nav: + - Application: application.md + - Data Sources: datasources.md + - File Storage: file-storage.md + - Database: database.md + - Durable Execution Engine: dex-engine.md + - All Properties: properties.md diff --git a/docs/reference/configuration/application.md b/docs/reference/configuration/application.md index 6d5f71b2..e2c54dfe 100644 --- a/docs/reference/configuration/application.md +++ b/docs/reference/configuration/application.md @@ -1,4 +1,70 @@ -# Application configuration +# Application -!!! warning "Placeholder" - This page has not been written yet. +Dependency-Track's configuration system is based on [MicroProfile Config], +enabling it to support multiple [sources](#sources). + +!!! tip + A comprehensive list of supported config properties can be found in + the [configuration reference](properties.md). + +## Sources + +Config properties are loaded, *in order*, from the following sources: + +1. JVM system properties +2. Environment variables +3. `${cwd}/.env` file +4. `${cwd}/config/application.properties` file +5. `application.properties` embedded in the application + +!!! tip + `${cwd}` refers to the current working directory. + When running an official container image, it is `/opt/owasp/dependency-track`. + +Once a value is found, later sources will not be checked. For example, when Dependency-Track +attempts to look up the config property `foo.bar`, the environment variable `FOO_BAR=123` is +ignored if the JVM was launched with `-Dfoo.bar=321`. + +## Expressions + +Configuration values may use expressions, indicated by `${...}`, to reference each other: + +```ini linenums="1" +dt.datasource.foo.url=jdbc:postgresql://localhost:5432/dtrack +dt.datasource.bar.url=${dt.datasource.foo.url} +``` + +This is useful to avoid redundant definition of identical values. + +## Environment Variable Mapping + +The canonical representation of properties uses alphanumeric characters, +separated by hyphens (`-`) and periods (`.`). For example: + +```ini linenums="1" +foo.BAR-baz=123 +``` + +Environment variables commonly only support alphanumeric characters and underscores (`_`). +To bridge this gap, Dependency-Track will use the following matching strategies, +as [defined](https://download.eclipse.org/microprofile/microprofile-config-3.1/microprofile-config-spec-3.1.html#default_configsources.env.mapping) +by [MicroProfile Config]: + +> 1. Exact match (that is, `foo.BAR-baz`) +> 2. Replace each character that is neither alphanumeric nor `_` with `_` (that is, `foo_BAR_baz`) +> 3. Replace each character that is neither alphanumeric nor `_` with `_`; then convert the name to upper case (that is, `FOO_BAR_BAZ`) + +!!! tip + The [configuration reference](properties.md) includes the correct + environment variable names for each listed config property. + +## Debugging Configuration Resolution + +To verify whether config values are properly resolved and from which source, enable debug logging +via [`dt.config.log.values`](properties.md#dtconfiglogvalues) and +[`dt.logging.level."io.smallrye.config"`](properties.md) set to `DEBUG`. + +!!! warning + This will *not* mask or omit any secrets. **Do not use in production environments.** + +[MicroProfile Config]: https://microprofile.io/specifications/config/ diff --git a/docs/reference/configuration/database.md b/docs/reference/configuration/database.md index 699a4495..10789e61 100644 --- a/docs/reference/configuration/database.md +++ b/docs/reference/configuration/database.md @@ -1,4 +1,124 @@ # Database -!!! warning "Placeholder" - This page has not been written yet. +Dependency-Track requires a [PostgreSQL], or PostgreSQL-compatible database to operate. + +The lowest supported version is 14. You are encouraged to use the [newest available version]. + +For guidance on choosing a hosting solution, deploying, and tuning PostgreSQL, see the +[database configuration guide](../../guides/administration/configuring-database.md). + +## Extensions + +The following PostgreSQL [extensions](https://www.postgresql.org/docs/current/external-extensions.html) +are **required** by Dependency-Track. When choosing a hosting solution, verify that the extensions listed +here are supported. + +* [`pg_trgm`](https://www.postgresql.org/docs/current/pgtrgm.html): *Support for similarity of text using trigram matching* + +!!! note + Dependency-Track will execute the necessary `CREATE EXTENSION IF NOT EXISTS` statements + during [schema migration](#schema-migrations). Enabling extensions manually is not necessary. + +Generally, usage of extensions is limited to those that: + +1. Ship with PostgreSQL [out-of-the-box](https://www.postgresql.org/docs/current/contrib.html) +2. Are [trusted](https://www.postgresql.org/about/featurematrix/detail/347/) by default + +## Tuning Parameters + +The following PostgreSQL parameters are recommended for Dependency-Track deployments. +For context on when and why to apply these, see the +[advanced tuning guide](../../guides/administration/configuring-database.md#advanced-tuning). + +### `autovacuum_vacuum_scale_factor` + + + + + + + + + + + + + + + + + + + + +
Default0.2
Recommendation0.02
Tables +
    +
  • COMPONENT
  • +
+
ReferencesDocumentation
+ +### `default_toast_compression` + + + + + + + + + + + + + + + + +
Defaultpglz
Recommendationlz4
References + +
+ +### `wal_compression` + + + + + + + + + + + + + + + + +
Defaultoff
Recommendationlz4 or zstd
References + +
+ +## Schema Migrations + +Schema migrations are performed automatically by the API server upon startup using [Liquibase]. +Usually no manual action is required when upgrading from an older Dependency-Track version, unless explicitly +stated otherwise in the release notes. + +This behaviour can be turned off by setting [`init.tasks.enabled`](properties.md#dtinittasksenabled) +on the API server container to `false`. + +For configuring separate migration credentials, see the +[schema migration credentials guide](../../guides/administration/configuring-database.md#schema-migration-credentials). + +[Liquibase]: https://www.liquibase.com/ +[PostgreSQL]: https://www.postgresql.org/ +[newest available version]: https://www.postgresql.org/support/versioning/ diff --git a/docs/reference/configuration/datasources.md b/docs/reference/configuration/datasources.md index c9191dfd..c5bb9897 100644 --- a/docs/reference/configuration/datasources.md +++ b/docs/reference/configuration/datasources.md @@ -1,4 +1,75 @@ -# Data sources +# Data Sources -!!! warning "Placeholder" - This page has not been written yet. +Data sources are logical objects through which database connections can be acquired. + +## Property Format + +Data sources are configured using properties in the following format: + +```ini +dt.datasource..= +``` + +For available properties, and their environment variable equivalents, refer to the [configuration reference]. + +!!! tip + When `` is omitted, `default` is assumed. + This means that `dt.datasource.url` and `dt.datasource.default.url` are treated equally. + +The `default` data source is *required*. It serves the REST API +and the vast majority of background processing. + +Certain features accept a *data source name* instead of database connection details, +allowing them to use a dedicated connection pool. For example, the +[*database* secret management provider](../../guides/administration/configuring-secret-management.md#database) +via [`dt.secret-management.database.datasource.name`](properties.md#dtsecret-managementdatabasedatasourcename). + +??? example "Multiple data sources" + + ```ini linenums="1" + # Configure the default data source + dt.datasource.url=jdbc:postgresql://localhost:5432/dtrack + dt.datasource.username=dtrack + dt.datasource.password=dtrack + dt.datasource.pool.enabled=true + dt.datasource.pool.max-size=20 + + # Configure the secret management data source + dt.datasource.secretmgt.url=jdbc:postgresql://localhost:5432/dtrack + dt.datasource.secretmgt.username=secrets + dt.datasource.secretmgt.password=secrets + dt.datasource.secretmgt.pool.enabled=true + dt.datasource.secretmgt.pool.max-size=5 + + # Configure secret management to use separate data source + dt.secret-management.provider=database + dt.secret-management.database.datasource.name=secretmgt + ``` + +!!! note + Data sources are instantiated on first use. You can configure as many + data sources as you like, but unless they're being used by a feature, + they will not be created. + +## Connection Pool Properties + +The following properties control local connection pooling per data source: + +* [`dt.datasource..pool.enabled`](properties.md#dtdatasourcepoolenabled) +* [`dt.datasource..url`](properties.md#dtdatasourceurl) +* [`dt.datasource..username`](properties.md#dtdatasourceusername) +* [`dt.datasource..password`](properties.md#dtdatasourcepassword) +* [`dt.datasource..password-file`](properties.md#dtdatasourcepassword-file) +* [`dt.datasource..pool.max-size`](properties.md#dtdatasourcepoolmax-size) +* [`dt.datasource..pool.min-idle`](properties.md#dtdatasourcepoolmin-idle) +* [`dt.datasource..pool.max-lifetime-ms`](properties.md#dtdatasourcepoolmax-lifetime-ms) +* [`dt.datasource..pool.idle-timeout-ms`](properties.md#dtdatasourcepoolidle-timeout-ms) + +When deploying multiple instances, the total number of connections across all pools +must not exceed the PostgreSQL [`max_connections`](https://postgresqlco.nf/doc/en/param/max_connections/) limit +(default: 100). + +For centralised connection pooling with PgBouncer, see the +[database configuration guide](../../guides/administration/configuring-database.md#centralised-connection-pooling). + +[configuration reference]: database.md diff --git a/docs/reference/configuration/dex-engine.md b/docs/reference/configuration/dex-engine.md new file mode 100644 index 00000000..ae0f5f74 --- /dev/null +++ b/docs/reference/configuration/dex-engine.md @@ -0,0 +1,53 @@ +# Durable Execution Engine + +The durable execution engine (dex) handles background task scheduling and execution. +This page documents its worker types, task queues, and default configuration. + +For tuning guidance, see [Scaling](../../guides/administration/scaling.md#concurrency-control). + +## Workers + +Workers poll task queues and execute tasks. Each worker has a configurable +maximum concurrency that limits how many tasks it processes simultaneously +per instance. + +Worker concurrency is configured via: + +```ini +dt.dex-engine...max-concurrency= +``` + +Where `` is either `workflow-worker` or `activity-worker`. + +| Worker Type | Worker Name | Queue | Default Concurrency | +|-------------------|--------------------------------|---------------------------------|--------------------:| +| `workflow-worker` | `default` | `default` | 100 | +| `activity-worker` | `default` | `default` | 25 | +| `activity-worker` | `vuln-analysis` | `vuln-analyses` | 10 | +| `activity-worker` | `artifact-import` | `artifact-imports` | 10 | +| `activity-worker` | `package-metadata-resolution` | `package-metadata-resolutions` | 10 | +| `activity-worker` | `notification` | `notifications` | 5 | +| `activity-worker` | `vuln-analysis-reconciliation` | `vuln-analysis-reconciliations` | 5 | +| `activity-worker` | `policy-evaluation` | `policy-evaluations` | 5 | +| `activity-worker` | `metrics-update` | `metrics-updates` | 5 | + +## Task queues + +Task queue capacity limits how many tasks can be pending across the entire cluster. +When a queue reaches capacity, the scheduler stops creating new tasks for that queue, +providing backpressure. + +Queue capacity is modifiable at runtime in the administrator panel under +*Workflows* -> *Task Queues*, or via REST API. + +| Type | Queue | Default Capacity | +|------------|---------------------------------|-----------------:| +| `workflow` | `default` | 1000 | +| `activity` | `default` | 1000 | +| `activity` | `artifact-imports` | 25 | +| `activity` | `metrics-updates` | 25 | +| `activity` | `notifications` | 25 | +| `activity` | `package-metadata-resolutions` | 25 | +| `activity` | `policy-evaluations` | 25 | +| `activity` | `vuln-analyses` | 25 | +| `activity` | `vuln-analysis-reconciliations` | 25 | diff --git a/docs/reference/configuration/file-storage.md b/docs/reference/configuration/file-storage.md index fa1c5994..26cfe630 100644 --- a/docs/reference/configuration/file-storage.md +++ b/docs/reference/configuration/file-storage.md @@ -1,4 +1,59 @@ -# File storage +# File Storage -!!! warning "Placeholder" - This page has not been written yet. +Dependency-Track uses file storage for intermediate data during background processing, +including uploaded BOMs, vulnerability analysis results, and large notifications. +Files are short-lived and automatically cleaned up after processing. + +The storage provider is selected via [`dt.file-storage.provider`](properties.md#dtfile-storageprovider). + +Both providers compress stored files using [zstd](https://facebook.github.io/zstd/). The compression level is +configurable per provider (default: 5, range: -7 to 22). Higher levels yield +better compression at the cost of CPU. + +## Providers + +### Local + +The `local` provider stores files on the local filesystem. This is the default. + +```ini +dt.file-storage.provider=local +dt.file-storage.local.directory=/data/storage +``` + +When running multiple instances, all nodes must have access to the same directory. +A shared persistent volume (for example, NFS) works well for this. + +Configuration: + +- [`dt.file-storage.local.directory`](properties.md#dtfile-storagelocaldirectory) +- [`dt.file-storage.local.compression.level`](properties.md#dtfile-storagelocalcompressionlevel) + +### S3 + +The `s3` provider stores files in an S3-compatible object store (AWS S3, MinIO, etc.). +Use this when a shared volume is impractical. + +The bucket must exist before startup. Dependency-Track will verify its existence +and fail to start if it's not found. + +```ini +dt.file-storage.provider=s3 +dt.file-storage.s3.endpoint=https://s3.amazonaws.com +dt.file-storage.s3.bucket=dtrack-files +dt.file-storage.s3.access.key= +dt.file-storage.s3.secret.key= +dt.file-storage.s3.region=us-east-1 +``` + +Configuration: + +- [`dt.file-storage.s3.endpoint`](properties.md#dtfile-storages3endpoint) +- [`dt.file-storage.s3.bucket`](properties.md#dtfile-storages3bucket) +- [`dt.file-storage.s3.access.key`](properties.md#dtfile-storages3accesskey) +- [`dt.file-storage.s3.secret.key`](properties.md#dtfile-storages3secretkey) +- [`dt.file-storage.s3.region`](properties.md#dtfile-storages3region) +- [`dt.file-storage.s3.compression.level`](properties.md#dtfile-storages3compressionlevel) +- [`dt.file-storage.s3.connect-timeout-ms`](properties.md#dtfile-storages3connect-timeout-ms) +- [`dt.file-storage.s3.read-timeout-ms`](properties.md#dtfile-storages3read-timeout-ms) +- [`dt.file-storage.s3.write-timeout-ms`](properties.md#dtfile-storages3write-timeout-ms) diff --git a/docs/reference/configuration/properties.md b/docs/reference/configuration/properties.md index 3852ef78..ccf0cb57 100644 --- a/docs/reference/configuration/properties.md +++ b/docs/reference/configuration/properties.md @@ -1,4 +1,2313 @@ -# Configuration properties + + +# Configuration Properties + +## Glossary + +### Required Properties + +Properties marked with * are required. A required property must never be unset. + +### Property Types + +Configuration properties may use the following types: + +| Type | Description | +|:-----|:------------| +| `boolean` | `true` or `false` | +| `cron` | A [cron expression](https://en.wikipedia.org/wiki/Cron#Cron_expression) (e.g. `0 0 * * *`) | +| `double` | A decimal number (e.g. `3.14`) | +| `duration` | An [ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) (e.g. `PT30S`, `PT5M`, `PT1H`) | +| `enum` | One of a fixed set of values, refer to *Valid Values* | +| `integer` | A whole number (e.g. `42`) | +| `string` | A text value | + + +## CORS + +**`dt.cors.allow.credentials`** [¶](#dtcorsallowcredentials){ .headerlink } +: Controls the content of the `Access-Control-Allow-Credentials` response header.
Has no effect when [`dt.cors.enabled`](#dtcorsenabled) is `false`. + + + + + +
Typeboolean
Defaulttrue
ENVDT_CORS_ALLOW_CREDENTIALS
+ +**`dt.cors.allow.headers`** [¶](#dtcorsallowheaders){ .headerlink } +: Controls the content of the `Access-Control-Allow-Headers` response header.
Has no effect when [`dt.cors.enabled`](#dtcorsenabled) is `false`. + + + + + +
Typestring
DefaultOrigin,Content-Type,Authorization,X-Requested-With,Content-Length,Accept,Origin,X-Api-Key,X-Total-Count,*
ENVDT_CORS_ALLOW_HEADERS
+ +**`dt.cors.allow.methods`** [¶](#dtcorsallowmethods){ .headerlink } +: Controls the content of the `Access-Control-Allow-Methods` response header.
Has no effect when [`dt.cors.enabled`](#dtcorsenabled) is `false`. + + + + + +
Typestring
DefaultGET,POST,PUT,PATCH,DELETE,OPTIONS
ENVDT_CORS_ALLOW_METHODS
+ +**`dt.cors.allow.origin`** [¶](#dtcorsalloworigin){ .headerlink } +: Controls the content of the `Access-Control-Allow-Origin` response header.
Has no effect when [`dt.cors.enabled`](#dtcorsenabled) is `false`. + + + + + +
Typestring
Default*
ENVDT_CORS_ALLOW_ORIGIN
+ +**`dt.cors.enabled`** [¶](#dtcorsenabled){ .headerlink } +: Defines whether [Cross Origin Resource Sharing](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) (CORS) headers shall be included in REST API responses. + + + + + +
Typeboolean
Defaulttrue
ENVDT_CORS_ENABLED
+ +**`dt.cors.expose.headers`** [¶](#dtcorsexposeheaders){ .headerlink } +: Controls the content of the `Access-Control-Expose-Headers` response header.
Has no effect when [`dt.cors.enabled`](#dtcorsenabled) is `false`. + + + + + +
Typestring
DefaultOrigin,Content-Type,Authorization,X-Requested-With,Content-Length,Accept,Origin,X-Api-Key,X-Total-Count
ENVDT_CORS_EXPOSE_HEADERS
+ +**`dt.cors.max.age`** [¶](#dtcorsmaxage){ .headerlink } +: Controls the content of the `Access-Control-Max-Age` response header.
Has no effect when [`dt.cors.enabled`](#dtcorsenabled) is `false`. + + + + + +
Typeinteger
Default3600
ENVDT_CORS_MAX_AGE
+ + + +## Cache + +**`dt.cache."package-metadata-resolver.cargo.responses".ttl-ms`** [¶](#dtcache"package-metadata-resolvercargoresponses"ttl-ms){ .headerlink } +: Defines the TTL in milliseconds for Cargo package metadata resolver response cache entries. + + + + + +
Typeinteger
Default7200000
ENVDT_CACHE__PACKAGE_METADATA_RESOLVER_CARGO_RESPONSES__TTL_MS
+ +**`dt.cache."package-metadata-resolver.composer.responses".ttl-ms`** [¶](#dtcache"package-metadata-resolvercomposerresponses"ttl-ms){ .headerlink } +: Defines the TTL in milliseconds for Composer package metadata resolver response cache entries. + + + + + +
Typeinteger
Default7200000
ENVDT_CACHE__PACKAGE_METADATA_RESOLVER_COMPOSER_RESPONSES__TTL_MS
+ +**`dt.cache."package-metadata-resolver.cpan.responses".ttl-ms`** [¶](#dtcache"package-metadata-resolvercpanresponses"ttl-ms){ .headerlink } +: Defines the TTL in milliseconds for CPAN package metadata resolver response cache entries. + + + + + +
Typeinteger
Default14400000
ENVDT_CACHE__PACKAGE_METADATA_RESOLVER_CPAN_RESPONSES__TTL_MS
+ +**`dt.cache."package-metadata-resolver.gem.responses".ttl-ms`** [¶](#dtcache"package-metadata-resolvergemresponses"ttl-ms){ .headerlink } +: Defines the TTL in milliseconds for RubyGems package metadata resolver response cache entries. + + + + + +
Typeinteger
Default7200000
ENVDT_CACHE__PACKAGE_METADATA_RESOLVER_GEM_RESPONSES__TTL_MS
+ +**`dt.cache."package-metadata-resolver.github.responses".ttl-ms`** [¶](#dtcache"package-metadata-resolvergithubresponses"ttl-ms){ .headerlink } +: Defines the TTL in milliseconds for GitHub package metadata resolver response cache entries. + + + + + +
Typeinteger
Default3600000
ENVDT_CACHE__PACKAGE_METADATA_RESOLVER_GITHUB_RESPONSES__TTL_MS
+ +**`dt.cache."package-metadata-resolver.gomodules.responses".ttl-ms`** [¶](#dtcache"package-metadata-resolvergomodulesresponses"ttl-ms){ .headerlink } +: Defines the TTL in milliseconds for Go Modules package metadata resolver response cache entries. + + + + + +
Typeinteger
Default14400000
ENVDT_CACHE__PACKAGE_METADATA_RESOLVER_GOMODULES_RESPONSES__TTL_MS
+ +**`dt.cache."package-metadata-resolver.hackage.responses".ttl-ms`** [¶](#dtcache"package-metadata-resolverhackageresponses"ttl-ms){ .headerlink } +: Defines the TTL in milliseconds for Hackage package metadata resolver response cache entries. + + + + + +
Typeinteger
Default14400000
ENVDT_CACHE__PACKAGE_METADATA_RESOLVER_HACKAGE_RESPONSES__TTL_MS
+ +**`dt.cache."package-metadata-resolver.hex.responses".ttl-ms`** [¶](#dtcache"package-metadata-resolverhexresponses"ttl-ms){ .headerlink } +: Defines the TTL in milliseconds for Hex package metadata resolver response cache entries. + + + + + +
Typeinteger
Default7200000
ENVDT_CACHE__PACKAGE_METADATA_RESOLVER_HEX_RESPONSES__TTL_MS
+ +**`dt.cache."package-metadata-resolver.maven.responses".ttl-ms`** [¶](#dtcache"package-metadata-resolvermavenresponses"ttl-ms){ .headerlink } +: Defines the TTL in milliseconds for Maven package metadata resolver response cache entries. + + + + + +
Typeinteger
Default14400000
ENVDT_CACHE__PACKAGE_METADATA_RESOLVER_MAVEN_RESPONSES__TTL_MS
+ +**`dt.cache."package-metadata-resolver.nixpkgs.responses".ttl-ms`** [¶](#dtcache"package-metadata-resolvernixpkgsresponses"ttl-ms){ .headerlink } +: Defines the TTL in milliseconds for Nixpkgs package metadata resolver response cache entries. + + + + + +
Typeinteger
Default14400000
ENVDT_CACHE__PACKAGE_METADATA_RESOLVER_NIXPKGS_RESPONSES__TTL_MS
+ +**`dt.cache."package-metadata-resolver.npm.responses".ttl-ms`** [¶](#dtcache"package-metadata-resolvernpmresponses"ttl-ms){ .headerlink } +: Defines the TTL in milliseconds for npm package metadata resolver response cache entries. + + + + + +
Typeinteger
Default3600000
ENVDT_CACHE__PACKAGE_METADATA_RESOLVER_NPM_RESPONSES__TTL_MS
+ +**`dt.cache."package-metadata-resolver.nuget.responses".ttl-ms`** [¶](#dtcache"package-metadata-resolvernugetresponses"ttl-ms){ .headerlink } +: Defines the TTL in milliseconds for NuGet package metadata resolver response cache entries. + + + + + +
Typeinteger
Default14400000
ENVDT_CACHE__PACKAGE_METADATA_RESOLVER_NUGET_RESPONSES__TTL_MS
+ +**`dt.cache."package-metadata-resolver.pypi.responses".ttl-ms`** [¶](#dtcache"package-metadata-resolverpypiresponses"ttl-ms){ .headerlink } +: Defines the TTL in milliseconds for PyPI package metadata resolver response cache entries. + + + + + +
Typeinteger
Default7200000
ENVDT_CACHE__PACKAGE_METADATA_RESOLVER_PYPI_RESPONSES__TTL_MS
+ +**`dt.cache."vuln-analyzer.oss-index.results".max-size`** [¶](#dtcache"vuln-analyzeross-indexresults"max-size){ .headerlink } +: Defines the maximum number of entries in the OSS Index result cache. + + + + + +
Typeinteger
Default30000
ENVDT_CACHE__VULN_ANALYZER_OSS_INDEX_RESULTS__MAX_SIZE
+ +**`dt.cache."vuln-analyzer.oss-index.results".ttl-ms`** [¶](#dtcache"vuln-analyzeross-indexresults"ttl-ms){ .headerlink } +: Defines the TTL in milliseconds for OSS Index result cache entries. + + + + + +
Typeinteger
Default43200000
ENVDT_CACHE__VULN_ANALYZER_OSS_INDEX_RESULTS__TTL_MS
+ +**`dt.cache."vuln-analyzer.snyk.results".max-size`** [¶](#dtcache"vuln-analyzersnykresults"max-size){ .headerlink } +: Defines the maximum number of entries in the Snyk result cache. + + + + + +
Typeinteger
Default30000
ENVDT_CACHE__VULN_ANALYZER_SNYK_RESULTS__MAX_SIZE
+ +**`dt.cache."vuln-analyzer.snyk.results".ttl-ms`** [¶](#dtcache"vuln-analyzersnykresults"ttl-ms){ .headerlink } +: Defines the TTL in milliseconds for Snyk result cache entries. + + + + + +
Typeinteger
Default43200000
ENVDT_CACHE__VULN_ANALYZER_SNYK_RESULTS__TTL_MS
+ +**`dt.cache.provider`** * [¶](#dtcacheprovider){ .headerlink } +: Defines the cache provider to use. + + + + + + +
Typeenum
Defaultdatabase
Valid Values[database]
ENVDT_CACHE_PROVIDER
+ +**`dt.cache.provider.database.datasource.name`** [¶](#dtcacheproviderdatabasedatasourcename){ .headerlink } +: Defines the name of the data source to be used by the database cache provider. + + + + + +
Typestring
Defaultdefault
ENVDT_CACHE_PROVIDER_DATABASE_DATASOURCE_NAME
+ +**`dt.cache.provider.database.maintenance.initial-delay-ms`** [¶](#dtcacheproviderdatabasemaintenanceinitial-delay-ms){ .headerlink } +: Defines the initial delay in milliseconds after which the database cache provider first performs its maintenance activities, e.g. entry expiration. + + + + + +
Typeinteger
Default60000
ENVDT_CACHE_PROVIDER_DATABASE_MAINTENANCE_INITIAL_DELAY_MS
+ +**`dt.cache.provider.database.maintenance.interval-ms`** [¶](#dtcacheproviderdatabasemaintenanceinterval-ms){ .headerlink } +: Defines the interval in milliseconds in which the database cache provider performs its maintenance activities, e.g. entry expiration. + + + + + +
Typeinteger
Default300000
ENVDT_CACHE_PROVIDER_DATABASE_MAINTENANCE_INTERVAL_MS
+ + + +## Database + +**`dt.database.password`** [¶](#dtdatabasepassword){ .headerlink } +: Specifies the password to use when authenticating to the database. + + !!! warning "Deprecated" + Since 5.7.0. Use [`dt.datasource.password`](#dtdatasourcepassword) instead. + + + + + +
Typestring
Defaultdtrack
ENVDT_DATABASE_PASSWORD
+ +**`dt.database.password.file`** [¶](#dtdatabasepasswordfile){ .headerlink } +: Specifies the file to load the database password from. If set, takes precedence over [`dt.database.password`](#dtdatabasepassword). + + !!! warning "Deprecated" + Since 5.7.0. Use [`dt.datasource.password`](#dtdatasourcepassword)-file instead. + + + + + + +
Typestring
Defaultnull
Example/var/run/secrets/database-password
ENVDT_DATABASE_PASSWORD_FILE
+ +**`dt.database.pool.enabled`** [¶](#dtdatabasepoolenabled){ .headerlink } +: Specifies if the database connection pool is enabled. + + !!! warning "Deprecated" + Since 5.7.0. Use [`dt.datasource.pool.enabled`](#dtdatasourcepoolenabled) instead. + + + + + +
Typeboolean
Defaulttrue
ENVDT_DATABASE_POOL_ENABLED
+ +**`dt.database.pool.idle.timeout`** [¶](#dtdatabasepoolidletimeout){ .headerlink } +: This property controls the maximum amount of time that a connection is allowed to sit idle in the pool. + + !!! warning "Deprecated" + Since 5.7.0. Use [`dt.datasource.pool.idle-timeout-ms`](#dtdatasourcepoolidle-timeout-ms) instead. + + + + + +
Typeinteger
Default300000
ENVDT_DATABASE_POOL_IDLE_TIMEOUT
+ +**`dt.database.pool.max.lifetime`** [¶](#dtdatabasepoolmaxlifetime){ .headerlink } +: This property controls the maximum lifetime of a connection in the pool. An in-use connection will never be retired, only when it is closed will it then be removed. + + !!! warning "Deprecated" + Since 5.7.0. Use [`dt.datasource.pool.max-lifetime-ms`](#dtdatasourcepoolmax-lifetime-ms) instead. + + + + + +
Typeinteger
Default600000
ENVDT_DATABASE_POOL_MAX_LIFETIME
+ +**`dt.database.pool.max.size`** [¶](#dtdatabasepoolmaxsize){ .headerlink } +: This property controls the maximum size that the pool is allowed to reach, including both idle and in-use connections. + + !!! warning "Deprecated" + Since 5.7.0. Use [`dt.datasource.pool.max-size`](#dtdatasourcepoolmax-size) instead. + + + + + +
Typeinteger
Default30
ENVDT_DATABASE_POOL_MAX_SIZE
+ +**`dt.database.pool.min.idle`** [¶](#dtdatabasepoolminidle){ .headerlink } +: This property controls the minimum number of idle connections in the pool. This value should be equal to or less than [`dt.database.pool.max.size`](#dtdatabasepoolmaxsize). Warning: If the value is less than [`dt.database.pool.max.size`](#dtdatabasepoolmaxsize), [`dt.database.pool.idle.timeout`](#dtdatabasepoolidletimeout) will have no effect. + + !!! warning "Deprecated" + Since 5.7.0. Use [`dt.datasource.pool.min-idle`](#dtdatasourcepoolmin-idle) instead. + + + + + +
Typeinteger
Default15
ENVDT_DATABASE_POOL_MIN_IDLE
+ +**`dt.database.url`** [¶](#dtdatabaseurl){ .headerlink } +: Specifies the JDBC URL to use when connecting to the database. For best performance, set the `reWriteBatchedInserts` query parameter to `true`. + + !!! warning "Deprecated" + Since 5.7.0. Use [`dt.datasource.url`](#dtdatasourceurl) instead. + + + + + + +
Typestring
Defaultnull
Examplejdbc:postgresql://localhost:5432/dtrack?reWriteBatchedInserts=true
ENVDT_DATABASE_URL
+ +**`dt.database.username`** [¶](#dtdatabaseusername){ .headerlink } +: Specifies the username to use when authenticating to the database. + + !!! warning "Deprecated" + Since 5.7.0. Use [`dt.datasource.username`](#dtdatasourceusername) instead. + + + + + +
Typestring
Defaultdtrack
ENVDT_DATABASE_USERNAME
+ +**`dt.datasource.password`** [¶](#dtdatasourcepassword){ .headerlink } +: Defines the password to use for the default data source. + + + + + +
Typestring
Default${dt.database.password}
ENVDT_DATASOURCE_PASSWORD
+ +**`dt.datasource.password-file`** [¶](#dtdatasourcepassword-file){ .headerlink } +: Defines the location of the file to load the password for the default data source from. If set, takes precedence over [`dt.datasource.password`](#dtdatasourcepassword). + + + + + +
Typestring
Default${dt.database.password.file}
ENVDT_DATASOURCE_PASSWORD_FILE
+ +**`dt.datasource.pool.enabled`** * [¶](#dtdatasourcepoolenabled){ .headerlink } +: Defines whether connection pooling is enabled for the default data source. + + + + + +
Typeboolean
Default${dt.database.pool.enabled}
ENVDT_DATASOURCE_POOL_ENABLED
+ +**`dt.datasource.pool.idle-timeout-ms`** [¶](#dtdatasourcepoolidle-timeout-ms){ .headerlink } +: Defines the maximum time in milliseconds that a connection is allowed to sit idle in the pool. + + + + + +
Typeinteger
Default${dt.database.pool.idle.timeout}
ENVDT_DATASOURCE_POOL_IDLE_TIMEOUT_MS
+ +**`dt.datasource.pool.max-lifetime-ms`** [¶](#dtdatasourcepoolmax-lifetime-ms){ .headerlink } +: Defines the maximum time in milliseconds for which connections should be kept in the pool for the default data source. Required when [`dt.datasource.pool.enabled`](#dtdatasourcepoolenabled) is `true`. + + + + + +
Typeinteger
Default${dt.database.pool.max.lifetime}
ENVDT_DATASOURCE_POOL_MAX_LIFETIME_MS
+ +**`dt.datasource.pool.max-size`** [¶](#dtdatasourcepoolmax-size){ .headerlink } +: Defines the maximum size of the connection pool for the default data source. Required when [`dt.datasource.pool.enabled`](#dtdatasourcepoolenabled) is `true`. + + + + + +
Typeinteger
Default${dt.database.pool.max.size}
ENVDT_DATASOURCE_POOL_MAX_SIZE
+ +**`dt.datasource.pool.min-idle`** [¶](#dtdatasourcepoolmin-idle){ .headerlink } +: Defines the minimum number of idle connections in the pool for the default data source. Required when [`dt.datasource.pool.enabled`](#dtdatasourcepoolenabled) is `true`. + + + + + +
Typeinteger
Default${dt.database.pool.min.idle}
ENVDT_DATASOURCE_POOL_MIN_IDLE
+ +**`dt.datasource.url`** * [¶](#dtdatasourceurl){ .headerlink } +: Defines the JDBC URL to use for the default data source. + + + + + + +
Typestring
Default${dt.database.url}
Examplejdbc:postgresql://localhost:5432/dtrack?reWriteBatchedInserts=true
ENVDT_DATASOURCE_URL
+ +**`dt.datasource.username`** [¶](#dtdatasourceusername){ .headerlink } +: Defines the username to use for the default data source. + + + + + +
Typestring
Default${dt.database.username}
ENVDT_DATASOURCE_USERNAME
+ +**`dt.dex-engine.datasource.name`** [¶](#dtdex-enginedatasourcename){ .headerlink } +: Defines the name of the data source to be used by the durable execution engine. For larger deployments, it is recommended to use a separate, non-default data source. + + + + + +
Typestring
Defaultdefault
ENVDT_DEX_ENGINE_DATASOURCE_NAME
+ +**`dt.dex-engine.migration.datasource.name`** [¶](#dtdex-enginemigrationdatasourcename){ .headerlink } +: Defines the name of the data source to use for executing database migrations of the durable execution engine. + + + + + +
Typestring
Defaultnull
ENVDT_DEX_ENGINE_MIGRATION_DATASOURCE_NAME
+ +**`dt.init.tasks.datasource.close-after-use`** * [¶](#dtinittasksdatasourceclose-after-use){ .headerlink } +: Defines whether the data source used by init tasks should be closed after all tasks completed. This is useful when a non-default data source was configured, that is not used anywhere else. + + + + + +
Typeboolean
Defaultfalse
ENVDT_INIT_TASKS_DATASOURCE_CLOSE_AFTER_USE
+ +**`dt.init.tasks.datasource.name`** * [¶](#dtinittasksdatasourcename){ .headerlink } +: Defines the name of the data source to be used by init tasks. + + + + + +
Typestring
Defaultdefault
ENVDT_INIT_TASKS_DATASOURCE_NAME
+ + + +## Development + +**`dt.dev.services.enabled`** [¶](#dtdevservicesenabled){ .headerlink } +: Whether dev services shall be enabled.

When enabled, Dependency-Track will automatically launch containers for:
  • Frontend
  • PostgreSQL
at startup, and configures itself to use them. They are disposed when Dependency-Track stops. The containers are exposed on randomized ports, which will be logged during startup.

Trying to enable dev services in a production build will prevent the application from starting.

Note that the containers launched by the API server can not currently be discovered and re-used by other Hyades services. This is a future enhancement tracked in . + + + + + +
Typeboolean
Defaultfalse
ENVDT_DEV_SERVICES_ENABLED
+ +**`dt.dev.services.image.frontend`** [¶](#dtdevservicesimagefrontend){ .headerlink } +: The image to use for the frontend dev services container. + + + + + +
Typestring
Defaultghcr.io/dependencytrack/hyades-frontend:snapshot
ENVDT_DEV_SERVICES_IMAGE_FRONTEND
+ +**`dt.dev.services.image.postgres`** [¶](#dtdevservicesimagepostgres){ .headerlink } +: The image to use for the PostgreSQL dev services container. + + + + + +
Typestring
Defaultpostgres:14-alpine
ENVDT_DEV_SERVICES_IMAGE_POSTGRES
+ +**`dt.dev.services.port.frontend`** [¶](#dtdevservicesportfrontend){ .headerlink } +: The port on which the frontend dev services container shall be exposed on the host. + + + + + +
Typeinteger
Default8081
ENVDT_DEV_SERVICES_PORT_FRONTEND
+ + + +## Durable Execution + +**`dt.dex-engine.activity-task-heartbeat-buffer.flush-interval-ms`** [¶](#dtdex-engineactivity-task-heartbeat-bufferflush-interval-ms){ .headerlink } +: Defines the time in milliseconds between flushes of the activity task heartbeat buffer. + + + + + +
Typeinteger
Default100
ENVDT_DEX_ENGINE_ACTIVITY_TASK_HEARTBEAT_BUFFER_FLUSH_INTERVAL_MS
+ +**`dt.dex-engine.activity-task-heartbeat-buffer.max-batch-size`** [¶](#dtdex-engineactivity-task-heartbeat-buffermax-batch-size){ .headerlink } +: Defines the maximum number of items of the activity task heartbeat buffer. + + + + + +
Typeinteger
Default100
ENVDT_DEX_ENGINE_ACTIVITY_TASK_HEARTBEAT_BUFFER_MAX_BATCH_SIZE
+ +**`dt.dex-engine.activity-task-scheduler.poll-interval-ms`** [¶](#dtdex-engineactivity-task-schedulerpoll-interval-ms){ .headerlink } +: Defines the interval in milliseconds in which the activity task scheduler polls for tasks to enqueue for execution. + + + + + +
Typeinteger
Default100
ENVDT_DEX_ENGINE_ACTIVITY_TASK_SCHEDULER_POLL_INTERVAL_MS
+ +**`dt.dex-engine.activity-worker.artifact-import.enabled`** [¶](#dtdex-engineactivity-workerartifact-importenabled){ .headerlink } +: Defines whether the artifact import activity worker should be enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_ARTIFACT_IMPORT_ENABLED
+ +**`dt.dex-engine.activity-worker.artifact-import.max-concurrency`** * [¶](#dtdex-engineactivity-workerartifact-importmax-concurrency){ .headerlink } +: Defines the maximum concurrency of the artifact import activity worker. + + + + + +
Typeinteger
Default5
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_ARTIFACT_IMPORT_MAX_CONCURRENCY
+ +**`dt.dex-engine.activity-worker.default.enabled`** [¶](#dtdex-engineactivity-workerdefaultenabled){ .headerlink } +: Defines whether the default activity worker should be enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_DEFAULT_ENABLED
+ +**`dt.dex-engine.activity-worker.default.max-concurrency`** * [¶](#dtdex-engineactivity-workerdefaultmax-concurrency){ .headerlink } +: Defines the maximum concurrency of the default activity worker. + + + + + +
Typeinteger
Default25
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_DEFAULT_MAX_CONCURRENCY
+ +**`dt.dex-engine.activity-worker.metrics-update.enabled`** [¶](#dtdex-engineactivity-workermetrics-updateenabled){ .headerlink } +: Defines whether the metrics update activity worker should be enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_METRICS_UPDATE_ENABLED
+ +**`dt.dex-engine.activity-worker.metrics-update.max-concurrency`** * [¶](#dtdex-engineactivity-workermetrics-updatemax-concurrency){ .headerlink } +: Defines the maximum concurrency of the metrics update activity worker. + + + + + +
Typeinteger
Default5
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_METRICS_UPDATE_MAX_CONCURRENCY
+ +**`dt.dex-engine.activity-worker.notification.enabled`** [¶](#dtdex-engineactivity-workernotificationenabled){ .headerlink } +: Defines whether the notification activity worker should be enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_NOTIFICATION_ENABLED
+ +**`dt.dex-engine.activity-worker.notification.max-concurrency`** * [¶](#dtdex-engineactivity-workernotificationmax-concurrency){ .headerlink } +: Defines the maximum concurrency of the notification activity worker. + + + + + +
Typeinteger
Default5
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_NOTIFICATION_MAX_CONCURRENCY
+ +**`dt.dex-engine.activity-worker.notification.poll-backoff.initial-delay-ms`** [¶](#dtdex-engineactivity-workernotificationpoll-backoffinitial-delay-ms){ .headerlink } +: Defines the initial poll backoff delay in milliseconds of the notification activity worker. + + + + + +
Typeinteger
Default200
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_NOTIFICATION_POLL_BACKOFF_INITIAL_DELAY_MS
+ +**`dt.dex-engine.activity-worker.notification.poll-backoff.max-delay-ms`** [¶](#dtdex-engineactivity-workernotificationpoll-backoffmax-delay-ms){ .headerlink } +: Defines the max poll backoff delay in milliseconds of the notification activity worker. + + + + + +
Typeinteger
Default10000
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_NOTIFICATION_POLL_BACKOFF_MAX_DELAY_MS
+ +**`dt.dex-engine.activity-worker.notification.poll-backoff.multiplier`** [¶](#dtdex-engineactivity-workernotificationpoll-backoffmultiplier){ .headerlink } +: Defines the poll backoff delay multiplier of the notification activity worker. + + + + + +
Typedouble
Default2.0
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_NOTIFICATION_POLL_BACKOFF_MULTIPLIER
+ +**`dt.dex-engine.activity-worker.notification.poll-backoff.randomization-factor`** [¶](#dtdex-engineactivity-workernotificationpoll-backoffrandomization-factor){ .headerlink } +: Defines the poll backoff randomization factor of the notification activity worker. + + + + + +
Typedouble
Default0.2
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_NOTIFICATION_POLL_BACKOFF_RANDOMIZATION_FACTOR
+ +**`dt.dex-engine.activity-worker.package-metadata-resolution.enabled`** [¶](#dtdex-engineactivity-workerpackage-metadata-resolutionenabled){ .headerlink } +: Defines whether the package metadata activity worker should be enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_PACKAGE_METADATA_RESOLUTION_ENABLED
+ +**`dt.dex-engine.activity-worker.package-metadata-resolution.max-concurrency`** * [¶](#dtdex-engineactivity-workerpackage-metadata-resolutionmax-concurrency){ .headerlink } +: Defines the maximum concurrency of the package metadata activity worker.

Note that a concurrency of N means that at most N PURLs batches will be resolved concurrently. Each batch performs HTTP requests against package registries. + + + + + +
Typeinteger
Default3
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_PACKAGE_METADATA_RESOLUTION_MAX_CONCURRENCY
+ +**`dt.dex-engine.activity-worker.policy-evaluation.enabled`** [¶](#dtdex-engineactivity-workerpolicy-evaluationenabled){ .headerlink } +: Defines whether the policy evaluation activity worker should be enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_POLICY_EVALUATION_ENABLED
+ +**`dt.dex-engine.activity-worker.policy-evaluation.max-concurrency`** * [¶](#dtdex-engineactivity-workerpolicy-evaluationmax-concurrency){ .headerlink } +: Defines the maximum concurrency of the policy evaluation activity worker. + + + + + +
Typeinteger
Default5
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_POLICY_EVALUATION_MAX_CONCURRENCY
+ +**`dt.dex-engine.activity-worker.vuln-analysis-reconciliation.enabled`** [¶](#dtdex-engineactivity-workervuln-analysis-reconciliationenabled){ .headerlink } +: Defines whether the vulnerability analysis reconciliation activity worker should be enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_VULN_ANALYSIS_RECONCILIATION_ENABLED
+ +**`dt.dex-engine.activity-worker.vuln-analysis-reconciliation.max-concurrency`** * [¶](#dtdex-engineactivity-workervuln-analysis-reconciliationmax-concurrency){ .headerlink } +: Defines the maximum concurrency of the vulnerability analysis reconciliation activity worker. + + + + + +
Typeinteger
Default5
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_VULN_ANALYSIS_RECONCILIATION_MAX_CONCURRENCY
+ +**`dt.dex-engine.activity-worker.vuln-analysis.enabled`** [¶](#dtdex-engineactivity-workervuln-analysisenabled){ .headerlink } +: Defines whether the notification activity worker should be enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_VULN_ANALYSIS_ENABLED
+ +**`dt.dex-engine.activity-worker.vuln-analysis.max-concurrency`** * [¶](#dtdex-engineactivity-workervuln-analysismax-concurrency){ .headerlink } +: Defines the maximum concurrency of the notification activity worker. + + + + + +
Typeinteger
Default10
ENVDT_DEX_ENGINE_ACTIVITY_WORKER_VULN_ANALYSIS_MAX_CONCURRENCY
+ +**`dt.dex-engine.external-event-buffer.flush-interval-ms`** [¶](#dtdex-engineexternal-event-bufferflush-interval-ms){ .headerlink } +: Defines the time in milliseconds between flushes of the external event buffer. + + + + + +
Typeinteger
Default100
ENVDT_DEX_ENGINE_EXTERNAL_EVENT_BUFFER_FLUSH_INTERVAL_MS
+ +**`dt.dex-engine.external-event-buffer.max-batch-size`** [¶](#dtdex-engineexternal-event-buffermax-batch-size){ .headerlink } +: Defines the maximum number of items of the external event buffer. + + + + + +
Typeinteger
Default100
ENVDT_DEX_ENGINE_EXTERNAL_EVENT_BUFFER_MAX_BATCH_SIZE
+ +**`dt.dex-engine.leader-election.enabled`** [¶](#dtdex-engineleader-electionenabled){ .headerlink } +: Whether leader election in the durable execution engine should be enabled.

Disabling leader election also disables the workflow task scheduler, activity task scheduler, and maintenance worker, as only the leader node is meant to handle those responsibilities. + + + + + +
Typeboolean
Defaulttrue
ENVDT_DEX_ENGINE_LEADER_ELECTION_ENABLED
+ +**`dt.dex-engine.leader-election.lease-check-interval-ms`** [¶](#dtdex-engineleader-electionlease-check-interval-ms){ .headerlink } +: Defines the interval in milliseconds in which leadership lease acquisition or extension is attempted.

Must be smaller than [`dt.dex-engine.leader-election.lease-duration-ms`](#dtdex-engineleader-electionlease-duration-ms) to avoid frequent leadership changes. + + + + + +
Typeinteger
Default15000
ENVDT_DEX_ENGINE_LEADER_ELECTION_LEASE_CHECK_INTERVAL_MS
+ +**`dt.dex-engine.leader-election.lease-duration-ms`** [¶](#dtdex-engineleader-electionlease-duration-ms){ .headerlink } +: Defines the duration in milliseconds for which leadership leases are acquired. + + + + + +
Typeinteger
Default30000
ENVDT_DEX_ENGINE_LEADER_ELECTION_LEASE_DURATION_MS
+ +**`dt.dex-engine.maintenance.run-deletion-batch-size`** [¶](#dtdex-enginemaintenancerun-deletion-batch-size){ .headerlink } +: Defines the maximum number of completed workflow runs to delete during a single execution of the maintenance worker. Deletion of large volumes of runs in one pass can lead to I/O spikes and increased table bloat.

If retention is not able to keep up with the volumes of runs, consider increasing the interval of the maintenance worker first. + + + + + +
Typeinteger
Default1000
ENVDT_DEX_ENGINE_MAINTENANCE_RUN_DELETION_BATCH_SIZE
+ +**`dt.dex-engine.maintenance.run-retention-duration`** [¶](#dtdex-enginemaintenancerun-retention-duration){ .headerlink } +: Defines the duration in ISO 8601 format after which completed workflow runs become eligible for deletion. + + + + + +
Typeduration
DefaultP1D
ENVDT_DEX_ENGINE_MAINTENANCE_RUN_RETENTION_DURATION
+ +**`dt.dex-engine.maintenance.worker.initial-delay-ms`** [¶](#dtdex-enginemaintenanceworkerinitial-delay-ms){ .headerlink } +: Defines the initial delay in milliseconds after which the maintenance worker will execute for the first time.

Note that only the leader node in the cluster will actually perform maintenance work. For nodes that are not leaders, maintenance is a no-op. + + + + + +
Typeinteger
Default60000
ENVDT_DEX_ENGINE_MAINTENANCE_WORKER_INITIAL_DELAY_MS
+ +**`dt.dex-engine.maintenance.worker.interval-ms`** [¶](#dtdex-enginemaintenanceworkerinterval-ms){ .headerlink } +: Defines the interval in milliseconds at which the maintenance worker will execute.

Note that only the leader node in the cluster will actually perform maintenance work. For nodes that are not leaders, maintenance is a no-op. + + + + + +
Typeinteger
Default1800000
ENVDT_DEX_ENGINE_MAINTENANCE_WORKER_INTERVAL_MS
+ +**`dt.dex-engine.metrics.collector.enabled`** [¶](#dtdex-enginemetricscollectorenabled){ .headerlink } +: Defines whether the metrics collector should be enabled.

The collector is responsible for collecting metrics from the database, such as the distribution of workflow run statuses, task queue capacities and depths, and more.

It is recommended to keep it enabled for monitoring purposes, but may be disabled in case it generates undesired load. + + + + + +
Typeboolean
Defaulttrue
ENVDT_DEX_ENGINE_METRICS_COLLECTOR_ENABLED
+ +**`dt.dex-engine.metrics.collector.initial-delay-ms`** [¶](#dtdex-enginemetricscollectorinitial-delay-ms){ .headerlink } +: Defines the initial delay in milliseconds after which the metrics collector will first run. + + + + + +
Typeinteger
Default15000
ENVDT_DEX_ENGINE_METRICS_COLLECTOR_INITIAL_DELAY_MS
+ +**`dt.dex-engine.metrics.collector.interval-ms`** [¶](#dtdex-enginemetricscollectorinterval-ms){ .headerlink } +: Defines the interval in milliseconds in which the metrics collector runs. + + + + + +
Typeinteger
Default30000
ENVDT_DEX_ENGINE_METRICS_COLLECTOR_INTERVAL_MS
+ +**`dt.dex-engine.run-history-cache.evict-after-access-ms`** [¶](#dtdex-enginerun-history-cacheevict-after-access-ms){ .headerlink } +: Defines the time in milliseconds for which workflow run event histories are cached.

Histories are only cached for non-terminal runs, to improve performance of replay. Cached histories are automatically evicted when the corresponding run terminates. + + + + + +
Typeinteger
Default300000
ENVDT_DEX_ENGINE_RUN_HISTORY_CACHE_EVICT_AFTER_ACCESS_MS
+ +**`dt.dex-engine.run-history-cache.max-size`** [¶](#dtdex-enginerun-history-cachemax-size){ .headerlink } +: Defines the maximum number of workflow runs for which histories may be cached. + + + + + +
Typeinteger
Default1000
ENVDT_DEX_ENGINE_RUN_HISTORY_CACHE_MAX_SIZE
+ +**`dt.dex-engine.task-event-buffer.flush-interval-ms`** [¶](#dtdex-enginetask-event-bufferflush-interval-ms){ .headerlink } +: Defines the time in milliseconds between flushes of the task event buffer.

Increasing this interval may yield better throughput while reducing the database load, but also increases end-to-end latency of workflow and activity executions. + + + + + +
Typeinteger
Default100
ENVDT_DEX_ENGINE_TASK_EVENT_BUFFER_FLUSH_INTERVAL_MS
+ +**`dt.dex-engine.task-event-buffer.max-batch-size`** [¶](#dtdex-enginetask-event-buffermax-batch-size){ .headerlink } +: Defines the maximum number of items that will be flushed at once.

Increasing this value may yield better throughput, at the expense of higher latency and potentially larger blast radius in case a task event causes failures during the flush.

Since flushes are atomic, a single event failing to be flushed impacts the entire batch. + + + + + +
Typeinteger
Default100
ENVDT_DEX_ENGINE_TASK_EVENT_BUFFER_MAX_BATCH_SIZE
+ +**`dt.dex-engine.workers.enabled`** [¶](#dtdex-engineworkersenabled){ .headerlink } +: Whether all durable execution task workers should be enabled.

Acts as a global kill switch that takes precedence over individual worker settings. + + + + + +
Typeboolean
Defaulttrue
ENVDT_DEX_ENGINE_WORKERS_ENABLED
+ +**`dt.dex-engine.workflow-task-scheduler.poll-interval-ms`** [¶](#dtdex-engineworkflow-task-schedulerpoll-interval-ms){ .headerlink } +: Defines the interval in milliseconds in which the workflow task scheduler polls for tasks to enqueue for execution. + + + + + +
Typeinteger
Default100
ENVDT_DEX_ENGINE_WORKFLOW_TASK_SCHEDULER_POLL_INTERVAL_MS
+ +**`dt.dex-engine.workflow-worker.default.enabled`** [¶](#dtdex-engineworkflow-workerdefaultenabled){ .headerlink } +: Defines whether the default workflow worker should be enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_DEX_ENGINE_WORKFLOW_WORKER_DEFAULT_ENABLED
+ +**`dt.dex-engine.workflow-worker.default.max-concurrency`** * [¶](#dtdex-engineworkflow-workerdefaultmax-concurrency){ .headerlink } +: Defines the maximum concurrency of the default workflow worker.

Note that workflow workers do not perform any I/O (although they may block while waiting for semaphores and buffer flushes), and are executed with virtual threads. This means that it's usually perfectly fine to have a high degree of concurrency, without risking excessive resource usage or I/O thrashing. + + + + + +
Typeinteger
Default100
ENVDT_DEX_ENGINE_WORKFLOW_WORKER_DEFAULT_MAX_CONCURRENCY
+ + + +## General + +**`dt.api.key.prefix`** [¶](#dtapikeyprefix){ .headerlink } +: Defines the prefix to be used for API keys. A maximum prefix length of 251 characters is supported. The prefix may also be left empty. + + + + + +
Typestring
Defaultodt_
ENVDT_API_KEY_PREFIX
+ +**`dt.auth.session-timeout-ms`** [¶](#dtauthsession-timeout-ms){ .headerlink } +: Defines the user session timeout in milliseconds. + + + + + +
Typeinteger
Default28800000
ENVDT_AUTH_SESSION_TIMEOUT_MS
+ +**`dt.bcrypt.rounds`** * [¶](#dtbcryptrounds){ .headerlink } +: Specifies the number of bcrypt rounds to use when hashing a user's password. The higher the number the more secure the password, at the expense of hardware resources and additional time to generate the hash. + + + + + +
Typeinteger
Default14
ENVDT_BCRYPT_ROUNDS
+ +**`dt.config.log.values`** [¶](#dtconfiglogvalues){ .headerlink } +: Defines whether config value lookups should be logged.

Logging happens at DEBUG level. To make the logs visible, you must configure `dt.logging.level."io.smallrye.config"=DEBUG`.

Note that this will not mask or omit any secrets. **Do not use in production environments!** + + + + + +
Typeboolean
Defaultfalse
ENVDT_CONFIG_LOG_VALUES
+ +**`dt.config.profile`** [¶](#dtconfigprofile){ .headerlink } +: Defines the configuration profile to apply.

For example, the `web` profile may be used to disable any background processing, effectively turning the node into a web-only instance. + + + + + +
Typestring
Defaultnull
ENVDT_CONFIG_PROFILE
+ +**`dt.data.directory`** * [¶](#dtdatadirectory){ .headerlink } +: Defines the path to the data directory. This directory will hold logs, keys, and any database or index files along with application-specific files or directories. + + + + + +
Typestring
Default${user.home}/.dependency-track
ENVDT_DATA_DIRECTORY
+ +**`dt.init.and.exit`** [¶](#dtinitandexit){ .headerlink } +: Whether to only execute initialization tasks and exit. + + + + + +
Typeboolean
Defaultfalse
ENVDT_INIT_AND_EXIT
+ +**`dt.init.task.database.migration.enabled`** [¶](#dtinittaskdatabasemigrationenabled){ .headerlink } +: Whether to enable the database migration init task. Has no effect unless [`dt.init.tasks.enabled`](#dtinittasksenabled) is `true`. + + + + + +
Typeboolean
Defaulttrue
ENVDT_INIT_TASK_DATABASE_MIGRATION_ENABLED
+ +**`dt.init.task.database.partition.maintenance.enabled`** [¶](#dtinittaskdatabasepartitionmaintenanceenabled){ .headerlink } +: Whether to enable the database partition maintenance init task. Has no effect unless [`dt.init.tasks.enabled`](#dtinittasksenabled) is `true`. + + + + + +
Typeboolean
Defaulttrue
ENVDT_INIT_TASK_DATABASE_PARTITION_MAINTENANCE_ENABLED
+ +**`dt.init.task.database.seeding.enabled`** [¶](#dtinittaskdatabaseseedingenabled){ .headerlink } +: Whether to enable the database seeding init task. Seeding involves populating the database with default objects, such as permissions, users, licenses, etc. Has no effect unless [`dt.init.tasks.enabled`](#dtinittasksenabled) is `true`. + + + + + +
Typeboolean
Defaulttrue
ENVDT_INIT_TASK_DATABASE_SEEDING_ENABLED
+ +**`dt.init.task.dex.engine.database.migration.enabled`** [¶](#dtinittaskdexenginedatabasemigrationenabled){ .headerlink } +: Whether to enable the durable execution engine database migration init task. Has no effect unless [`dt.init.tasks.enabled`](#dtinittasksenabled) is `true`. + + + + + +
Typeboolean
Defaulttrue
ENVDT_INIT_TASK_DEX_ENGINE_DATABASE_MIGRATION_ENABLED
+ +**`dt.init.task.key.generation.enabled`** [¶](#dtinittaskkeygenerationenabled){ .headerlink } +: Whether to enable the key generation init task. Has no effect unless [`dt.init.tasks.enabled`](#dtinittasksenabled) is `true`. + + + + + +
Typeboolean
Defaulttrue
ENVDT_INIT_TASK_KEY_GENERATION_ENABLED
+ +**`dt.init.tasks.enabled`** [¶](#dtinittasksenabled){ .headerlink } +: Whether to execute initialization tasks on startup. + + + + + +
Typeboolean
Defaulttrue
ENVDT_INIT_TASKS_ENABLED
+ +**`dt.telemetry.submission.enabled.default`** [¶](#dttelemetrysubmissionenableddefault){ .headerlink } +: Defines the default value for the telemetry submission enabled setting.

This is only used during initial database seeding. Once the setting exists in the database, it can be toggled via the REST API or the admin UI.

To opt out of telemetry before first startup, set this to `false`. + + + + + +
Typeboolean
Defaulttrue
ENVDT_TELEMETRY_SUBMISSION_ENABLED_DEFAULT
+ +**`dt.tmp.delay.bom.processed.notification`** [¶](#dttmpdelaybomprocessednotification){ .headerlink } +: Delays the BOM_PROCESSED notification until the vulnerability analysis associated with a given BOM upload is completed. The intention being that it is then "safe" to query the API for any identified vulnerabilities. This is specifically for cases where polling the /api/v1/bom/token/ endpoint is not feasible. THIS IS A TEMPORARY FUNCTIONALITY AND MAY BE REMOVED IN FUTURE RELEASES WITHOUT FURTHER NOTICE. + + + + + +
Typeboolean
Defaultfalse
ENVDT_TMP_DELAY_BOM_PROCESSED_NOTIFICATION
+ +**`dt.vulnerability.policy.bundle.auth.bearer.token`** [¶](#dtvulnerabilitypolicybundleauthbearertoken){ .headerlink } +: Defines the bearer token to be used for authentication against the service hosting the vulnerability policy bundle. + + + + + +
Typestring
Defaultnull
ENVDT_VULNERABILITY_POLICY_BUNDLE_AUTH_BEARER_TOKEN
+ +**`dt.vulnerability.policy.bundle.auth.password`** [¶](#dtvulnerabilitypolicybundleauthpassword){ .headerlink } +: Defines the password to be used for basic authentication against the service hosting the vulnerability policy bundle. + + + + + +
Typestring
Defaultnull
ENVDT_VULNERABILITY_POLICY_BUNDLE_AUTH_PASSWORD
+ +**`dt.vulnerability.policy.bundle.auth.username`** [¶](#dtvulnerabilitypolicybundleauthusername){ .headerlink } +: Defines the username to be used for basic authentication against the service hosting the vulnerability policy bundle. + + + + + +
Typestring
Defaultnull
ENVDT_VULNERABILITY_POLICY_BUNDLE_AUTH_USERNAME
+ +**`dt.vulnerability.policy.bundle.url`** [¶](#dtvulnerabilitypolicybundleurl){ .headerlink } +: Defines where to fetch the vulnerability policy bundle from. + + + + + + +
Typestring
Defaultnull
Examplehttps://example.com/bundles/bundle.zip
ENVDT_VULNERABILITY_POLICY_BUNDLE_URL
+ + + +## HTTP + +**`dt.http.proxy.address`** [¶](#dthttpproxyaddress){ .headerlink } +: HTTP proxy address. If set, then [`dt.http.proxy.port`](#dthttpproxyport) must be set too. + + + + + + +
Typestring
Defaultnull
Exampleproxy.example.com
ENVDT_HTTP_PROXY_ADDRESS
+ +**`dt.http.proxy.password`** [¶](#dthttpproxypassword){ .headerlink } +: + + + + + +
Typestring
Defaultnull
ENVDT_HTTP_PROXY_PASSWORD
+ +**`dt.http.proxy.password.file`** [¶](#dthttpproxypasswordfile){ .headerlink } +: Specifies the file to load the HTTP proxy password from. If set, takes precedence over [`dt.http.proxy.password`](#dthttpproxypassword). + + + + + + +
Typestring
Defaultnull
Example/var/run/secrets/http-proxy-password
ENVDT_HTTP_PROXY_PASSWORD_FILE
+ +**`dt.http.proxy.port`** [¶](#dthttpproxyport){ .headerlink } +: + + + + + + +
Typeinteger
Defaultnull
Example8888
ENVDT_HTTP_PROXY_PORT
+ +**`dt.http.proxy.username`** [¶](#dthttpproxyusername){ .headerlink } +: + + + + + +
Typestring
Defaultnull
ENVDT_HTTP_PROXY_USERNAME
+ +**`dt.http.timeout.connection`** [¶](#dthttptimeoutconnection){ .headerlink } +: Defines the connection timeout in seconds for outbound HTTP connections. + + + + + +
Typeinteger
Default30
ENVDT_HTTP_TIMEOUT_CONNECTION
+ +**`dt.http.timeout.pool`** [¶](#dthttptimeoutpool){ .headerlink } +: Defines the request timeout in seconds for outbound HTTP connections. + + + + + +
Typeinteger
Default60
ENVDT_HTTP_TIMEOUT_POOL
+ +**`dt.http.timeout.socket`** [¶](#dthttptimeoutsocket){ .headerlink } +: Defines the socket / read timeout in seconds for outbound HTTP connections. + + + + + +
Typeinteger
Default30
ENVDT_HTTP_TIMEOUT_SOCKET
+ +**`dt.no.proxy`** [¶](#dtnoproxy){ .headerlink } +: + + + + + + +
Typestring
Defaultnull
Examplelocalhost,127.0.0.1
ENVDT_NO_PROXY
+ + + +## LDAP + +**`dt.ldap.attribute.mail`** [¶](#dtldapattributemail){ .headerlink } +: Specifies the LDAP attribute used to store a users email address + + + + + +
Typestring
Defaultmail
ENVDT_LDAP_ATTRIBUTE_MAIL
+ +**`dt.ldap.attribute.name`** [¶](#dtldapattributename){ .headerlink } +: Specifies the Attribute that identifies a users ID.

Example (Microsoft Active Directory):
  • userPrincipalName
Example (ApacheDS, Fedora 389 Directory, NetIQ/Novell eDirectory, etc):
  • uid
+ + + + + +
Typestring
DefaultuserPrincipalName
ENVDT_LDAP_ATTRIBUTE_NAME
+ +**`dt.ldap.auth.username.format`** [¶](#dtldapauthusernameformat){ .headerlink } +: Specifies if the username entered during login needs to be formatted prior to asserting credentials against the directory. For Active Directory, the userPrincipal attribute typically ends with the domain, whereas the samAccountName attribute and other directory server implementations do not. The %s variable will be substituted with the username asserted during login.

Example (Microsoft Active Directory):
  • %s@example.com
Example (ApacheDS, Fedora 389 Directory, NetIQ/Novell eDirectory, etc):
  • %s
+ + + + + + +
Typestring
Defaultnull
Example%s@example.com
ENVDT_LDAP_AUTH_USERNAME_FORMAT
+ +**`dt.ldap.basedn`** [¶](#dtldapbasedn){ .headerlink } +: Specifies the base DN that all queries should search from + + + + + + +
Typestring
Defaultnull
Exampledc=example,dc=com
ENVDT_LDAP_BASEDN
+ +**`dt.ldap.bind.password`** [¶](#dtldapbindpassword){ .headerlink } +: If anonymous access is not permitted, specify a password for the username used to bind. + + + + + +
Typestring
Defaultnull
ENVDT_LDAP_BIND_PASSWORD
+ +**`dt.ldap.bind.username`** [¶](#dtldapbindusername){ .headerlink } +: If anonymous access is not permitted, specify a username with limited access to the directory, just enough to perform searches. This should be the fully qualified DN of the user. + + + + + +
Typestring
Defaultnull
ENVDT_LDAP_BIND_USERNAME
+ +**`dt.ldap.enabled`** [¶](#dtldapenabled){ .headerlink } +: Defines if LDAP will be used for user authentication. If enabled, `dt.ldap.*` properties should be set accordingly. + + + + + +
Typeboolean
Defaultfalse
ENVDT_LDAP_ENABLED
+ +**`dt.ldap.groups.filter`** [¶](#dtldapgroupsfilter){ .headerlink } +: Specifies the LDAP search filter used to retrieve all groups from the directory.

Example (Microsoft Active Directory):
  • (&(objectClass=group)(objectCategory=Group))
Example (ApacheDS, Fedora 389 Directory, NetIQ/Novell eDirectory, etc):
  • (&(objectClass=groupOfUniqueNames))
+ + + + + +
Typestring
Default(&(objectClass=group)(objectCategory=Group))
ENVDT_LDAP_GROUPS_FILTER
+ +**`dt.ldap.groups.search.filter`** [¶](#dtldapgroupssearchfilter){ .headerlink } +: Specifies the LDAP search filter used to search for groups by their name. The `{SEARCH_TERM}` variable will be substituted at runtime.

Example (Microsoft Active Directory):
  • (&(objectClass=group)(objectCategory=Group)(cn=*{SEARCH_TERM}*))
Example (ApacheDS, Fedora 389 Directory, NetIQ/Novell eDirectory, etc):
  • (&(objectClass=groupOfUniqueNames)(cn=*{SEARCH_TERM}*))
+ + + + + +
Typestring
Default(&(objectClass=group)(objectCategory=Group)(cn=*{SEARCH_TERM}*))
ENVDT_LDAP_GROUPS_SEARCH_FILTER
+ +**`dt.ldap.security.auth`** [¶](#dtldapsecurityauth){ .headerlink } +: Specifies the LDAP security authentication level to use. Its value is one of the following strings: "none", "simple", "strong". If this property is empty or unspecified, the behaviour is determined by the service provider. + + + + + + +
Typeenum
Defaultsimple
Valid Values[none, simple, strong]
ENVDT_LDAP_SECURITY_AUTH
+ +**`dt.ldap.server.url`** [¶](#dtldapserverurl){ .headerlink } +: Specifies the LDAP server URL.

Examples (Microsoft Active Directory):
  • ldap://ldap.example.com:3268
  • ldaps://ldap.example.com:3269
Examples (ApacheDS, Fedora 389 Directory, NetIQ/Novell eDirectory, etc):
  • ldap://ldap.example.com:389
  • ldaps://ldap.example.com:636
+ + + + + +
Typestring
Defaultnull
ENVDT_LDAP_SERVER_URL
+ +**`dt.ldap.team.synchronization`** [¶](#dtldapteamsynchronization){ .headerlink } +: This option will ensure that team memberships for LDAP users are dynamic and synchronized with membership of LDAP groups. When a team is mapped to an LDAP group, all local LDAP users will automatically be assigned to the team if they are a member of the group the team is mapped to. If the user is later removed from the LDAP group, they will also be removed from the team. This option provides the ability to dynamically control user permissions via an external directory. + + + + + +
Typeboolean
Defaultfalse
ENVDT_LDAP_TEAM_SYNCHRONIZATION
+ +**`dt.ldap.user.groups.filter`** [¶](#dtldapusergroupsfilter){ .headerlink } +: Specifies the LDAP search filter to use to query a user and retrieve a list of groups the user is a member of. The `{USER_DN}` variable will be substituted with the actual value of the users DN at runtime.

Example (Microsoft Active Directory):
  • (&(objectClass=group)(objectCategory=Group)(member={USER_DN}))
Example (Microsoft Active Directory - with nested group support):
  • (member:1.2.840.113556.1.4.1941:={USER_DN})
Example (ApacheDS, Fedora 389 Directory, NetIQ/Novell eDirectory, etc):
  • (&(objectClass=groupOfUniqueNames)(uniqueMember={USER_DN}))
+ + + + + +
Typestring
Default(member:1.2.840.113556.1.4.1941:={USER_DN})
ENVDT_LDAP_USER_GROUPS_FILTER
+ +**`dt.ldap.user.provisioning`** [¶](#dtldapuserprovisioning){ .headerlink } +: Specifies if mapped LDAP accounts are automatically created upon successful authentication. When a user logs in with valid credentials but an account has not been previously provisioned, an authentication failure will be returned. This allows admins to control specifically which ldap users can access the system and which users cannot. When this value is set to true, a local ldap user will be created and mapped to the ldap account automatically. This automatic provisioning only affects authentication, not authorization. + + + + + +
Typeboolean
Defaultfalse
ENVDT_LDAP_USER_PROVISIONING
+ +**`dt.ldap.users.search.filter`** [¶](#dtldapuserssearchfilter){ .headerlink } +: Specifies the LDAP search filter used to search for users by their name. The {SEARCH_TERM} variable will be substituted at runtime.

Example (Microsoft Active Directory):
  • (&(objectClass=group)(objectCategory=Group)(cn=*{SEARCH_TERM}*))
Example (ApacheDS, Fedora 389 Directory, NetIQ/Novell eDirectory, etc):
  • (&(objectClass=inetOrgPerson)(cn=*{SEARCH_TERM}*))
+ + + + + +
Typestring
Default(&(objectClass=user)(objectCategory=Person)(cn=*{SEARCH_TERM}*))
ENVDT_LDAP_USERS_SEARCH_FILTER
+ + + +## Notification + +**`dt.notification-publisher.console.enabled`** [¶](#dtnotification-publisherconsoleenabled){ .headerlink } +: Defines whether the console notification publisher is enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_NOTIFICATION_PUBLISHER_CONSOLE_ENABLED
+ +**`dt.notification-publisher.email.allow-local-connections`** [¶](#dtnotification-publisheremailallow-local-connections){ .headerlink } +: Defines whether the email notification publisher is allowed to connect to local hosts. + + + + + +
Typeboolean
Defaultfalse
ENVDT_NOTIFICATION_PUBLISHER_EMAIL_ALLOW_LOCAL_CONNECTIONS
+ +**`dt.notification-publisher.email.enabled`** [¶](#dtnotification-publisheremailenabled){ .headerlink } +: Defines whether the email notification publisher is enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_NOTIFICATION_PUBLISHER_EMAIL_ENABLED
+ +**`dt.notification-publisher.jira.enabled`** [¶](#dtnotification-publisherjiraenabled){ .headerlink } +: Defines whether the Jira notification publisher is enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_NOTIFICATION_PUBLISHER_JIRA_ENABLED
+ +**`dt.notification-publisher.kafka.allow-local-connections`** [¶](#dtnotification-publisherkafkaallow-local-connections){ .headerlink } +: Defines whether the Kafka notification publisher is allowed to connect to local hosts. + + + + + +
Typeboolean
Defaultfalse
ENVDT_NOTIFICATION_PUBLISHER_KAFKA_ALLOW_LOCAL_CONNECTIONS
+ +**`dt.notification-publisher.kafka.enabled`** [¶](#dtnotification-publisherkafkaenabled){ .headerlink } +: Defines whether the Kafka notification publisher is enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_NOTIFICATION_PUBLISHER_KAFKA_ENABLED
+ +**`dt.notification-publisher.mattermost.enabled`** [¶](#dtnotification-publishermattermostenabled){ .headerlink } +: Defines whether the Mattermost notification publisher is enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_NOTIFICATION_PUBLISHER_MATTERMOST_ENABLED
+ +**`dt.notification-publisher.msteams.enabled`** [¶](#dtnotification-publishermsteamsenabled){ .headerlink } +: Defines whether the Microsoft Teams notification publisher is enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_NOTIFICATION_PUBLISHER_MSTEAMS_ENABLED
+ +**`dt.notification-publisher.slack.enabled`** [¶](#dtnotification-publisherslackenabled){ .headerlink } +: Defines whether the Slack notification publisher is enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_NOTIFICATION_PUBLISHER_SLACK_ENABLED
+ +**`dt.notification-publisher.webex.enabled`** [¶](#dtnotification-publisherwebexenabled){ .headerlink } +: Defines whether the WebEx notification publisher is enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_NOTIFICATION_PUBLISHER_WEBEX_ENABLED
+ +**`dt.notification-publisher.webhook.enabled`** [¶](#dtnotification-publisherwebhookenabled){ .headerlink } +: Defines whether the Webhook notification publisher is enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_NOTIFICATION_PUBLISHER_WEBHOOK_ENABLED
+ +**`dt.notification.outbox-relay.batch-size`** * [¶](#dtnotificationoutbox-relaybatch-size){ .headerlink } +: Defines the number of notifications that the outbox relay will process in a batch. + + + + + +
Typeinteger
Default100
ENVDT_NOTIFICATION_OUTBOX_RELAY_BATCH_SIZE
+ +**`dt.notification.outbox-relay.enabled`** * [¶](#dtnotificationoutbox-relayenabled){ .headerlink } +: Defines whether the notification outbox relay should be enabled. When disabled, notifications will still be emitted to the outbox table, but not be delivered. Should generally stay enabled, unless:
  • The relay has a critical issue that impacts the rest of the system
  • You run a multi-node cluster and want more granular control over which nodes run the relay
+ + + + + +
Typeboolean
Defaulttrue
ENVDT_NOTIFICATION_OUTBOX_RELAY_ENABLED
+ +**`dt.notification.outbox-relay.large-notification-threshold-bytes`** * [¶](#dtnotificationoutbox-relaylarge-notification-threshold-bytes){ .headerlink } +: Defines the size in bytes at which notifications are considered "large".

Large notifications will be offloaded to file storage before being sent to the dex engine for publishing. + + + + + +
Typeinteger
Default65536
ENVDT_NOTIFICATION_OUTBOX_RELAY_LARGE_NOTIFICATION_THRESHOLD_BYTES
+ +**`dt.notification.outbox-relay.poll-interval-ms`** * [¶](#dtnotificationoutbox-relaypoll-interval-ms){ .headerlink } +: Defines the interval in milliseconds in which the notification outbox relay will poll for records in the notification outbox table. Increasing this value will cause higher notification latencies, but incurs a lesser load on the database. + + + + + +
Typeinteger
Default1000
ENVDT_NOTIFICATION_OUTBOX_RELAY_POLL_INTERVAL_MS
+ + + +## Observability + +**`dt.management.host`** [¶](#dtmanagementhost){ .headerlink } +: Defines the host for the management server, which exposes health and metrics endpoints independently of the main server. + + + + + +
Typestring
Default0.0.0.0
ENVDT_MANAGEMENT_HOST
+ +**`dt.management.port`** [¶](#dtmanagementport){ .headerlink } +: Defines the port for the management server, which exposes health and metrics endpoints independently of the main server. + + + + + +
Typeinteger
Default9000
ENVDT_MANAGEMENT_PORT
+ +**`dt.metrics.auth.password`** [¶](#dtmetricsauthpassword){ .headerlink } +: Defines the password required to access metrics. Has no effect when [`dt.metrics.auth.username`](#dtmetricsauthusername) is not set. + + + + + +
Typestring
Defaultnull
ENVDT_METRICS_AUTH_PASSWORD
+ +**`dt.metrics.auth.username`** [¶](#dtmetricsauthusername){ .headerlink } +: Defines the username required to access metrics. Has no effect when [`dt.metrics.auth.password`](#dtmetricsauthpassword) is not set. + + + + + +
Typestring
Defaultnull
ENVDT_METRICS_AUTH_USERNAME
+ +**`dt.metrics.enabled`** [¶](#dtmetricsenabled){ .headerlink } +: Defines whether Prometheus metrics will be exposed. If enabled, metrics will be available via the /metrics endpoint of the management server. + + + + + +
Typeboolean
Defaultfalse
ENVDT_METRICS_ENABLED
+ + + +## OpenID Connect + +**`dt.oidc.client.id`** [¶](#dtoidcclientid){ .headerlink } +: Defines the client ID to be used for OpenID Connect. The client ID should be the same as the one configured for the frontend, and will only be used to validate ID tokens. + + + + + +
Typestring
Defaultnull
ENVDT_OIDC_CLIENT_ID
+ +**`dt.oidc.enabled`** [¶](#dtoidcenabled){ .headerlink } +: Defines if OpenID Connect will be used for user authentication. If enabled, `dt.oidc.*` properties should be set accordingly. + + + + + +
Typeboolean
Defaultfalse
ENVDT_OIDC_ENABLED
+ +**`dt.oidc.issuer`** [¶](#dtoidcissuer){ .headerlink } +: Defines the issuer URL to be used for OpenID Connect. This issuer MUST support provider configuration via the `/.well-known/openid-configuration` endpoint. See also:
  • https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata
  • https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig
+ + + + + +
Typestring
Defaultnull
ENVDT_OIDC_ISSUER
+ +**`dt.oidc.team.synchronization`** [¶](#dtoidcteamsynchronization){ .headerlink } +: This option will ensure that team memberships for OpenID Connect users are dynamic and synchronized with membership of OpenID Connect groups or assigned roles. When a team is mapped to an OpenID Connect group, all local OpenID Connect users will automatically be assigned to the team if they are a member of the group the team is mapped to. If the user is later removed from the OpenID Connect group, they will also be removed from the team. This option provides the ability to dynamically control user permissions via the identity provider. Note that team synchronization is only performed during user provisioning and after successful authentication. + + + + + +
Typeboolean
Defaultfalse
ENVDT_OIDC_TEAM_SYNCHRONIZATION
+ +**`dt.oidc.teams.claim`** [¶](#dtoidcteamsclaim){ .headerlink } +: Defines the name of the claim that contains group memberships or role assignments in the provider's userinfo endpoint. The claim must be an array of strings, or a comma-delimited string. Most public identity providers do not support group or role management. When using a customizable / on-demand hosted identity provider, name, content, and inclusion in the userinfo endpoint will most likely need to be configured. + + + + + +
Typestring
Defaultgroups
ENVDT_OIDC_TEAMS_CLAIM
+ +**`dt.oidc.user.provisioning`** [¶](#dtoidcuserprovisioning){ .headerlink } +: Specifies if mapped OpenID Connect accounts are automatically created upon successful authentication. When a user logs in with a valid access token but an account has not been previously provisioned, an authentication failure will be returned. This allows admins to control specifically which OpenID Connect users can access the system and which users cannot. When this value is set to true, a local OpenID Connect user will be created and mapped to the OpenID Connect account automatically. This automatic provisioning only affects authentication, not authorization. + + + + + +
Typeboolean
Defaultfalse
ENVDT_OIDC_USER_PROVISIONING
+ +**`dt.oidc.username.claim`** [¶](#dtoidcusernameclaim){ .headerlink } +: Defines the name of the claim that contains the username in the provider's userinfo endpoint. Common claims are `name`, `username`, `preferred_username` or `nickname`. See also:
  • https://openid.net/specs/openid-connect-core-1_0.html#UserInfoResponse
+ + + + + +
Typestring
Defaultname
ENVDT_OIDC_USERNAME_CLAIM
+ + + +## Secrets + +**`dt.secret-management.cache.enabled`** * [¶](#dtsecret-managementcacheenabled){ .headerlink } +: Defines whether secret caching should be enabled. + + + + + +
Typeboolean
Defaultfalse
ENVDT_SECRET_MANAGEMENT_CACHE_ENABLED
+ +**`dt.secret-management.cache.expire-after-write-ms`** [¶](#dtsecret-managementcacheexpire-after-write-ms){ .headerlink } +: Defines the duration in milliseconds for which secrets should be cached. + + + + + +
Typeinteger
Default60000
ENVDT_SECRET_MANAGEMENT_CACHE_EXPIRE_AFTER_WRITE_MS
+ +**`dt.secret-management.cache.max-size`** [¶](#dtsecret-managementcachemax-size){ .headerlink } +: Defines the maximum number of secrets to keep in the cache. + + + + + +
Typeinteger
Default100
ENVDT_SECRET_MANAGEMENT_CACHE_MAX_SIZE
+ +**`dt.secret-management.database.datasource.name`** [¶](#dtsecret-managementdatabasedatasourcename){ .headerlink } +: Defines the name of the data source to be used by the database secret manager.

Required when [`dt.secret-management.provider`](#dtsecret-managementprovider) is `database`. + + + + + +
Typestring
Defaultdefault
ENVDT_SECRET_MANAGEMENT_DATABASE_DATASOURCE_NAME
+ +**`dt.secret-management.database.kek`** [¶](#dtsecret-managementdatabasekek){ .headerlink } +: Defines a base64-encoded AES-256 key (32 bytes) to use as the key encryption key (KEK) for the database secret manager.

A secure key may be generated using OpenSSL like this: `openssl rand -base64 32`

When set, takes precedence over [`dt.secret-management.database.kek`](#dtsecret-managementdatabasekek)-keyset.path. Unlike the keyset file approach, this option does not support KEK rotation.

Must be the same for all nodes in the cluster. When different keys are detected, the application will fail to start. + + + + + +
Typestring
Defaultnull
ENVDT_SECRET_MANAGEMENT_DATABASE_KEK
+ +**`dt.secret-management.database.kek-keyset.create-if-missing`** [¶](#dtsecret-managementdatabasekek-keysetcreate-if-missing){ .headerlink } +: Defines whether a key encryption keyset should be created if it doesn't already exist. + + + + + +
Typeboolean
Defaulttrue
ENVDT_SECRET_MANAGEMENT_DATABASE_KEK_KEYSET_CREATE_IF_MISSING
+ +**`dt.secret-management.database.kek-keyset.path`** [¶](#dtsecret-managementdatabasekek-keysetpath){ .headerlink } +: Defines the path to the key encryption keyset to use for the database secret manager.

Must point to the same file for all nodes in the cluster, e.g. using a shared volume or mounted k8s secret. When different keysets are detected, the application will fail to start. + + + + + +
Typestring
Default${dt.data.directory}/keys/secret-management-kek.json
ENVDT_SECRET_MANAGEMENT_DATABASE_KEK_KEYSET_PATH
+ +**`dt.secret-management.provider`** * [¶](#dtsecret-managementprovider){ .headerlink } +: Defines the secret management type to use. + + + + + + +
Typeenum
Defaultdatabase
Valid Values[database, env]
ENVDT_SECRET_MANAGEMENT_PROVIDER
+ + + +## Storage + +**`dt.file-storage.local.compression.level`** [¶](#dtfile-storagelocalcompressionlevel){ .headerlink } +: Defines the zstd compression level to use for local file storage. + + + + + + +
Typeinteger
Default5
Valid Values[-7..22]
ENVDT_FILE_STORAGE_LOCAL_COMPRESSION_LEVEL
+ +**`dt.file-storage.local.directory`** [¶](#dtfile-storagelocaldirectory){ .headerlink } +: Defines the local directory where files shall be stored. + + + + + +
Typestring
Default${dt.data.directory}/storage
ENVDT_FILE_STORAGE_LOCAL_DIRECTORY
+ +**`dt.file-storage.provider`** [¶](#dtfile-storageprovider){ .headerlink } +: Defines the file storage provider to use. + + + + + + +
Typeenum
Defaultlocal
Valid Values[local, memory, s3]
ENVDT_FILE_STORAGE_PROVIDER
+ +**`dt.file-storage.s3.access.key`** [¶](#dtfile-storages3accesskey){ .headerlink } +: Defines the S3 access key / username. + + + + + +
Typestring
Defaultnull
ENVDT_FILE_STORAGE_S3_ACCESS_KEY
+ +**`dt.file-storage.s3.bucket`** [¶](#dtfile-storages3bucket){ .headerlink } +: Defines the name of the S3 bucket. The existence of the bucket will be verified during startup. + + + + + +
Typestring
Defaultnull
ENVDT_FILE_STORAGE_S3_BUCKET
+ +**`dt.file-storage.s3.compression.level`** [¶](#dtfile-storages3compressionlevel){ .headerlink } +: Defines the zstd compression level to use for S3 file storage. + + + + + + +
Typeinteger
Default5
Valid Values[-7..22]
ENVDT_FILE_STORAGE_S3_COMPRESSION_LEVEL
+ +**`dt.file-storage.s3.connect-timeout-ms`** [¶](#dtfile-storages3connect-timeout-ms){ .headerlink } +: Defines the HTTP connect timeout for S3 requests in milliseconds. + + + + + +
Typeinteger
Defaultnull
ENVDT_FILE_STORAGE_S3_CONNECT_TIMEOUT_MS
+ +**`dt.file-storage.s3.endpoint`** [¶](#dtfile-storages3endpoint){ .headerlink } +: Defines the S3 endpoint URL. + + + + + +
Typestring
Defaultnull
ENVDT_FILE_STORAGE_S3_ENDPOINT
+ +**`dt.file-storage.s3.read-timeout-ms`** [¶](#dtfile-storages3read-timeout-ms){ .headerlink } +: Defines the HTTP read timeout for S3 requests in milliseconds. + + + + + +
Typeinteger
Defaultnull
ENVDT_FILE_STORAGE_S3_READ_TIMEOUT_MS
+ +**`dt.file-storage.s3.region`** [¶](#dtfile-storages3region){ .headerlink } +: Defines the region of the S3 bucket. + + + + + +
Typestring
Defaultnull
ENVDT_FILE_STORAGE_S3_REGION
+ +**`dt.file-storage.s3.secret.key`** [¶](#dtfile-storages3secretkey){ .headerlink } +: Defines the S3 secret key / password. + + + + + +
Typestring
Defaultnull
ENVDT_FILE_STORAGE_S3_SECRET_KEY
+ +**`dt.file-storage.s3.write-timeout-ms`** [¶](#dtfile-storages3write-timeout-ms){ .headerlink } +: Defines the HTTP write timeout for S3 requests in milliseconds. + + + + + +
Typeinteger
Defaultnull
ENVDT_FILE_STORAGE_S3_WRITE_TIMEOUT_MS
+ + + +## Task Execution + +**`dt.worker.thread.multiplier`** * [¶](#dtworkerthreadmultiplier){ .headerlink } +: Defines a multiplier that is used to calculate the number of threads used by the event subsystem. This property is only used when [`dt.worker.threads`](#dtworkerthreads) is set to 0. A machine with 4 cores and a multiplier of 4, will use (at most) 16 worker threads. + + + + + +
Typeinteger
Default4
ENVDT_WORKER_THREAD_MULTIPLIER
+ +**`dt.worker.threads`** * [¶](#dtworkerthreads){ .headerlink } +: Defines the number of worker threads that the event subsystem will consume. Events occur asynchronously and are processed by the Event subsystem. This value should be large enough to handle most production situations without introducing much delay, yet small enough not to pose additional load on an already resource-constrained server. A value of 0 will instruct Alpine to allocate 1 thread per CPU core. This can further be tweaked using the [`dt.worker.thread.multiplier`](#dtworkerthreadmultiplier) property. + + + + + +
Typeinteger
Default0
ENVDT_WORKER_THREADS
+ + + +## Task Scheduling + +**`dt.task-scheduler.enabled`** [¶](#dttask-schedulerenabled){ .headerlink } +: Defines whether the task scheduler should be enabled.

May be disabled on specific nodes in the cluster to limit the amount of background processing they're doing. Can help with dedicating nodes to only serve web traffic. + + + + + +
Typeboolean
Defaulttrue
ENVDT_TASK_SCHEDULER_ENABLED
+ +**`dt.task.csaf.document.import.cron`** * [¶](#dttaskcsafdocumentimportcron){ .headerlink } +: Cron expression of the CSAF mirroring task. + + + + + +
Typecron
Default0 5 * * *
ENVDT_TASK_CSAF_DOCUMENT_IMPORT_CRON
+ +**`dt.task.defect.dojo.upload.cron`** * [¶](#dttaskdefectdojouploadcron){ .headerlink } +: Cron expression of the DefectDojo upload task. + + + + + +
Typecron
Default0 2 * * *
ENVDT_TASK_DEFECT_DOJO_UPLOAD_CRON
+ +**`dt.task.epss.mirror.cron`** * [¶](#dttaskepssmirrorcron){ .headerlink } +: Cron expression of the EPSS mirroring task. + + + + + +
Typecron
Default0 1 * * *
ENVDT_TASK_EPSS_MIRROR_CRON
+ +**`dt.task.epss.mirror.lock.max.duration`** * [¶](#dttaskepssmirrorlockmaxduration){ .headerlink } +: Maximum duration in ISO 8601 format for which the EPSS mirror task will hold a lock.

The duration should be long enough to cover the task's execution duration. + + + + + +
Typeduration
DefaultPT15M
ENVDT_TASK_EPSS_MIRROR_LOCK_MAX_DURATION
+ +**`dt.task.epss.mirror.lock.min.duration`** * [¶](#dttaskepssmirrorlockminduration){ .headerlink } +: Minimum duration in ISO 8601 format for which the EPSS mirror task will hold a lock.

The duration should be long enough to cover eventual clock skew across API server instances. + + + + + +
Typeduration
DefaultPT1M
ENVDT_TASK_EPSS_MIRROR_LOCK_MIN_DURATION
+ +**`dt.task.expired-session-cleanup.cron`** * [¶](#dttaskexpired-session-cleanupcron){ .headerlink } +: Cron expression of the expired session cleanup task. + + + + + +
Typecron
Default0 * * * *
ENVDT_TASK_EXPIRED_SESSION_CLEANUP_CRON
+ +**`dt.task.fortify.ssc.upload.cron`** * [¶](#dttaskfortifysscuploadcron){ .headerlink } +: Cron expression of the Fortify SSC upload task. + + + + + +
Typecron
Default0 2 * * *
ENVDT_TASK_FORTIFY_SSC_UPLOAD_CRON
+ +**`dt.task.git.hub.advisory.mirror.cron`** * [¶](#dttaskgithubadvisorymirrorcron){ .headerlink } +: Cron expression of the vulnerability GitHub Advisories mirroring task. + + + + + +
Typecron
Default0 2 * * *
ENVDT_TASK_GIT_HUB_ADVISORY_MIRROR_CRON
+ +**`dt.task.internal.component.identification.cron`** * [¶](#dttaskinternalcomponentidentificationcron){ .headerlink } +: Cron expression of the internal component identification task. + + + + + +
Typecron
Default25 */6 * * *
ENVDT_TASK_INTERNAL_COMPONENT_IDENTIFICATION_CRON
+ +**`dt.task.internal.component.identification.lock.max.duration`** * [¶](#dttaskinternalcomponentidentificationlockmaxduration){ .headerlink } +: Maximum duration in ISO 8601 format for which the internal component identification task will hold a lock.

The duration should be long enough to cover the task's execution duration. + + + + + +
Typeduration
DefaultPT15M
ENVDT_TASK_INTERNAL_COMPONENT_IDENTIFICATION_LOCK_MAX_DURATION
+ +**`dt.task.internal.component.identification.lock.min.duration`** * [¶](#dttaskinternalcomponentidentificationlockminduration){ .headerlink } +: Minimum duration in ISO 8601 format for which the internal component identification task will hold a lock.

The duration should be long enough to cover eventual clock skew across API server instances. + + + + + +
Typeduration
DefaultPT90S
ENVDT_TASK_INTERNAL_COMPONENT_IDENTIFICATION_LOCK_MIN_DURATION
+ +**`dt.task.kenna.security.upload.cron`** * [¶](#dttaskkennasecurityuploadcron){ .headerlink } +: Cron expression of the Kenna Security upload task. + + + + + +
Typecron
Default0 2 * * *
ENVDT_TASK_KENNA_SECURITY_UPLOAD_CRON
+ +**`dt.task.ldap.sync.cron`** * [¶](#dttaskldapsynccron){ .headerlink } +: Cron expression of the LDAP synchronization task. + + + + + +
Typecron
Default0 */6 * * *
ENVDT_TASK_LDAP_SYNC_CRON
+ +**`dt.task.ldap.sync.lock.max.duration`** * [¶](#dttaskldapsynclockmaxduration){ .headerlink } +: Maximum duration in ISO 8601 format for which the LDAP synchronization task will hold a lock.

The duration should be long enough to cover the task's execution duration. + + + + + +
Typeduration
DefaultPT15M
ENVDT_TASK_LDAP_SYNC_LOCK_MAX_DURATION
+ +**`dt.task.ldap.sync.lock.min.duration`** * [¶](#dttaskldapsynclockminduration){ .headerlink } +: Minimum duration in ISO 8601 format for which the LDAP synchronization task will hold a lock.

The duration should be long enough to cover eventual clock skew across API server instances. + + + + + +
Typeduration
DefaultPT90S
ENVDT_TASK_LDAP_SYNC_LOCK_MIN_DURATION
+ +**`dt.task.metrics.maintenance.cron`** * [¶](#dttaskmetricsmaintenancecron){ .headerlink } +: Cron expression of the metrics maintenance task.

The task creates new partitions for the day for the following tables And deletes records older than the configured metrics retention duration from the following tables:
  • DEPENDENCYMETRICS
  • PROJECTMETRICS
+ + + + + +
Typecron
Default1 * * * *
ENVDT_TASK_METRICS_MAINTENANCE_CRON
+ +**`dt.task.metrics.maintenance.lock.max.duration`** * [¶](#dttaskmetricsmaintenancelockmaxduration){ .headerlink } +: Maximum duration in ISO 8601 format for which the metrics maintenance task will hold a lock.

The duration should be long enough to cover the task's execution duration. + + + + + +
Typeduration
DefaultPT15M
ENVDT_TASK_METRICS_MAINTENANCE_LOCK_MAX_DURATION
+ +**`dt.task.metrics.maintenance.lock.min.duration`** * [¶](#dttaskmetricsmaintenancelockminduration){ .headerlink } +: Minimum duration in ISO 8601 format for which the metrics maintenance task will hold a lock.

The duration should be long enough to cover eventual clock skew across API server instances. + + + + + +
Typeduration
DefaultPT1M
ENVDT_TASK_METRICS_MAINTENANCE_LOCK_MIN_DURATION
+ +**`dt.task.nist.mirror.cron`** * [¶](#dttasknistmirrorcron){ .headerlink } +: Cron expression of the NIST / NVD mirroring task. + + + + + +
Typecron
Default0 4 * * *
ENVDT_TASK_NIST_MIRROR_CRON
+ +**`dt.task.osv.mirror.cron`** * [¶](#dttaskosvmirrorcron){ .headerlink } +: Cron expression of the OSV mirroring task. + + + + + +
Typecron
Default0 3 * * *
ENVDT_TASK_OSV_MIRROR_CRON
+ +**`dt.task.package-metadata-resolution.cron`** * [¶](#dttaskpackage-metadata-resolutioncron){ .headerlink } +: Cron expression of the package metadata resolution task.

Note that package metadata resolution is also triggered by other actions, such as BOM uploads. The scheduled execution is mostly relevant for deployments that may sit idle for a long time. + + + + + +
Typecron
Default0 1 * * *
ENVDT_TASK_PACKAGE_METADATA_RESOLUTION_CRON
+ +**`dt.task.package.metadata.maintenance.cron`** * [¶](#dttaskpackagemetadatamaintenancecron){ .headerlink } +: Cron expression of the package metadata maintenance task.

The task deletes orphaned records from the `PACKAGE_ARTIFACT_METADATA` and `PACKAGE_METADATA` tables. + + + + + +
Typecron
Default0 */12 * * *
ENVDT_TASK_PACKAGE_METADATA_MAINTENANCE_CRON
+ +**`dt.task.package.metadata.maintenance.lock.max.duration`** * [¶](#dttaskpackagemetadatamaintenancelockmaxduration){ .headerlink } +: Maximum duration in ISO 8601 format for which the package metadata maintenance task will hold a lock.

The duration should be long enough to cover the task's execution duration. + + + + + +
Typeduration
DefaultPT15M
ENVDT_TASK_PACKAGE_METADATA_MAINTENANCE_LOCK_MAX_DURATION
+ +**`dt.task.package.metadata.maintenance.lock.min.duration`** * [¶](#dttaskpackagemetadatamaintenancelockminduration){ .headerlink } +: Minimum duration in ISO 8601 format for which the package metadata maintenance task will hold a lock.

The duration should be long enough to cover eventual clock skew across API server instances. + + + + + +
Typeduration
DefaultPT1M
ENVDT_TASK_PACKAGE_METADATA_MAINTENANCE_LOCK_MIN_DURATION
+ +**`dt.task.portfolio-metrics-update.cron`** * [¶](#dttaskportfolio-metrics-updatecron){ .headerlink } +: Cron expression of the portfolio metrics update task. + + + + + +
Typecron
Default10 * * * *
ENVDT_TASK_PORTFOLIO_METRICS_UPDATE_CRON
+ +**`dt.task.project.maintenance.cron`** * [¶](#dttaskprojectmaintenancecron){ .headerlink } +: Cron expression of the project maintenance task.

The task deletes inactive projects based on retention policy. + + + + + +
Typecron
Default0 */4 * * *
ENVDT_TASK_PROJECT_MAINTENANCE_CRON
+ +**`dt.task.project.maintenance.lock.max.duration`** * [¶](#dttaskprojectmaintenancelockmaxduration){ .headerlink } +: Maximum duration in ISO 8601 format for which the project maintenance task will hold a lock.

The duration should be long enough to cover the task's execution duration. + + + + + +
Typeduration
DefaultPT15M
ENVDT_TASK_PROJECT_MAINTENANCE_LOCK_MAX_DURATION
+ +**`dt.task.project.maintenance.lock.min.duration`** * [¶](#dttaskprojectmaintenancelockminduration){ .headerlink } +: Minimum duration in ISO 8601 format for which the project maintenance task will hold a lock.

The duration should be long enough to cover eventual clock skew across API server instances. + + + + + +
Typeduration
DefaultPT1M
ENVDT_TASK_PROJECT_MAINTENANCE_LOCK_MIN_DURATION
+ +**`dt.task.scheduled-notification-dispatch.cron`** * [¶](#dttaskscheduled-notification-dispatchcron){ .headerlink } +: Cron expression for polling scheduled notification rules that are due for dispatch. + + + + + +
Typecron
Default* * * * *
ENVDT_TASK_SCHEDULED_NOTIFICATION_DISPATCH_CRON
+ +**`dt.task.tag.maintenance.cron`** * [¶](#dttasktagmaintenancecron){ .headerlink } +: Cron expression of the tag maintenance task.

The task deletes orphaned tags that are not used anymore. + + + + + +
Typecron
Default0 */12 * * *
ENVDT_TASK_TAG_MAINTENANCE_CRON
+ +**`dt.task.tag.maintenance.lock.max.duration`** * [¶](#dttasktagmaintenancelockmaxduration){ .headerlink } +: Maximum duration in ISO 8601 format for which the tag maintenance task will hold a lock.

The duration should be long enough to cover the task's execution duration. + + + + + +
Typeduration
DefaultPT15M
ENVDT_TASK_TAG_MAINTENANCE_LOCK_MAX_DURATION
+ +**`dt.task.tag.maintenance.lock.min.duration`** * [¶](#dttasktagmaintenancelockminduration){ .headerlink } +: Minimum duration in ISO 8601 format for which the tag maintenance task will hold a lock.

The duration should be long enough to cover eventual clock skew across API server instances. + + + + + +
Typeduration
DefaultPT1M
ENVDT_TASK_TAG_MAINTENANCE_LOCK_MIN_DURATION
+ +**`dt.task.telemetry-submission.cron`** * [¶](#dttasktelemetry-submissioncron){ .headerlink } +: Cron expression of the telemetry submission task.

The task enforces a 24-hour minimum interval between submissions, so the cron expression controls how often the task checks whether a submission is due. + + + + + +
Typecron
Default0 */1 * * *
ENVDT_TASK_TELEMETRY_SUBMISSION_CRON
+ +**`dt.task.vulnerability-policy-bundle-sync.cron`** * [¶](#dttaskvulnerability-policy-bundle-synccron){ .headerlink } +: Cron expression of the vulnerability policy bundle synchronization task.

Has no effect unless [`dt.vulnerability.policy.bundle.url`](#dtvulnerabilitypolicybundleurl) is also configured. + + + + + +
Typecron
Default*/15 * * * *
ENVDT_TASK_VULNERABILITY_POLICY_BUNDLE_SYNC_CRON
+ +**`dt.task.vulnerability.analysis.cron`** * [¶](#dttaskvulnerabilityanalysiscron){ .headerlink } +: Cron expression of the portfolio vulnerability analysis task. + + + + + +
Typecron
Default0 6 * * *
ENVDT_TASK_VULNERABILITY_ANALYSIS_CRON
+ +**`dt.task.vulnerability.analysis.lock.max.duration`** * [¶](#dttaskvulnerabilityanalysislockmaxduration){ .headerlink } +: Maximum duration in ISO 8601 format for which the portfolio vulnerability analysis task will hold a lock.

The duration should be long enough to cover the task's execution duration. + + + + + +
Typeduration
DefaultPT15M
ENVDT_TASK_VULNERABILITY_ANALYSIS_LOCK_MAX_DURATION
+ +**`dt.task.vulnerability.analysis.lock.min.duration`** * [¶](#dttaskvulnerabilityanalysislockminduration){ .headerlink } +: Minimum duration in ISO 8601 format for which the portfolio vulnerability analysis task will hold a lock.

The duration should be long enough to cover eventual clock skew across API server instances. + + + + + +
Typeduration
DefaultPT90S
ENVDT_TASK_VULNERABILITY_ANALYSIS_LOCK_MIN_DURATION
+ +**`dt.task.vulnerability.database.maintenance.cron`** * [¶](#dttaskvulnerabilitydatabasemaintenancecron){ .headerlink } +: Cron expression of the vulnerability database maintenance task.

The task deletes orphaned records from the `VULNERABLESOFTWARE` table. + + + + + +
Typecron
Default0 0 * * *
ENVDT_TASK_VULNERABILITY_DATABASE_MAINTENANCE_CRON
+ +**`dt.task.vulnerability.database.maintenance.lock.max.duration`** * [¶](#dttaskvulnerabilitydatabasemaintenancelockmaxduration){ .headerlink } +: Maximum duration in ISO 8601 format for which the vulnerability database maintenance task will hold a lock.

The duration should be long enough to cover the task's execution duration. + + + + + +
Typeduration
DefaultPT15M
ENVDT_TASK_VULNERABILITY_DATABASE_MAINTENANCE_LOCK_MAX_DURATION
+ +**`dt.task.vulnerability.database.maintenance.lock.min.duration`** * [¶](#dttaskvulnerabilitydatabasemaintenancelockminduration){ .headerlink } +: Minimum duration in ISO 8601 format for which the vulnerability database maintenance task will hold a lock.

The duration should be long enough to cover eventual clock skew across API server instances. + + + + + +
Typeduration
DefaultPT1M
ENVDT_TASK_VULNERABILITY_DATABASE_MAINTENANCE_LOCK_MIN_DURATION
+ +**`dt.task.vulnerability.metrics.update.cron`** * [¶](#dttaskvulnerabilitymetricsupdatecron){ .headerlink } +: Cron expression of the vulnerability metrics update task. + + + + + +
Typecron
Default40 * * * *
ENVDT_TASK_VULNERABILITY_METRICS_UPDATE_CRON
+ +**`dt.task.vulnerability.metrics.update.lock.max.duration`** * [¶](#dttaskvulnerabilitymetricsupdatelockmaxduration){ .headerlink } +: Maximum duration in ISO 8601 format for which the vulnerability metrics update task will hold a lock.

The duration should be long enough to cover the task's execution duration. + + + + + +
Typeduration
DefaultPT15M
ENVDT_TASK_VULNERABILITY_METRICS_UPDATE_LOCK_MAX_DURATION
+ +**`dt.task.vulnerability.metrics.update.lock.min.duration`** * [¶](#dttaskvulnerabilitymetricsupdatelockminduration){ .headerlink } +: Minimum duration in ISO 8601 format for which the vulnerability metrics update task will hold a lock.

The duration should be long enough to cover eventual clock skew across API server instances. + + + + + +
Typeduration
DefaultPT90S
ENVDT_TASK_VULNERABILITY_METRICS_UPDATE_LOCK_MIN_DURATION
+ +**`dt.task.workflow.maintenance.cron`** * [¶](#dttaskworkflowmaintenancecron){ .headerlink } +: Cron expression of the workflow maintenance task.

The task:
  • Transitions workflow steps from PENDING to TIMED_OUT state
  • Transitions workflow steps from TIMED_OUT to FAILED state
  • Transitions children of FAILED steps to CANCELLED state
  • Deletes finished workflows according to the configured retention duration
+ + + + + +
Typecron
Default*/15 * * * *
ENVDT_TASK_WORKFLOW_MAINTENANCE_CRON
+ +**`dt.task.workflow.maintenance.lock.max.duration`** * [¶](#dttaskworkflowmaintenancelockmaxduration){ .headerlink } +: Maximum duration in ISO 8601 format for which the workflow maintenance task will hold a lock.

The duration should be long enough to cover the task's execution duration. + + + + + +
Typeduration
DefaultPT5M
ENVDT_TASK_WORKFLOW_MAINTENANCE_LOCK_MAX_DURATION
+ +**`dt.task.workflow.maintenance.lock.min.duration`** * [¶](#dttaskworkflowmaintenancelockminduration){ .headerlink } +: Minimum duration in ISO 8601 format for which the workflow maintenance task will hold a lock.

The duration should be long enough to cover eventual clock skew across API server instances. + + + + + +
Typeduration
DefaultPT1M
ENVDT_TASK_WORKFLOW_MAINTENANCE_LOCK_MIN_DURATION
+ + + +## Vulnerability Analysis + +**`dt.vuln-analyzer.internal.datasource.name`** [¶](#dtvuln-analyzerinternaldatasourcename){ .headerlink } +: Defines the name of the data source to be used by the internal vulnerability analyzer.

The internal analyzer performs no database writes, so this data source *could* point to a read replica if needed. + + + + + +
Typestring
Defaultdefault
ENVDT_VULN_ANALYZER_INTERNAL_DATASOURCE_NAME
+ +**`dt.vuln-analyzer.internal.enabled`** [¶](#dtvuln-analyzerinternalenabled){ .headerlink } +: Defines whether the internal vulnerability analyzer is enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_VULN_ANALYZER_INTERNAL_ENABLED
+ +**`dt.vuln-analyzer.oss-index.allow-local-connections`** [¶](#dtvuln-analyzeross-indexallow-local-connections){ .headerlink } +: Defines whether the OSS Index vulnerability analyzer is allowed to connect to local hosts. + + + + + +
Typeboolean
Defaultfalse
ENVDT_VULN_ANALYZER_OSS_INDEX_ALLOW_LOCAL_CONNECTIONS
+ +**`dt.vuln-analyzer.oss-index.enabled`** [¶](#dtvuln-analyzeross-indexenabled){ .headerlink } +: Defines whether the OSS Index vulnerability analyzer is enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_VULN_ANALYZER_OSS_INDEX_ENABLED
+ +**`dt.vuln-analyzer.snyk.api-version`** [¶](#dtvuln-analyzersnykapi-version){ .headerlink } +: Defines the Snyk REST API version to use.

Should only be changed if the default version is discontinued by Snyk and an upgrade of Dependency-Track is not immediately possible. + + + + + +
Typestring
Default2025-11-05
ENVDT_VULN_ANALYZER_SNYK_API_VERSION
+ +**`dt.vuln-analyzer.snyk.enabled`** [¶](#dtvuln-analyzersnykenabled){ .headerlink } +: Defines whether the Snyk vulnerability analyzer is enabled. + + + + + +
Typeboolean
Defaulttrue
ENVDT_VULN_ANALYZER_SNYK_ENABLED
+ -!!! warning "Placeholder" - This page has not been written yet. diff --git a/docs/reference/datasources/.pages b/docs/reference/datasources/.pages new file mode 100644 index 00000000..e96f08f6 --- /dev/null +++ b/docs/reference/datasources/.pages @@ -0,0 +1,8 @@ +nav: + - Overview: index.md + - NVD: nvd.md + - GitHub Advisories: github-advisories.md + - OSV: osv.md + - Private Vulnerability Repository: private-vulnerability-repository.md + - Repositories: repositories.md + - Internal Components: internal-components.md diff --git a/docs/reference/datasources/github-advisories.md b/docs/reference/datasources/github-advisories.md new file mode 100644 index 00000000..f56dc94a --- /dev/null +++ b/docs/reference/datasources/github-advisories.md @@ -0,0 +1,40 @@ +# GitHub Advisories + +The [GitHub Advisory Database](https://github.com/advisories) (GHSA) contains +security advisories for open source packages hosted on GitHub and other ecosystems. +Advisories may or may not overlap with NVD CVE records—GitHub often publishes +advisories for vulnerabilities that are not yet in the NVD, or with more ecosystem- +specific detail. + +## What It Provides + +GitHub Advisories are keyed by PURL and map directly to package ecosystems such as +npm, Maven, PyPI, Go, NuGet, and others. This makes them highly effective for +open source component matching without requiring a CPE. + +Dependency-Track automatically synchronises vulnerability aliases between GHSA and +CVE identifiers where GitHub has made the link explicit. This means a component can +be matched by either its GHSA or CVE identifier, and the finding will not be +duplicated. + +## Mirroring + +Dependency-Track mirrors GitHub Advisories via GitHub's public GraphQL API. The mirror +refreshes daily and on instance startup. + +The mirroring schedule is controlled by +[`dt.task.git.hub.advisory.mirror.cron`](../configuration/properties.md#dttaskgithubadvisorymirrorcron). + +## Configuration + +GitHub Advisory mirroring is configured in the administration UI under +**Administration → Datasources → GitHub Advisories**. + +| Setting | Description | +|:--------|:------------| +| Enabled | Whether GitHub Advisory mirroring is active. Enabled by default. | +| GitHub Personal Access Token | Required. A GitHub PAT with no scopes assigned is sufficient. Without a token, the GraphQL API rejects requests. | + +To create a token, visit [github.com/settings/tokens](https://github.com/settings/tokens) +and generate a classic or fine-grained token. No scopes are required—the public +advisory data is accessible to any authenticated user. diff --git a/docs/reference/datasources/index.md b/docs/reference/datasources/index.md new file mode 100644 index 00000000..9e4daa89 --- /dev/null +++ b/docs/reference/datasources/index.md @@ -0,0 +1,34 @@ +# Vulnerability Datasources + +Vulnerability datasources are the upstream feeds from which Dependency-Track populates +its internal vulnerability database. The [internal analyzer](../analyzers.md#internal) +queries this local database when evaluating components, so no external call is made at +analysis time—only during mirroring. + +Mirroring runs on a configurable schedule (daily by default) and on instance startup. +Progress and errors are reported via the `DATASOURCE_MIRRORING` +[notification group](../../concepts/architecture/design/notifications.md). + +## Mirrored Sources + +These sources are downloaded and stored locally. The internal analyzer queries them +without contacting any external service during vulnerability analysis. + +| Source | Identifier prefix | Primary use | +|:-------|:-----------------|:------------| +| [NVD](nvd.md) | `CVE-` | CPE-based matching for all component types | +| [GitHub Advisories](github-advisories.md) | `GHSA-` | PURL-based matching for open source packages | +| [OSV](osv.md) | varies by ecosystem | PURL-based matching for open source packages | + +## Other Sources + +| Source | Description | +|:-------|:------------| +| [Private Vulnerability Repository](private-vulnerability-repository.md) | Internally managed vulnerabilities for proprietary components or pre-disclosure research | +| [Repositories](repositories.md) | Package registry integrations used for outdated component detection | +| [Internal Components](internal-components.md) | Configuring components that should never be sent to external services | + +## Analyzers That Query External Services + +OSS Index, Snyk, Trivy, and VulnDB are *analyzers* that call external APIs at analysis +time. They are documented separately in the [Analyzers](../analyzers.md) reference. diff --git a/docs/reference/datasources/internal-components.md b/docs/reference/datasources/internal-components.md new file mode 100644 index 00000000..5eb3ff71 --- /dev/null +++ b/docs/reference/datasources/internal-components.md @@ -0,0 +1,48 @@ +# Internal Components + +Dependency-Track allows organisations to mark certain component namespaces and/or names +as *internal*. Components identified as internal are excluded from all external services: +they are never sent to external vulnerability analyzers (OSS Index, Snyk, Trivy, VulnDB) +and never queried against public package repositories. + +This is useful when your SBOMs include first-party libraries with coordinates that could +coincide with public packages, or when you simply do not want metadata about internal +packages to leave your network. + +## How Matching Works + +Internal component identification is configured in +**Administration → Internal Components** by specifying one or more namespace and/or name +patterns. + +Two matching modes are available: + +| Mode | Behaviour | +|:-----|:----------| +| OR (default) | A component is internal if its namespace *or* name matches any configured pattern. | +| AND | A component is internal if its namespace *and* name both match. | + +Patterns are matched against the component's PURL namespace and name fields. + +!!! note + By default, no components are identified as internal—all components are treated + as third-party and may be sent to configured external analyzers. + +## Effects of Being Marked Internal + +| Service | Behaviour for internal components | +|:--------|:----------------------------------| +| OSS Index | Not queried | +| Snyk | Not queried | +| Trivy | Not queried | +| VulnDB | Not queried | +| Public package repositories | Not queried for version currency checks | +| Internal analyzer | Still evaluated against the local vulnerability database | +| Private repositories | Still queried if configured | + +## Use with the Private Vulnerability Repository + +Internal components can still be matched against vulnerabilities defined in the +[private vulnerability repository](private-vulnerability-repository.md). This allows +organisations to track and triage vulnerabilities in their own codebases without +exposing component identifiers externally. diff --git a/docs/reference/datasources/nvd.md b/docs/reference/datasources/nvd.md new file mode 100644 index 00000000..839cfd40 --- /dev/null +++ b/docs/reference/datasources/nvd.md @@ -0,0 +1,51 @@ +# National Vulnerability Database (NVD) + +The [National Vulnerability Database](https://nvd.nist.gov/) (NVD) is the largest +publicly available source of vulnerability intelligence, maintained by NIST and building +on CVE identifiers from MITRE. It contains over 200,000 CVE records spanning from the +early nineties to the present day. + +!!! note + This product uses the NVD API but is not endorsed or certified by the NVD. + +## What It Provides + +The NVD mirror populates Dependency-Track's internal database with CVE records including +descriptions, CVSS scores, CWE classifications, and affected product configurations +expressed as CPE. The [internal analyzer](../analyzers.md#internal) uses this data +to match components with valid CPEs against known vulnerabilities. + +## Mirroring + +Dependency-Track mirrors the NVD via the NVD REST API. The mirror refreshes daily and +on instance startup. The initial mirror may take significantly longer than subsequent +incremental updates. + +The mirroring schedule is controlled by +[`dt.task.nist.mirror.cron`](../configuration/properties.md#dttasknistmirrorcron). + +## Configuration + +NVD mirroring is configured through the administration UI under +**Administration → Datasources → NVD**. + +| Setting | Description | +|:--------|:------------| +| Enabled | Whether NVD mirroring is active. Enabled by default. | +| NVD API Key | Optional but strongly recommended. Unauthenticated requests are rate-limited aggressively, which can cause the initial mirror to take hours or fail. | + +Obtain a free NVD API key at [nvd.nist.gov/developers/request-an-api-key](https://nvd.nist.gov/developers/request-an-api-key). + +!!! tip + Configuring an API key is especially important for new installations, where + the entire NVD dataset must be downloaded on the first mirror run. + +## CPE Matching + +NVD records describe affected products using CPE (Common Platform Enumeration). +Dependency-Track follows the NIST CPE name matching specification with adjustments +to reduce false positives: matches are rejected when the vendor comparison yields +*SUBSET* and the product comparison yields *SUPERSET*, or vice versa. + +Components without a valid CPE are not evaluated by the internal analyzer against +NVD data. Ensure your SBOMs include CPEs for non-open-source components. diff --git a/docs/reference/datasources/osv.md b/docs/reference/datasources/osv.md new file mode 100644 index 00000000..99ed8d26 --- /dev/null +++ b/docs/reference/datasources/osv.md @@ -0,0 +1,53 @@ +# OSV + +[OSV](https://osv.dev/) (Open Source Vulnerabilities) is a vulnerability database +focused on open source packages, maintained by Google. It aggregates advisories from +multiple upstream sources including GitHub Advisories, PyPA, RustSec, and many others, +providing a unified PURL-keyed dataset. + +## What It Provides + +OSV advisories are natively keyed by package ecosystem and version, making them +well-suited for PURL-based matching across a wide range of languages and package managers. + +OSV supports alias linking, so vulnerabilities tracked under different IDs (CVE, GHSA, +OSV-specific IDs) across databases are correlated automatically. + +## Supported Ecosystems + +OSV data can be selectively enabled per ecosystem. Available ecosystems include: +Go, npm, PyPI, RubyGems, crates.io (Rust), Maven, NuGet, Packagist (PHP), Hex (Erlang), +pub (Dart), Alpine, Debian, Ubuntu, Android, and others. + +!!! tip + For Debian, enable **Debian** rather than individual Debian version ecosystems. + The Debian ecosystem package is a superset of all individual versions. + +## Mirroring + +Dependency-Track mirrors OSV data from Google Cloud Storage (`gs://osv-vulnerabilities`). +No authentication token is required. The mirror refreshes daily and on instance startup. + +The mirroring schedule is controlled by +[`dt.task.osv.mirror.cron`](../configuration/properties.md#dttaskosvmirrorcron). + +## Configuration + +OSV mirroring is configured in the administration UI under +**Administration → Datasources → OSV**. + +| Setting | Description | +|:--------|:------------| +| Enabled | Whether OSV mirroring is active. | +| Ecosystems | The specific ecosystems to mirror. Only selected ecosystems are downloaded. | + +!!! warning + Disabling OSV removes ecosystem selections from the UI but preserves previously + mirrored vulnerability records in the database. Previously matched findings are + not automatically removed. + +## Alias Synchronisation + +OSV supports alias synchronisation with other vulnerability databases. This is +configured on the [internal analyzer](../analyzers.md#internal) rather than on +the OSV datasource directly. diff --git a/docs/reference/datasources/private-vulnerability-repository.md b/docs/reference/datasources/private-vulnerability-repository.md new file mode 100644 index 00000000..44e7a245 --- /dev/null +++ b/docs/reference/datasources/private-vulnerability-repository.md @@ -0,0 +1,68 @@ +# Private Vulnerability Repository + +The private vulnerability repository stores internally managed vulnerabilities. It behaves +identically to other vulnerability sources -- findings are raised, audit trails are maintained, +and notifications fire -- but the data is entirely user-managed. + +For use cases and step-by-step creation instructions, see +[Managing private vulnerabilities](../../guides/user/managing-private-vulnerabilities.md). + +## Vulnerability IDs + +Every vulnerability in the private repository requires a unique ID within the +`INTERNAL` source. By default, Dependency-Track generates IDs using the prefix `INT` +followed by three blocks of four alphanumeric characters (for example, `INT-td11-7hzm-qzot`). + +Any prefix meaningful to your organisation may be used (for example, `ACME-`, `INT-`, +`SEC-`). The only constraint is uniqueness within the `INTERNAL` source. + +## Severity and Risk Ratings + +Severity can be set explicitly or derived from a risk score: + +| Rating | Description | +|:-------|:------------| +| Explicit severity | Choose directly: `CRITICAL`, `HIGH`, `MEDIUM`, `LOW`, or `INFO`. | +| CVSSv2 / CVSSv3 | Enter a CVSS vector; Dependency-Track calculates the base score and derives severity. | +| OWASP Risk Rating | Enter likelihood and impact factors; Dependency-Track calculates severity. | + +When multiple ratings are provided, CVSSv3 takes precedence over CVSSv2, and the rating +with the higher severity is preferred over OWASP Risk Rating. + +## Description Fields + +| Field | Purpose | +|:------|:--------| +| Title | Short summary shown in finding lists. | +| Description | High-level overview of the vulnerability and its risk. Supports Markdown. | +| Details | In-depth description, such as root cause analysis. Supports Markdown. | +| Recommendation | Remediation or mitigation instructions. Supports Markdown. | +| References | List of external links (changelogs, advisories, blog posts, etc.). | + +## Affected Components + +For a vulnerability to be matched against components, **Affected Components** must +be configured. Each entry specifies an identifier (PURL or CPE) and either an exact +version or a version range. + +**Version ranges** use lower and/or upper bounds: + +| Operator | Meaning | +|:---------|:--------| +| `>` | Greater than (exclusive lower bound) | +| `>=` | Greater than or equal (inclusive lower bound) | +| `<` | Less than (exclusive upper bound) | +| `<=` | Less than or equal (inclusive upper bound) | + +A range with only a lower bound matches all versions above it; a range with only an +upper bound matches all versions below it. + +!!! tip + Dependency-Track does not convert between PURL and CPE. Use the same identifier + type that your SBOM generator produces. Most modern generators emit PURLs. + +## Finding Behaviour + +Internal vulnerabilities are matched by the [internal analyzer](../analyzers.md#internal) +during regular vulnerability analysis. Findings appear identically to those from public +sources and support the same triage workflow (analysis states, suppression, VEX export). diff --git a/docs/reference/datasources/repositories.md b/docs/reference/datasources/repositories.md new file mode 100644 index 00000000..2e01b6f6 --- /dev/null +++ b/docs/reference/datasources/repositories.md @@ -0,0 +1,74 @@ +# Package Repositories + +Dependency-Track integrates with public and private package repositories to fetch +component metadata. This integration is used primarily for +outdated component detection: Dependency-Track +queries the registry for a component's latest available version and compares it to the +version in the SBOM. + +## Supported Ecosystems + +The following ecosystems are supported out of the box, each with a pre-configured +default repository: + +| Ecosystem | Default repository | +|:----------|:------------------| +| Cargo (Rust) | [crates.io](https://crates.io) | +| Composer (PHP) | [Packagist](https://packagist.org) | +| Gem (Ruby) | [RubyGems](https://rubygems.org) | +| GitHub (Actions) | [github.com](https://github.com) | +| Go Modules | [proxy.golang.org](https://proxy.golang.org) | +| Hex (Erlang/Elixir) | [Hex.pm](https://hex.pm) | +| Maven (Java) | [Maven Central](https://central.sonatype.com) | +| npm (Node.js) | [npmjs.com](https://www.npmjs.com) | +| NuGet (.NET) | [nuget.org](https://www.nuget.org) | +| PyPI (Python) | [pypi.org](https://pypi.org) | +| CPAN (Perl) | [CPAN](https://www.cpan.org) | + +Additional repositories can be configured for any ecosystem in +**Administration → Repositories**. + +## Configuration + +Repository settings are managed in **Administration → Repositories**. Each repository +entry has the following properties: + +| Property | Description | +|:---------|:------------| +| Enabled | Whether the repository is queried during analysis. Disabled repositories are skipped. | +| Internal | Whether this is an internal (private) registry. Internal repositories are used *only* for components marked as internal. Non-internal repositories are used only for non-internal components. | +| URL | The base URL of the repository. | +| Authentication | Optional credentials (see below). | + +## Authentication + +Three authentication methods are supported: + +| Method | Configuration | +|:-------|:-------------| +| None | No credentials required (default for public repositories). | +| Basic | Enter a username and password. | +| Bearer token | Leave the username blank; enter the token in the password field. | + +For GitHub, use your GitHub username and a [personal access token](https://github.com/settings/tokens) +with at least public read access. + +For private repositories such as Azure Artifacts or JFrog Artifactory, use the +appropriate service account credentials. + +## How Dependency-Track Uses Repositories + +Dependency-Track uses the Package URL (PURL) of each component to determine which +ecosystem it belongs to, then queries the matching repositories for the latest published +version. If the component's version is older than the latest, it is flagged as outdated. + +!!! note + Repository queries are used only for version currency checks. They are not part + of the vulnerability analysis pipeline. Vulnerability data comes from the + [internal analyzer](../analyzers.md) and the external analyzer integrations. + +## Internal Components and Repositories + +Components marked as [internal](internal-components.md) are only matched against +repositories that are also marked as internal. This prevents internal package +coordinates from being leaked to external registry APIs. diff --git a/docs/reference/file-formats.md b/docs/reference/file-formats.md new file mode 100644 index 00000000..d65edab6 --- /dev/null +++ b/docs/reference/file-formats.md @@ -0,0 +1,63 @@ +# File Formats + +## CycloneDX + +Dependency-Track's primary file format is [CycloneDX](https://cyclonedx.org/), a +lightweight, security-focused Bill of Materials specification. CycloneDX is the only +format supported for **uploading** SBOMs to Dependency-Track. + +Supported CycloneDX serialisations: + +| Format | Content-Type | +|:-------|:-------------| +| JSON | `application/vnd.cyclonedx+json` | +| XML | `application/vnd.cyclonedx+xml` | + +All versions of the CycloneDX BOM specification are supported for upload. + +Dependency-Track also **generates** CycloneDX documents in several forms: + +| Document type | Description | +|:-------------|:------------| +| BOM | A full software bill of materials reflecting the current component inventory of a project. | +| VEX | A Vulnerability Exploitability Exchange document containing analysis decisions (states, justifications) for a project's findings. | +| VDR | A Vulnerability Disclosure Report containing full vulnerability data for a project's components. | + +## Finding Packaging Format (FPF) + +The Finding Packaging Format (FPF) is a Dependency-Track-native JSON format for +exporting findings. It is used primarily to integrate with platforms that cannot +consume the REST API directly. + +### Structure + +An FPF document contains four top-level fields: + +| Field | Description | +|:------|:------------| +| `version` | The FPF format version. | +| `meta` | Information about the Dependency-Track instance that generated the file. | +| `project` | Project metadata (name, version, UUID). | +| `findings` | Array of finding records, each linking a component to a vulnerability and including the current analysis state. | + +Each finding record includes the affected component's coordinates, the vulnerability +details (ID, source, severity, CVSS vectors, CWEs), the current analysis state and +justification, and a matrix identifier that uniquely identifies the (project, component, +vulnerability) triple. + +### API Endpoint + +```text +GET /api/v1/finding/project/{uuid}/export +``` + +Requires the `VIEW_VULNERABILITY` permission. + +### Version History + +| FPF Version | Dependency-Track Version | Changes | +|:------------|:------------------------|:--------| +| v1.0 | Initial | Baseline format. | +| v1.1 | v4.5 | Added `cwes` array to support multiple CWEs per vulnerability. | +| v1.2 | v4.8.0 | Removed `allBySource` and internal `id` fields from aliases. | +| v1.3 | v4.14.0 | Added optional CVSS vectors (`cvssV2Vector`, `cvssV3Vector`, `cvssV4Vector`) and OWASP Risk Rating vector fields. | diff --git a/docs/reference/images/analyzers/analyzer-config_internal.png b/docs/reference/images/analyzers/analyzer-config_internal.png new file mode 100644 index 0000000000000000000000000000000000000000..ad201590c6b3fbb5c1eb8920f59dfcb4d10ef82d GIT binary patch literal 39973 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 literal 0 HcmV?d00001 diff --git a/docs/reference/images/analyzers/analyzer-config_oss-index.png b/docs/reference/images/analyzers/analyzer-config_oss-index.png new file mode 100644 index 0000000000000000000000000000000000000000..cbca6306c5ec6885db866a8d1d30c874ca848b8b GIT binary patch literal 79626 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 LL+#SbH>3XtmJ#}4 literal 0 HcmV?d00001 diff --git a/docs/reference/images/analyzers/analyzer-config_snyk.png b/docs/reference/images/analyzers/analyzer-config_snyk.png new file mode 100644 index 0000000000000000000000000000000000000000..f6083beff9b0f363b13e540b7f37433f300725da GIT binary patch literal 81434 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
l2r@ym% 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�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 v0|TJd;I)MvkHJf95)u@kdmBh_$l?F&+&n%Yo literal 0 HcmV?d00001 diff --git a/docs/reference/index.md b/docs/reference/index.md index a44992e8..72869240 100644 --- a/docs/reference/index.md +++ b/docs/reference/index.md @@ -1,3 +1,68 @@ # Reference -Technical descriptions of the software's interfaces, configuration options, and internals. +Reference documentation describes Dependency-Track's technical interfaces, +configuration properties, and data schemas. It is designed to be consulted +rather than read from start to finish. + +For step-by-step instructions, see [Guides](../guides/index.md). +For background and explanations, see [Concepts](../concepts/index.md). + +## API + +- [REST API v1](api/v1.md) +- [REST API v2](api/v2.md) + +## Configuration + +- [Application](configuration/application.md) -- + general application settings and MicroProfile Config sources +- [Data Sources](configuration/datasources.md) -- + database connection and pool configuration +- [File Storage](configuration/file-storage.md) -- + local and S3-compatible storage providers +- [Database](configuration/database.md) -- + PostgreSQL requirements, extensions, and tuning parameters +- [All Properties](configuration/properties.md) -- + complete generated registry of all application properties + +## Notifications + +- [Publishers](notifications/publishers.md) -- + email, Jira, Kafka, Webhook, and other publisher options +- [Filter Expressions](notifications/filter-expressions.md) -- + CEL-based notification filtering + +## Datasources + +- [NVD](datasources/nvd.md) -- + National Vulnerability Database mirroring and CPE matching +- [GitHub Advisories](datasources/github-advisories.md) -- + GHSA mirroring via GitHub's GraphQL API +- [OSV](datasources/osv.md) -- + Open Source Vulnerabilities mirroring, selectable by ecosystem +- [Private Vulnerability Repository](datasources/private-vulnerability-repository.md) -- + internally managed vulnerabilities for proprietary components +- [Repositories](datasources/repositories.md) -- + package registries for outdated component detection +- [Internal Components](datasources/internal-components.md) -- + excluding first-party components from external analysis + +## Expressions and Schemas + +- [CEL Expressions](cel-expressions.md) -- + syntax reference for CEL used in policies and notifications +- [Vulnerability Analyzers](analyzers.md) +- [Vulnerability Policies](vulnerability-policies.md) +- [Notification Schema](schemas/notification.md) +- [Policy Schema](schemas/policy.md) + +## Access Control and Integrations + +- [Permissions](permissions.md) -- + users, teams, API keys, and the full permissions table +- [Badges](badges.md) -- + SVG badges for embedding vulnerability and policy metrics +- [File Formats](file-formats.md) -- + CycloneDX BOM/VEX/VDR and Finding Packaging Format (FPF) +- [Community Integrations](community-integrations.md) -- + third-party tools and libraries built on the Dependency-Track API diff --git a/docs/reference/notifications/.pages b/docs/reference/notifications/.pages new file mode 100644 index 00000000..a8b62f47 --- /dev/null +++ b/docs/reference/notifications/.pages @@ -0,0 +1,3 @@ +nav: + - Publishers: publishers.md + - Filter Expressions: filter-expressions.md diff --git a/docs/reference/notifications/filter-expressions.md b/docs/reference/notifications/filter-expressions.md new file mode 100644 index 00000000..a0c86200 --- /dev/null +++ b/docs/reference/notifications/filter-expressions.md @@ -0,0 +1,183 @@ +# Filter Expressions + +## Introduction + +Alerts can include a filter expression to control which notifications are dispatched +based on their content. Filter expressions are written in [CEL] (Common Expression Language), +the same language used for [policy compliance expressions](../../reference/cel-expressions.md). + +Without a filter expression, an alert matches all notifications that satisfy its scope, group, +level, and project or tag restrictions. A filter expression adds a further condition: the +notification is only dispatched when the expression evaluates to `true`. + +![Filter expression field in the alert editor](./images/filter-expression-editor.png) + +## Syntax + +Filter expressions use the same [CEL syntax](../../reference/cel-expressions.md#syntax) as +policy compliance expressions. CEL is not [Turing-complete] and does not support constructs +like `if` statements or loops. It compensates for this with [macros] like `all`, `exists`, +`exists_one`, `map`, and `filter`. + +Refer to the official [language definition] for a thorough description of the syntax. + +## Evaluation Context + +The context in which filter expressions are evaluated contains the following variables: + +| Variable | Type | Description | +|:------------|:-------------------------------------------------------------|:---------------------------------------------------------------------------------------| +| `level` | [`Level`](../../reference/schemas/notification.md#level) | The notification level, as an integer enum value. Use named constants (see below). | +| `scope` | [`Scope`](../../reference/schemas/notification.md#scope) | The notification scope, as an integer enum value. Use named constants (see below). | +| `group` | [`Group`](../../reference/schemas/notification.md#group) | The notification group, as an integer enum value. Use named constants (see below). | +| `title` | `string` | The notification title. | +| `content` | `string` | The notification content. | +| `timestamp` | [`google.protobuf.Timestamp`][protobuf-ts-docs] | The time at which the notification was created. | +| `subject` | dynamic | The notification subject, typed according to the notification group (see below). | + +### Enum Constants + +The `level`, `scope`, and `group` variables hold integer values. To compare them in a readable way, +use the named constants from the [notification schema](../../reference/schemas/notification.md#enums): + +```js +level == Level.LEVEL_INFORMATIONAL +``` + +```js +group == Group.GROUP_NEW_VULNERABILITY +``` + +```js +scope == Scope.SCOPE_PORTFOLIO +``` + +### Subject Types + +The `subject` variable holds the notification's subject, which varies depending on the notification +group. Refer to the [notification schema reference](../../reference/schemas/notification.md#subjects) +for full details of each subject type and its fields. + +| Group | Subject Type | +|:--------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------| +| `BOM_CONSUMED`, `BOM_PROCESSED` | [BomConsumedOrProcessedSubject](../../reference/schemas/notification.md#bomconsumedorprocessedsubject) | +| `BOM_PROCESSING_FAILED` | [BomProcessingFailedSubject](../../reference/schemas/notification.md#bomprocessingfailedsubject) | +| `BOM_VALIDATION_FAILED` | [BomValidationFailedSubject](../../reference/schemas/notification.md#bomvalidationfailedsubject) | +| `NEW_VULNERABILITY` | [NewVulnerabilitySubject](../../reference/schemas/notification.md#newvulnerabilitysubject) | +| `NEW_VULNERABLE_DEPENDENCY` | [NewVulnerableDependencySubject](../../reference/schemas/notification.md#newvulnerabledependencysubject) | +| `POLICY_VIOLATION` | [PolicyViolationSubject](../../reference/schemas/notification.md#policyviolationsubject) | +| `PROJECT_AUDIT_CHANGE` | [VulnerabilityAnalysisDecisionChangeSubject](../../reference/schemas/notification.md#vulnerabilityanalysisdecisionchangesubject) or [PolicyViolationAnalysisDecisionChangeSubject](../../reference/schemas/notification.md#policyviolationanalysisdecisionchangesubject) | +| `PROJECT_VULN_ANALYSIS_COMPLETE` | [ProjectVulnAnalysisCompleteSubject](../../reference/schemas/notification.md#projectvulnanalysiscompletesubject) | +| `VEX_CONSUMED`, `VEX_PROCESSED` | [VexConsumedOrProcessedSubject](../../reference/schemas/notification.md#vexconsumedorprocessedsubject) | +| `USER_CREATED`, `USER_DELETED` | [UserSubject](../../reference/schemas/notification.md#usersubject) | + +## Validation + +Filter expressions are validated when an alert is saved. If the expression contains syntax errors +or references types that do not exist, the save operation will fail and the errors will be reported +with their exact location (line and column). + +![Validation error for an invalid filter expression](./images/filter-expression-editor-error.png) + +The maximum length of a filter expression is 2048 characters. + +## Failure Behaviour + +If a filter expression fails to evaluate at dispatch time (for example due to accessing a field +that does not exist on the subject), the alert matches the notification regardless. +This "fail-open" strategy ensures that a broken expression causes over-notification rather than +silently suppressing notifications. Evaluation failures are logged as warnings. + +!!! warning + An alert with an expression that consistently fails will behave as though + it has no filter expression at all. Check the application logs for evaluation warnings + if an alert appears to match more broadly than expected. + +## Filtering Order + +When a notification is dispatched, Dependency-Track evaluates the following filters in order: + +1. **Scope, group, and level** matching (configured on the alert). +2. **Project and tag restrictions** (if the alert is limited to specific projects or tags). +3. **Filter expression** (if the alert has one). + +The filter expression is only evaluated when the notification has already passed the preceding +checks. This means that project and tag restrictions are always enforced, regardless of what the +expression contains. + +## Examples + +### Only critical and high severity vulnerabilities + +The following expression matches `NEW_VULNERABILITY` notifications where the vulnerability +severity is `CRITICAL` or `HIGH`: + +```js linenums="1" +subject.vulnerability.severity in ["CRITICAL", "HIGH"] +``` + +### Vulnerabilities with a CVSS v3 score above a threshold + +```js linenums="1" +subject.vulnerability.cvss_v3 >= 7.0 +``` + +### Notifications for projects matching a name prefix + +The following expression matches notifications whose subject contains a project with a name +starting with `acme-`: + +```js linenums="1" +subject.project.name.startsWith("acme-") +``` + +!!! tip + For simple project-based filtering, consider using project and tag restrictions on the + alert instead. Filter expressions are more useful for content-based conditions + that cannot be expressed through project or tag restrictions alone. + +### Vulnerabilities with a specific CWE + +The following expression matches `NEW_VULNERABILITY` notifications where the vulnerability +has CWE-79 (Cross-site Scripting) among its CWEs: + +```js linenums="1" +subject.vulnerability.cwes.exists(cwe, cwe.cwe_id == 79) +``` + +### Combining multiple conditions + +The following expression matches `NEW_VULNERABILITY` notifications for `CRITICAL` vulnerabilities +with a network attack vector in CVSSv3: + +```js linenums="1" +subject.vulnerability.severity == "CRITICAL" + && subject.vulnerability.cvss_v3_vector.matches(".*/AV:N/.*") +``` + +### Scheduled alerts: only when critical vulnerabilities were found + +For scheduled alerts that produce vulnerability summaries, the subject contains +an overview with vulnerability counts grouped by severity. The following expression matches +only when at least one `CRITICAL` vulnerability was found in the reporting period: + +```js linenums="1" +"CRITICAL" in subject.overview.new_vulnerabilities_count_by_severity +``` + +### Optional field checking + +CEL does not have a concept of `null`. Accessing a field that is not set returns its default +value (for example, `""` for strings, `0` for numbers), which can lead to misleading matches. +Use the `has()` macro to check for field presence before accessing it: + +```js linenums="1" +has(subject.vulnerability.cvss_v3_vector) + && subject.vulnerability.cvss_v3_vector.matches(".*/AV:N/.*") +``` + +[CEL]: https://cel.dev/ +[Turing-complete]: https://en.wikipedia.org/wiki/Turing_completeness +[language definition]: https://github.com/google/cel-spec/blob/v0.13.0/doc/langdef.md#language-definition +[macros]: https://github.com/google/cel-spec/blob/v0.13.0/doc/langdef.md#macros +[protobuf-ts-docs]: https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp diff --git a/docs/reference/notifications/images/email-publisher-alert-config.png b/docs/reference/notifications/images/email-publisher-alert-config.png new file mode 100644 index 0000000000000000000000000000000000000000..1766f983235f3ba2e2e4bd193120f4a7a366da8a GIT binary patch literal 81502 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%0Djzx@vw{0!mcywL_`_<>IB1<`w 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
%O&WhD*v~8@n1G>!t`+DV*nkl%S{jzAp*@+KLI! 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 R)?6>Al$hMhLXo%L{{xXEHFN*~ literal 0 HcmV?d00001 diff --git a/docs/reference/notifications/images/email-publisher-global-config.png b/docs/reference/notifications/images/email-publisher-global-config.png new file mode 100644 index 0000000000000000000000000000000000000000..818a7a8b5998d0823bfc0237e6f5fc3c5378fd35 GIT binary patch literal 44674 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 literal 0 HcmV?d00001 diff --git a/docs/reference/notifications/images/filter-expression-editor-error.png b/docs/reference/notifications/images/filter-expression-editor-error.png new file mode 100644 index 0000000000000000000000000000000000000000..1625e1e34eec7c81ed20c1c8310526698c324d07 GIT binary patch literal 30539 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 t{ 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 Dx%%tG literal 0 HcmV?d00001 diff --git a/docs/reference/notifications/images/jira-publisher-alert-config.png b/docs/reference/notifications/images/jira-publisher-alert-config.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa96daf383e7abfb5b41201d365791aecf9819e GIT binary patch literal 66928 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 aE=s*v>CUs*>pS^hGcmgSdx_zVhyMk;vGd&k literal 0 HcmV?d00001 diff --git a/docs/reference/notifications/images/jira-publisher-global-config.png b/docs/reference/notifications/images/jira-publisher-global-config.png new file mode 100644 index 0000000000000000000000000000000000000000..4c54124c6df814dce43b385e45d74cafff541b1b GIT binary patch literal 22231 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 literal 0 HcmV?d00001 diff --git a/docs/reference/notifications/images/kafka-publisher-alert-config.png b/docs/reference/notifications/images/kafka-publisher-alert-config.png new file mode 100644 index 0000000000000000000000000000000000000000..ecad8b136883b35081d0933c574925b25b655d19 GIT binary patch literal 71691 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 literal 0 HcmV?d00001 diff --git a/docs/reference/notifications/publishers.md b/docs/reference/notifications/publishers.md index c6046391..73a9ab95 100644 --- a/docs/reference/notifications/publishers.md +++ b/docs/reference/notifications/publishers.md @@ -1,4 +1,176 @@ -# Notification publishers +# Publishers -!!! warning "Placeholder" - This page has not been written yet. +## Console + +Publishes notifications by writing them to standard output. + +This publisher is intended for testing. It does not provide any configuration options. + +## Email + +Publishes notifications as emails. [SMTP] and [SMTPS] protocols are supported. + +### Global Config + +The global configuration defines how Dependency-Track connects to your email server. + +![Email publisher global config](images/email-publisher-global-config.png) + +### Alert Config {: #email-alert-config } + +The alert configuration defines the recipients of email notifications, +as well as an optional subject prefix. + +![Email publisher alert config](images/email-publisher-alert-config.png) + +In addition to listing recipient addresses explicitly, you can also specify +one or more teams as recipients. When teams are specified, emails will be sent +to all members of those teams. + +You can mix explicit recipient addresses and teams, but you must configure +*at least one* of the two. + +## Jira + +Publishes notifications by creating issues in an Atlassian Jira instance. + + +### Global Config {: #jira-global-config } + + +The global configuration defines how Dependency-Track connects to your Jira server. + +![Jira publisher global config](images/jira-publisher-global-config.png) + + +### Alert Config {: #jira-alert-config } + + +The alert configuration defines properties of the issues to create. + +![Jira publisher alert config](images/jira-publisher-alert-config.png) + +!!! note + Selecting teams as recipients has no effect for this publisher. + +## Kafka + +Publishes notifications by emitting records to an Apache Kafka cluster. + +### Global Config {: #kafka-global-config } + +The global configuration defines how Dependency-Track connects to your Kafka cluster. + +![Kafka publisher global config](images/kafka-publisher-global-config.png) + +!!! note "Configuring TLS" + When enabling TLS, you **must** provide the certificate of the certificate authority (CA) + that signed the certificate used by your Kafka brokers. It **must** be provided in + [PEM] format and **must not** be encrypted, that is, **not** password-protected. + +!!! note "Configuring mTLS" + When enabling [mutual TLS], you **must** provide a client certificate and key in [PEM] format. + Both **must not** be encrypted. The client key **must** be a [managed secret](../../guides/user/managing-secrets.md). + +!!! note "Default Producer Configs" + Dependency-Track applies the following [configs](https://kafka.apache.org/41/configuration/producer-configs/) + to the underlying Kafka producer by default: + + * [`compression.type`](https://kafka.apache.org/41/configuration/producer-configs/#producerconfigs_compression.type): `snappy` + * [`enable.idempotence`](https://kafka.apache.org/41/configuration/producer-configs/#producerconfigs_enable.idempotence): `true` + + +### Alert Config {: #kafka-alert-config } + + +The alert config defines the destination and format of Kafka records emitted by the publisher. + +![Kafka publisher alert config](images/kafka-publisher-alert-config.png) + +!!! note + Selecting teams as recipients has no effect for this publisher. + +!!! tip "Protobuf" + You are strongly encouraged to publish notifications in Protobuf format. + Dependency-Track ensures that changes to the Protobuf schema are backward-compatible, + which is crucial when notifications are stored in a durable log like Kafka. + +!!! warning "Templating" + The Kafka publisher does not ship with a default template, since it's meant to + be used with Protobuf. If you prefer a different payload format, you must configure + a custom template first. + +!!! tip "Record Keys" + If a notification's subject is a project, as is the case for groups like `BOM_CONSUMED`, + `NEW_VULNERABILITY` etc., then the Kafka record key will be the project's UUID. + If the notification's subject is *not* a project, the key will be `null`. + +## Mattermost + +Publishes notifications as Mattermost messages. + + +### Alert Config {: #mattermost-alert-config } + + +The alert config defines the destination of Mattermost messages. + +This should be the URL of an [incoming Webhook](https://docs.mattermost.com/integrations-guide/incoming-webhooks.html). + +!!! note + Selecting teams as recipients has no effect for this publisher. + +## Microsoft Teams + +Publishes notifications as Microsoft Teams messages. + +### Alert Config {: #teams-alert-config } + +The alert config defines the destination of Microsoft Teams messages. + +This should be the URL of an [incoming Webhook](https://learn.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook). + +!!! note + Selecting teams as recipients has no effect for this publisher. + +## Slack + +Publishes notifications as Slack messages. + +### Alert Config {: #slack-alert-config } + +The alert config defines the destination of Microsoft Teams messages. + +This should be the URL of an [incoming Webhook](https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks/). + +!!! note + Selecting teams as recipients has no effect for this publisher. + +## Webex + +Publishes notifications as Cisco Webex messages. + + +### Alert Config {: #webex-alert-config } + + +The alert config defines the destination of Microsoft Teams messages. + +This should be the URL of an [incoming Webhook](https://apphub.webex.com/applications/incoming-webhooks-cisco-systems-38054-23307-75252). + +!!! note + Selecting teams as recipients has no effect for this publisher. + +## Webhook + +Publishes notifications as Webhooks. + +### Alert Config {: #webhook-alert-config } + +!!! note + Selecting teams as recipients has no effect for this publisher. + +[PEM]: https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail +[SMTP]: https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol +[SMTPS]: https://en.wikipedia.org/wiki/SMTPS +[mutual TLS]: https://en.wikipedia.org/wiki/Mutual_authentication#mTLS diff --git a/docs/reference/permissions.md b/docs/reference/permissions.md index 209781b9..603120c0 100644 --- a/docs/reference/permissions.md +++ b/docs/reference/permissions.md @@ -1,4 +1,110 @@ # Permissions -!!! warning "Placeholder" - This page has not been written yet. +For background on how the access control model works (users, teams, ACLs), see +[Access control](../concepts/access-control.md). + +## Permissions + +Dependency-Track uses a two-level permission model. Coarse-grained permissions +(for example `PORTFOLIO_MANAGEMENT`) grant full access to a capability. Fine-grained +permissions (for example `PORTFOLIO_MANAGEMENT_CREATE`) allow restricting access to +specific operations. A coarse-grained permission implies all of its fine-grained +variants. + +### Portfolio + +| Permission | Description | +|:----------------------------------|:-----------------------------------------------------------------------| +| `BOM_UPLOAD` | Upload CycloneDX Software Bills of Materials. | +| `PROJECT_CREATION_UPLOAD` | Auto-create a project on BOM upload if it does not exist. | +| `VIEW_PORTFOLIO` | Read projects, components, licenses, the dependency graph, and metrics.| +| `PORTFOLIO_ACCESS_CONTROL_BYPASS` | Bypass portfolio access control, granting access to all projects. | +| `PORTFOLIO_MANAGEMENT` | Create, update, and delete projects and portfolio data. | +| `PORTFOLIO_MANAGEMENT_CREATE` | Create projects and portfolio data. | +| `PORTFOLIO_MANAGEMENT_READ` | Read portfolio data. | +| `PORTFOLIO_MANAGEMENT_UPDATE` | Update projects and portfolio data. | +| `PORTFOLIO_MANAGEMENT_DELETE` | Delete projects and portfolio data. | + +### Vulnerability analysis + +| Permission | Description | +|:----------------------------------|:---------------------------------------------------------------------------------| +| `VIEW_VULNERABILITY` | View vulnerabilities that affect projects. | +| `VULNERABILITY_ANALYSIS` | Make analysis decisions on vulnerabilities and manage VEX data. | +| `VULNERABILITY_ANALYSIS_CREATE` | Upload VEX documents to a project. | +| `VULNERABILITY_ANALYSIS_READ` | Read VEX documents for a project. | +| `VULNERABILITY_ANALYSIS_UPDATE` | Make analysis decisions on vulnerabilities and upload VEX documents. | + +### Vulnerability management + +| Permission | Description | +|:------------------------------------|:--------------------------------------------------------| +| `VULNERABILITY_MANAGEMENT` | Full management of internal vulnerabilities. | +| `VULNERABILITY_MANAGEMENT_CREATE` | Create internal vulnerabilities. | +| `VULNERABILITY_MANAGEMENT_READ` | Read internal vulnerabilities. | +| `VULNERABILITY_MANAGEMENT_UPDATE` | Update internal vulnerabilities and tags. | +| `VULNERABILITY_MANAGEMENT_DELETE` | Delete internal vulnerabilities. | + +### Policy management + +| Permission | Description | +|:------------------------------|:-----------------------------------------------------------------| +| `POLICY_MANAGEMENT` | Create, update, and delete policies, services, and license groups.| +| `POLICY_MANAGEMENT_CREATE` | Create policies. | +| `POLICY_MANAGEMENT_READ` | Read policies. | +| `POLICY_MANAGEMENT_UPDATE` | Update policies. | +| `POLICY_MANAGEMENT_DELETE` | Delete policies. | +| `POLICY_VIOLATION_ANALYSIS` | Make analysis decisions on policy violations. | +| `VIEW_POLICY_VIOLATION` | View policy violations across the portfolio. | + +### Access management + +| Permission | Description | +|:------------------------------|:--------------------------------------------------| +| `ACCESS_MANAGEMENT` | Manage users, teams, permissions, and API keys. | +| `ACCESS_MANAGEMENT_CREATE` | Create users, teams, and API keys. | +| `ACCESS_MANAGEMENT_READ` | Read users, teams, and API keys. | +| `ACCESS_MANAGEMENT_UPDATE` | Update users, teams, and API keys. | +| `ACCESS_MANAGEMENT_DELETE` | Delete users, teams, and API keys. | + +### System configuration + +| Permission | Description | +|:---------------------------------|:-------------------------------------------------------------------------------------| +| `SYSTEM_CONFIGURATION` | Full access to system configuration (notifications, repositories, email settings). | +| `SYSTEM_CONFIGURATION_CREATE` | Create system configuration entries. | +| `SYSTEM_CONFIGURATION_READ` | Read system configuration. | +| `SYSTEM_CONFIGURATION_UPDATE` | Update system configuration. | +| `SYSTEM_CONFIGURATION_DELETE` | Delete system configuration entries. | + +### Secret management + +| Permission | Description | +|:------------------------------|:----------------------------------| +| `SECRET_MANAGEMENT` | Full secret management access. | +| `SECRET_MANAGEMENT_CREATE` | Create secrets. | +| `SECRET_MANAGEMENT_UPDATE` | Update secrets. | +| `SECRET_MANAGEMENT_DELETE` | Delete secrets. | + +### Tags and badges + +| Permission | Description | +|:----------------------|:-----------------------------------------| +| `TAG_MANAGEMENT` | Update and delete tags. | +| `TAG_MANAGEMENT_DELETE`| Delete tags. | +| `VIEW_BADGES` | Retrieve SVG badge images for projects. | + +## Default teams + +Dependency-Track creates the following default teams on first startup: + +| Team | Purpose | +|:----------------|:----------------------------------------------------------------------------------------------------------------------------| +| Administrators | Full access. Used for initial setup and ongoing administration. Members receive all permissions. | +| Badge Viewers | Holds the `VIEW_BADGES` permission and a pre-created API key. Used for unauthenticated-style badge access via a shared key. | +| Portfolio Managers | Intended for users who manage projects and portfolios without needing administrative access. | +| Automation | Intended for CI/CD pipelines and automated tools. Typically holds `BOM_UPLOAD` and `PROJECT_CREATION_UPLOAD`. | + +!!! warning + Change the default API key on the **Badge Viewers** and **Automation** teams before + going to production. Default keys are predictable. Rotate them immediately. diff --git a/docs/reference/schemas/.pages b/docs/reference/schemas/.pages new file mode 100644 index 00000000..f82584aa --- /dev/null +++ b/docs/reference/schemas/.pages @@ -0,0 +1,3 @@ +nav: + - Notification Schema: notification.md + - Policy Schema: policy.md diff --git a/docs/reference/schemas/notification.md b/docs/reference/schemas/notification.md new file mode 100644 index 00000000..50f9e5f9 --- /dev/null +++ b/docs/reference/schemas/notification.md @@ -0,0 +1,1182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Notification + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `level` | [`Level`](#org-dependencytrack-notification-v1-Level) | | - | +| `scope` | [`Scope`](#org-dependencytrack-notification-v1-Scope) | | - | +| `group` | [`Group`](#org-dependencytrack-notification-v1-Group) | | - | +| `title` | `string` | | - | +| `content` | `string` | | - | +| `timestamp` | `google.protobuf.Timestamp` | | - | +| `subject` | `google.protobuf.Any` | | - | +| `id` | `string` | Unique identifier of the notification in UUIDv7 format. | - | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Subjects + + + + + + + + + + + +### BomConsumedOrProcessedSubject + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | | - | +| `bom` | [`Bom`](#org-dependencytrack-notification-v1-Bom) | | - | +| `token` | `string` | | - | + + + + + + + + + +### BomProcessingFailedSubject + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | | - | +| `bom` | [`Bom`](#org-dependencytrack-notification-v1-Bom) | | - | +| `cause` | `string` | | - | +| `token` | `string` | | - | + + + + + + + + + +### BomValidationFailedSubject + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | | - | +| `bom` | [`Bom`](#org-dependencytrack-notification-v1-Bom) | | - | +| `errors` | `string[]` | | - | + + + + + + + + + + + +### ComponentVulnAnalysisCompleteSubject + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `component` | [`Component`](#org-dependencytrack-notification-v1-Component) | | - | +| `vulnerabilities` | [`Vulnerability[]`](#org-dependencytrack-notification-v1-Vulnerability) | | - | + + + + + + + + + +### NewPolicyViolationsSummarySubject + +Subject for GROUP_NEW_POLICY_VIOLATIONS_SUMMARY notifications. + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `overview` | [`NewPolicyViolationsSummarySubject.Overview`](#org-dependencytrack-notification-v1-NewPolicyViolationsSummarySubject-Overview) | | - | +| `project_summaries` | [`NewPolicyViolationsSummarySubject.ProjectSummaryEntry[]`](#org-dependencytrack-notification-v1-NewPolicyViolationsSummarySubject-ProjectSummaryEntry) | | - | +| `violations_by_project` | [`NewPolicyViolationsSummarySubject.ProjectViolationsEntry[]`](#org-dependencytrack-notification-v1-NewPolicyViolationsSummarySubject-ProjectViolationsEntry) | | - | +| `since` | `google.protobuf.Timestamp` | | - | + + + + + + + + + + + + + + + + + + + + + + + + + +### NewVulnerabilitiesSummarySubject + +Subject for GROUP_NEW_VULNERABILITIES_SUMMARY notifications. + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `overview` | [`NewVulnerabilitiesSummarySubject.Overview`](#org-dependencytrack-notification-v1-NewVulnerabilitiesSummarySubject-Overview) | | - | +| `project_summaries` | [`NewVulnerabilitiesSummarySubject.ProjectSummaryEntry[]`](#org-dependencytrack-notification-v1-NewVulnerabilitiesSummarySubject-ProjectSummaryEntry) | | - | +| `findings_by_project` | [`NewVulnerabilitiesSummarySubject.ProjectFindingsEntry[]`](#org-dependencytrack-notification-v1-NewVulnerabilitiesSummarySubject-ProjectFindingsEntry) | | - | +| `since` | `google.protobuf.Timestamp` | | - | + + + + + + + + + + + + + + + + + + + + + + + + + +### NewVulnerabilitySubject + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `component` | [`Component`](#org-dependencytrack-notification-v1-Component) | | - | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | | - | +| `vulnerability` | [`Vulnerability`](#org-dependencytrack-notification-v1-Vulnerability) | | - | +| `affected_projects_reference` | [`BackReference`](#org-dependencytrack-notification-v1-BackReference) | | - | +| `vulnerability_analysis_level` | `string` | | - | +| `affected_projects` | [`Project[]`](#org-dependencytrack-notification-v1-Project) | List of projects affected by the vulnerability. DEPRECATED: This list only holds one item, and it is identical to the one in the project field. The field is kept for backward compatibility of JSON notifications, but consumers should not expect multiple projects here. Transmitting all affected projects in one notification is not feasible for large portfolios, see https://github.com/DependencyTrack/hyades/issues/467 for details. | - | +| `analysis_trigger` | [`AnalysisTrigger`](#org-dependencytrack-notification-v1-AnalysisTrigger) | The trigger of the analysis that identified the vulnerability. | - | + + + + + + + + + +### NewVulnerableDependencySubject + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `component` | [`Component`](#org-dependencytrack-notification-v1-Component) | | - | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | | - | +| `vulnerabilities` | [`Vulnerability[]`](#org-dependencytrack-notification-v1-Vulnerability) | | - | + + + + + + + + + + + + + + + + + + + +### PolicyViolationAnalysisDecisionChangeSubject + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `component` | [`Component`](#org-dependencytrack-notification-v1-Component) | | - | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | | - | +| `policy_violation` | [`PolicyViolation`](#org-dependencytrack-notification-v1-PolicyViolation) | | - | +| `analysis` | [`PolicyViolationAnalysis`](#org-dependencytrack-notification-v1-PolicyViolationAnalysis) | | - | + + + + + + + + + +### PolicyViolationSubject + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `component` | [`Component`](#org-dependencytrack-notification-v1-Component) | | - | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | | - | +| `policy_violation` | [`PolicyViolation`](#org-dependencytrack-notification-v1-PolicyViolation) | | - | + + + + + + + + + + + +### ProjectVulnAnalysisCompleteSubject + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | | - | +| `findings` | [`ComponentVulnAnalysisCompleteSubject[]`](#org-dependencytrack-notification-v1-ComponentVulnAnalysisCompleteSubject) | | - | +| `status` | [`ProjectVulnAnalysisStatus`](#org-dependencytrack-notification-v1-ProjectVulnAnalysisStatus) | | - | +| `token` | `string` | | - | + + + + + + + + + +### UserSubject + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `username` | `string` | | - | +| `email` | `string` | | - | + + + + + + + + + +### VexConsumedOrProcessedSubject + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | | - | +| `vex` | `bytes` | | - | +| `format` | `string` | | - | +| `spec_version` | `string` | | - | + + + + + + + + + + + + + + + + + +### VulnerabilityAnalysisDecisionChangeSubject + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `component` | [`Component`](#org-dependencytrack-notification-v1-Component) | | - | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | | - | +| `vulnerability` | [`Vulnerability`](#org-dependencytrack-notification-v1-Vulnerability) | | - | +| `analysis` | [`VulnerabilityAnalysis`](#org-dependencytrack-notification-v1-VulnerabilityAnalysis) | | - | + + + + + + + + + +### VulnerabilityRetractedSubject + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `component` | [`Component`](#org-dependencytrack-notification-v1-Component) | The component for which the vulnerability was previously reported. | - | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | The project for which the vulnerability was previously reported. | - | +| `vulnerability` | [`Vulnerability`](#org-dependencytrack-notification-v1-Vulnerability) | The previously reported vulnerability. | - | + + + + + + + +## Messages + + + + + + + +### BackReference + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `api_uri` | `string` | URI to the API endpoint from which additional information can be fetched. | - | +| `frontend_uri` | `string` | URI to the frontend where additional information can be seen. | - | + + + + + + + + + +### Bom + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `content` | `string` | | - | +| `format` | `string` | | - | +| `spec_version` | `string` | | - | + + + + + + + + + + + + + + + +### Component + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `uuid` | `string` | | - | +| `group` | `string` | | - | +| `name` | `string` | | - | +| `version` | `string` | | - | +| `purl` | `string` | | - | +| `md5` | `string` | | - | +| `sha1` | `string` | | - | +| `sha256` | `string` | | - | +| `sha512` | `string` | | - | + + + + + + + + + + + + + +### NewPolicyViolationsSummarySubject.Overview + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `affected_projects_count` | `int32` | | - | +| `affected_components_count` | `int32` | | - | +| `new_violations_count` | `int32` | | - | +| `new_violations_count_by_type` | [`NewPolicyViolationsSummarySubject.Overview.NewViolationsCountByTypeEntry[]`](#org-dependencytrack-notification-v1-NewPolicyViolationsSummarySubject-Overview-NewViolationsCountByTypeEntry) | | - | +| `suppressed_new_violations_count` | `int32` | | - | +| `total_new_violations_count` | `int32` | | - | + + + + + + + + + +### NewPolicyViolationsSummarySubject.Overview.NewViolationsCountByTypeEntry + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `key` | `string` | | - | +| `value` | `int32` | | - | + + + + + + + + + +### NewPolicyViolationsSummarySubject.ProjectSummaryEntry + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | | - | +| `new_violations_count_by_type` | [`NewPolicyViolationsSummarySubject.ProjectSummaryEntry.NewViolationsCountByTypeEntry[]`](#org-dependencytrack-notification-v1-NewPolicyViolationsSummarySubject-ProjectSummaryEntry-NewViolationsCountByTypeEntry) | | - | +| `suppressed_new_violations_count_by_type` | [`NewPolicyViolationsSummarySubject.ProjectSummaryEntry.SuppressedNewViolationsCountByTypeEntry[]`](#org-dependencytrack-notification-v1-NewPolicyViolationsSummarySubject-ProjectSummaryEntry-SuppressedNewViolationsCountByTypeEntry) | | - | +| `total_new_violations_count_by_type` | [`NewPolicyViolationsSummarySubject.ProjectSummaryEntry.TotalNewViolationsCountByTypeEntry[]`](#org-dependencytrack-notification-v1-NewPolicyViolationsSummarySubject-ProjectSummaryEntry-TotalNewViolationsCountByTypeEntry) | | - | + + + + + + + + + +### NewPolicyViolationsSummarySubject.ProjectSummaryEntry.NewViolationsCountByTypeEntry + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `key` | `string` | | - | +| `value` | `int32` | | - | + + + + + + + + + +### NewPolicyViolationsSummarySubject.ProjectSummaryEntry.SuppressedNewViolationsCountByTypeEntry + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `key` | `string` | | - | +| `value` | `int32` | | - | + + + + + + + + + +### NewPolicyViolationsSummarySubject.ProjectSummaryEntry.TotalNewViolationsCountByTypeEntry + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `key` | `string` | | - | +| `value` | `int32` | | - | + + + + + + + + + +### NewPolicyViolationsSummarySubject.ProjectViolationsEntry + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | | - | +| `violations` | [`NewPolicyViolationsSummarySubject.Violation[]`](#org-dependencytrack-notification-v1-NewPolicyViolationsSummarySubject-Violation) | | - | + + + + + + + + + +### NewPolicyViolationsSummarySubject.Violation + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `uuid` | `string` | | - | +| `component` | [`Component`](#org-dependencytrack-notification-v1-Component) | | - | +| `policy_condition` | [`PolicyCondition`](#org-dependencytrack-notification-v1-PolicyCondition) | | - | +| `type` | `string` | | - | +| `timestamp` | `google.protobuf.Timestamp` | | - | +| `analysis_state` | `string` | | - | +| `suppressed` | `bool` | | - | + + + + + + + + + + + +### NewVulnerabilitiesSummarySubject.Finding + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `component` | [`Component`](#org-dependencytrack-notification-v1-Component) | | - | +| `vulnerability` | [`Vulnerability`](#org-dependencytrack-notification-v1-Vulnerability) | | - | +| `analyzer_identity` | `string` | | - | +| `attributed_on` | `google.protobuf.Timestamp` | | - | +| `reference_url` | `string` | | - | +| `analysis_state` | `string` | | - | +| `suppressed` | `bool` | | - | + + + + + + + + + +### NewVulnerabilitiesSummarySubject.Overview + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `affected_projects_count` | `int32` | | - | +| `affected_components_count` | `int32` | | - | +| `new_vulnerabilities_count` | `int32` | | - | +| `new_vulnerabilities_count_by_severity` | [`NewVulnerabilitiesSummarySubject.Overview.NewVulnerabilitiesCountBySeverityEntry[]`](#org-dependencytrack-notification-v1-NewVulnerabilitiesSummarySubject-Overview-NewVulnerabilitiesCountBySeverityEntry) | | - | +| `suppressed_new_vulnerabilities_count` | `int32` | | - | +| `total_new_vulnerabilities_count` | `int32` | | - | + + + + + + + + + +### NewVulnerabilitiesSummarySubject.Overview.NewVulnerabilitiesCountBySeverityEntry + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `key` | `string` | | - | +| `value` | `int32` | | - | + + + + + + + + + +### NewVulnerabilitiesSummarySubject.ProjectFindingsEntry + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | | - | +| `findings` | [`NewVulnerabilitiesSummarySubject.Finding[]`](#org-dependencytrack-notification-v1-NewVulnerabilitiesSummarySubject-Finding) | | - | + + + + + + + + + +### NewVulnerabilitiesSummarySubject.ProjectSummaryEntry + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | | - | +| `new_vulnerabilities_count_by_severity` | [`NewVulnerabilitiesSummarySubject.ProjectSummaryEntry.NewVulnerabilitiesCountBySeverityEntry[]`](#org-dependencytrack-notification-v1-NewVulnerabilitiesSummarySubject-ProjectSummaryEntry-NewVulnerabilitiesCountBySeverityEntry) | | - | +| `suppressed_new_vulnerabilities_count_by_severity` | [`NewVulnerabilitiesSummarySubject.ProjectSummaryEntry.SuppressedNewVulnerabilitiesCountBySeverityEntry[]`](#org-dependencytrack-notification-v1-NewVulnerabilitiesSummarySubject-ProjectSummaryEntry-SuppressedNewVulnerabilitiesCountBySeverityEntry) | | - | +| `total_new_vulnerabilities_count_by_severity` | [`NewVulnerabilitiesSummarySubject.ProjectSummaryEntry.TotalNewVulnerabilitiesCountBySeverityEntry[]`](#org-dependencytrack-notification-v1-NewVulnerabilitiesSummarySubject-ProjectSummaryEntry-TotalNewVulnerabilitiesCountBySeverityEntry) | | - | + + + + + + + + + +### NewVulnerabilitiesSummarySubject.ProjectSummaryEntry.NewVulnerabilitiesCountBySeverityEntry + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `key` | `string` | | - | +| `value` | `int32` | | - | + + + + + + + + + +### NewVulnerabilitiesSummarySubject.ProjectSummaryEntry.SuppressedNewVulnerabilitiesCountBySeverityEntry + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `key` | `string` | | - | +| `value` | `int32` | | - | + + + + + + + + + +### NewVulnerabilitiesSummarySubject.ProjectSummaryEntry.TotalNewVulnerabilitiesCountBySeverityEntry + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `key` | `string` | | - | +| `value` | `int32` | | - | + + + + + + + + + + + + + + + +### Policy + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `uuid` | `string` | | - | +| `name` | `string` | | - | +| `violation_state` | `string` | | - | + + + + + + + + + +### PolicyCondition + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `uuid` | `string` | | - | +| `subject` | `string` | | - | +| `operator` | `string` | | - | +| `value` | `string` | | - | +| `policy` | [`Policy`](#org-dependencytrack-notification-v1-Policy) | | - | + + + + + + + + + +### PolicyViolation + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `uuid` | `string` | | - | +| `type` | `string` | | - | +| `timestamp` | `google.protobuf.Timestamp` | | - | +| `condition` | [`PolicyCondition`](#org-dependencytrack-notification-v1-PolicyCondition) | | - | + + + + + + + + + +### PolicyViolationAnalysis + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `component` | [`Component`](#org-dependencytrack-notification-v1-Component) | | - | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | | - | +| `policy_violation` | [`PolicyViolation`](#org-dependencytrack-notification-v1-PolicyViolation) | | - | +| `state` | `string` | | - | +| `suppressed` | `bool` | | - | + + + + + + + + + + + + + +### Project + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `uuid` | `string` | | - | +| `name` | `string` | | - | +| `version` | `string` | | - | +| `description` | `string` | | - | +| `purl` | `string` | | - | +| `tags` | `string[]` | | - | +| `is_active` | `bool` | | - | + + + + + + + + + + + + + + + +### Vulnerability + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `uuid` | `string` | | - | +| `vuln_id` | `string` | | - | +| `source` | `string` | | - | +| `aliases` | [`Vulnerability.Alias[]`](#org-dependencytrack-notification-v1-Vulnerability-Alias) | | - | +| `title` | `string` | | - | +| `sub_title` | `string` | | - | +| `description` | `string` | | - | +| `recommendation` | `string` | | - | +| `cvss_v2` | `double` | | - | +| `cvss_v3` | `double` | | - | +| `owasp_rr_likelihood` | `double` | | - | +| `owasp_rr_technical_impact` | `double` | | - | +| `owasp_rr_business_impact` | `double` | | - | +| `severity` | `string` | | - | +| `cwes` | [`Vulnerability.Cwe[]`](#org-dependencytrack-notification-v1-Vulnerability-Cwe) | | - | +| `cvss_v2_vector` | `string` | | - | +| `cvss_v3_vector` | `string` | | - | +| `owasp_rr_vector` | `string` | | - | +| `cvss_v4` | `double` | | - | +| `cvss_v4_vector` | `string` | | - | + + + + + + + + + +### Vulnerability.Alias + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `id` | `string` | | - | +| `source` | `string` | | - | + + + + + + + + + +### Vulnerability.Cwe + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `cwe_id` | `int32` | | - | +| `name` | `string` | | - | + + + + + + + + + +### VulnerabilityAnalysis + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `component` | [`Component`](#org-dependencytrack-notification-v1-Component) | | - | +| `project` | [`Project`](#org-dependencytrack-notification-v1-Project) | | - | +| `vulnerability` | [`Vulnerability`](#org-dependencytrack-notification-v1-Vulnerability) | | - | +| `state` | `string` | | - | +| `suppressed` | `bool` | | - | + + + + + + + + + + + +## Enums + + + + + + +### AnalysisTrigger + + + +| Name | Description | +| :--- | :---------- | +| `ANALYSIS_TRIGGER_UNSPECIFIED` | No trigger specified. | +| `ANALYSIS_TRIGGER_BOM_UPLOAD` | The analysis was triggered by a BOM upload. | +| `ANALYSIS_TRIGGER_SCHEDULE` | The analysis was triggered by a schedule. | +| `ANALYSIS_TRIGGER_MANUAL` | The analysis was triggered manually. | + + + + + + +### Group + + + +| Name | Description | +| :--- | :---------- | +| `GROUP_UNSPECIFIED` | | +| `GROUP_CONFIGURATION` | | +| `GROUP_DATASOURCE_MIRRORING` | | +| `GROUP_REPOSITORY` | | +| `GROUP_INTEGRATION` | | +| `GROUP_FILE_SYSTEM` | | +| `GROUP_ANALYZER` | | +| `GROUP_NEW_VULNERABILITY` | | +| `GROUP_NEW_VULNERABLE_DEPENDENCY` | | +| `GROUP_PROJECT_AUDIT_CHANGE` | | +| `GROUP_BOM_CONSUMED` | | +| `GROUP_BOM_PROCESSED` | | +| `GROUP_VEX_CONSUMED` | | +| `GROUP_VEX_PROCESSED` | | +| `GROUP_POLICY_VIOLATION` | | +| `GROUP_PROJECT_CREATED` | | +| `GROUP_BOM_PROCESSING_FAILED` | | +| `GROUP_PROJECT_VULN_ANALYSIS_COMPLETE` | | +| `GROUP_USER_CREATED` | | +| `GROUP_USER_DELETED` | | +| `GROUP_BOM_VALIDATION_FAILED` | | +| `GROUP_VULNERABILITY_RETRACTED` | A previously identified vulnerability is no longer applicable, +e.g. due to upstream sources correcting their data. | +| `GROUP_NEW_VULNERABILITIES_SUMMARY` | Scheduled summary of new vulnerabilities across projects. | +| `GROUP_NEW_POLICY_VIOLATIONS_SUMMARY` | Scheduled summary of new policy violations across projects. | + + + + + + +### Level + + + +| Name | Description | +| :--- | :---------- | +| `LEVEL_UNSPECIFIED` | | +| `LEVEL_INFORMATIONAL` | | +| `LEVEL_WARNING` | | +| `LEVEL_ERROR` | | + + + + + + +### ProjectVulnAnalysisStatus + + + +| Name | Description | +| :--- | :---------- | +| `PROJECT_VULN_ANALYSIS_STATUS_UNSPECIFIED` | | +| `PROJECT_VULN_ANALYSIS_STATUS_FAILED` | | +| `PROJECT_VULN_ANALYSIS_STATUS_COMPLETED` | | + + + + + + +### Scope + + + +| Name | Description | +| :--- | :---------- | +| `SCOPE_UNSPECIFIED` | | +| `SCOPE_PORTFOLIO` | | +| `SCOPE_SYSTEM` | | + + + diff --git a/docs/reference/schemas/policy.md b/docs/reference/schemas/policy.md new file mode 100644 index 00000000..c4f86ba8 --- /dev/null +++ b/docs/reference/schemas/policy.md @@ -0,0 +1,235 @@ +## Messages + + + + + + +### Component + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `uuid` | `string` | UUID of the component. | - | +| `group` | `string` | Group / namespace of the component. | - | +| `name` | `string` | Name of the component. | - | +| `version` | `string` | Version of the component. | - | +| `classifier` | `string` | Classifier / type of the component. May be any of: - APPLICATION - CONTAINER - DEVICE - FILE - FIRMWARE - FRAMEWORK - LIBRARY - OPERATING_SYSTEM | - | +| `cpe` | `string` | CPE of the component. https://csrc.nist.gov/projects/security-content-automation-protocol/specifications/cpe | - | +| `purl` | `string` | Package URL of the component. https://github.com/package-url/purl-spec | - | +| `swid_tag_id` | `string` | SWID tag ID of the component. https://csrc.nist.gov/projects/Software-Identification-SWID | - | +| `is_internal` | `bool` | Whether the component is internal to the organization. | - | +| `md5` | `string` | | - | +| `sha1` | `string` | | - | +| `sha256` | `string` | | - | +| `sha384` | `string` | | - | +| `sha512` | `string` | | - | +| `sha3_256` | `string` | | - | +| `sha3_384` | `string` | | - | +| `sha3_512` | `string` | | - | +| `blake2b_256` | `string` | | - | +| `blake2b_384` | `string` | | - | +| `blake2b_512` | `string` | | - | +| `blake3` | `string` | | - | +| `license_name` | `string` | | - | +| `license_expression` | `string` | | - | +| `resolved_license` | [`License`](#org-dependencytrack-policy-v1-License) | | - | +| `published_at` | `google.protobuf.Timestamp` | When the component current version last modified. | - | +| `latest_version` | `string` | | - | + + + + + + + +### License + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `uuid` | `string` | | - | +| `id` | `string` | | - | +| `name` | `string` | | - | +| `groups` | [`License.Group[]`](#org-dependencytrack-policy-v1-License-Group) | | - | +| `is_osi_approved` | `bool` | | - | +| `is_fsf_libre` | `bool` | | - | +| `is_deprecated_id` | `bool` | | - | +| `is_custom` | `bool` | | - | + + + + + + + +### License.Group + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `uuid` | `string` | | - | +| `name` | `string` | | - | + + + + + + + +### Project + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `uuid` | `string` | | - | +| `group` | `string` | | - | +| `name` | `string` | | - | +| `version` | `string` | | - | +| `classifier` | `string` | | - | +| `is_active` | `bool` | | - | +| `tags` | `string[]` | | - | +| `properties` | [`Project.Property[]`](#org-dependencytrack-policy-v1-Project-Property) | | - | +| `cpe` | `string` | | - | +| `purl` | `string` | | - | +| `swid_tag_id` | `string` | | - | +| `last_bom_import` | `google.protobuf.Timestamp` | | - | +| `metadata` | [`Project.Metadata`](#org-dependencytrack-policy-v1-Project-Metadata) | | - | + + + + + + + +### Project.Metadata + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `tools` | [`Tools`](#org-dependencytrack-policy-v1-Tools) | | - | +| `bom_generated` | `google.protobuf.Timestamp` | | - | + + + + + + + +### Project.Property + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `group` | `string` | | - | +| `name` | `string` | | - | +| `value` | `string` | | - | +| `type` | `string` | | - | + + + + + + + +### Tools + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `components` | [`Component[]`](#org-dependencytrack-policy-v1-Component) | Components used as tools. | - | + + + + + + + +### VersionDistance + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `epoch` | `string` | | - | +| `major` | `string` | | - | +| `minor` | `string` | | - | +| `patch` | `string` | | - | + + + + + + + +### Vulnerability + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `uuid` | `string` | | - | +| `id` | `string` | | - | +| `source` | `string` | | - | +| `aliases` | [`Vulnerability.Alias[]`](#org-dependencytrack-policy-v1-Vulnerability-Alias) | | - | +| `cwes` | `int32[]` | | - | +| `created` | `google.protobuf.Timestamp` | | - | +| `published` | `google.protobuf.Timestamp` | | - | +| `updated` | `google.protobuf.Timestamp` | | - | +| `severity` | `string` | | - | +| `cvssv2_base_score` | `double` | | - | +| `cvssv2_impact_subscore` | `double` | | - | +| `cvssv2_exploitability_subscore` | `double` | | - | +| `cvssv2_vector` | `string` | | - | +| `cvssv3_base_score` | `double` | | - | +| `cvssv3_impact_subscore` | `double` | | - | +| `cvssv3_exploitability_subscore` | `double` | | - | +| `cvssv3_vector` | `string` | | - | +| `owasp_rr_likelihood_score` | `double` | | - | +| `owasp_rr_technical_impact_score` | `double` | | - | +| `owasp_rr_business_impact_score` | `double` | | - | +| `owasp_rr_vector` | `string` | | - | +| `epss_score` | `double` | | - | +| `epss_percentile` | `double` | | - | +| `cvssv4_score` | `double` | | - | +| `cvssv4_vector` | `string` | | - | + + + + + + + +### Vulnerability.Alias + + + + +| Field | Type | Description | +| :---- | :--- | :---------- | +| `id` | `string` | | - | +| `source` | `string` | | - | + + + + + + + + diff --git a/docs/reference/vulnerability-policies.md b/docs/reference/vulnerability-policies.md new file mode 100644 index 00000000..01ae82a6 --- /dev/null +++ b/docs/reference/vulnerability-policies.md @@ -0,0 +1,159 @@ +# Vulnerability Policies + +For background on what vulnerability policies are and how evaluation works, see +[Concepts: Vulnerability Policies](../concepts/vulnerability-policies.md). +For step-by-step procedures, see +[Managing Vulnerability Policies](../guides/user/managing-vulnerability-policies.md). + +## Policy Sources + +| Source | How it is managed | Editable | +|:-------|:-----------------------------------------------------|:---------| +| User | Created and edited directly in Dependency-Track | Yes | +| Bundle | Synchronised from a remote ZIP archive of YAML files | No | + +Policy names are globally unique across user-managed and bundle-managed policies. + +## Operation Modes + +| Mode | Behaviour | +|:---------|:-----------------------------------------------------------------------------------------------------| +| Apply | Apply the analysis and ratings to the finding. This is the default. | +| Log | Record that the policy matched, but do not modify the finding. Useful for validating a new policy. | +| Disabled | The policy is not evaluated at all. | + +## Condition Variables + +Conditions use the same [Common Expression Language](./cel-expressions.md) syntax, functions, and variables +as standard policy expressions, with one exception: A vulnerability policy is scoped to a +single vulnerability, exposed as the `vuln` variable, rather than a list of vulnerabilities. + +| Variable | Type | Description | +|:------------|:------------------------------------------------|:--------------------------------------------| +| `vuln` | [Vulnerability] | The vulnerability being evaluated | +| `component` | [Component] | The component the vulnerability applies to | +| `project` | [Project] | The project the component belongs to | +| `now` | [`google.protobuf.Timestamp`][protobuf-ts-docs] | The current time at the start of evaluation | + +Because `vuln` is a single object rather than a list, constructs like `vulns.exists(...)` from +standard policies become direct field accesses such as `vuln.id == "CVE-2022-41852"`. Everything +else works identically, including [`matches_range`](./cel-expressions.md#matches_range), +[`is_dependency_of`](./cel-expressions.md#is_dependency_of), `has()`, and the full CEL standard library. +Refer to the [expressions reference](./cel-expressions.md) for the complete function list. + +## Analysis Fields + +When a policy matches in *Apply* mode, the following analysis fields are applied to the finding: + +* **State** (required). One of `EXPLOITABLE`, `IN_TRIAGE`, `FALSE_POSITIVE`, `NOT_AFFECTED`, `RESOLVED`. +* **Justification**. Only applicable when the state is `NOT_AFFECTED`. Follows the CycloneDX VEX values + (for example `CODE_NOT_REACHABLE`, `PROTECTED_BY_MITIGATING_CONTROL`). +* **Vendor response**. The response communicated to consumers (`CAN_NOT_FIX`, `WILL_NOT_FIX`, `UPDATE`, + `ROLLBACK`, `WORKAROUND_AVAILABLE`). +* **Details**. Free-form text explaining the analysis. +* **Suppress**. Whether to suppress the finding. + +## Ratings + +Up to three ratings may be attached to a policy. Each rating specifies a method (`CVSSv2`, `CVSSv3`, +`CVSSv4`, `OWASP`), a severity, and optionally a score and vector. + +## Bundle Configuration + +| Property | Description | +|:---------------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------| +| [`dt.vulnerability.policy.bundle.url`](./configuration/properties.md#dtvulnerabilitypolicybundleurl) | HTTP(S) URL of the bundle ZIP | +| [`dt.vulnerability.policy.bundle.auth.username`](./configuration/properties.md#dtvulnerabilitypolicybundleauthusername) | Basic-auth username | +| [`dt.vulnerability.policy.bundle.auth.password`](./configuration/properties.md#dtvulnerabilitypolicybundleauthpassword) | Basic-auth password | +| [`dt.vulnerability.policy.bundle.auth.bearer.token`](./configuration/properties.md#dtvulnerabilitypolicybundleauthbearertoken) | Bearer token, used when no basic-auth is configured | +| [`dt.task.vulnerability-policy-bundle-sync.cron`](./configuration/properties.md#dttaskvulnerability-policy-bundle-synccron) | Cron expression for the scheduled sync | + +## Bundle Layout + +A bundle is a plain ZIP archive of YAML files at the root. File names must end in `.yaml` or `.yml` and +must not start with `.` or `_`. Non-YAML files are ignored. + +```text +bundle.zip +├── cve-2022-41852.yaml +└── spring-cloud-suppressions.yaml +``` + +The following size limits apply: + +* The bundle ZIP must not exceed 10 MiB. +* It may contain at most 1000 entries. +* Each individual YAML file must not exceed 1 MiB. + +## Policy File Format + +Each YAML file contains a single policy. The schema is validated on every sync. If any policy in the bundle +fails to validate, the entire bundle is rejected and the database is left untouched. + +??? example "Example policy file: `cve-2022-41852.yaml`" + + ```yaml linenums="1" + apiVersion: v1.0 + type: Vulnerability Policy + name: Spring Cloud CVE-2022-41852 Suppression + description: |- + Suppresses occurrences of CVE-2022-41852 in commons-jxpath, + when commons-jxpath is introduced through Spring Cloud. + operationMode: APPLY + author: Jane Doe + condition: |- + vuln.id == "CVE-2022-41852" + && component.name == "commons-jxpath" + && component.is_dependency_of(v1.Component{ + group: "org.springframework.cloud", + version: "vers:maven/>3.1|<3.3" + }) + analysis: + state: NOT_AFFECTED + justification: CODE_NOT_REACHABLE + details: |- + It was determined that CVE-2022-41852 is not exploitable in Spring Cloud + components, because the vulnerable code is not used. + suppress: true + ``` + +| Field | Required | Description | +|:----------------|:---------|:-----------------------------------------------------------------------------| +| `apiVersion` | Yes | Schema version. Currently `v1.0`. | +| `type` | Yes | Must be the literal string `Vulnerability Policy`. | +| `name` | Yes | Globally unique policy name. | +| `description` | No | Short description, up to 512 characters. | +| `author` | No | Free-form author identifier. | +| `validFrom` | No | RFC 3339 timestamp. The policy is inactive before this instant. | +| `validUntil` | No | RFC 3339 timestamp. The policy is inactive after this instant. | +| `condition` | Yes | CEL expression. | +| `analysis` | Yes | Analysis to apply on match. See [Analysis Fields](#analysis-fields). | +| `ratings` | No | Up to 3 rating overrides. See [Ratings](#ratings). | +| `operationMode` | No | `APPLY` (default), `LOG`, or `DISABLED`. See [Operation Modes](#operation-modes). | +| `priority` | No | Integer between 0 and 100. Higher values are evaluated first. Defaults to 0. | + +## Sync Behaviour + +Each sync reconciles the bundle with the database: + +* Policies present in the bundle but absent from the database are *created*. +* Policies present in both are *updated* in place. +* Policies previously synced from the bundle but no longer present are *deleted*. Any analyses applied + by those policies are reset and an audit trail entry is recorded. +* User-managed policies are never touched, regardless of whether they appear in the bundle. + +A sync is aborted without any database changes when: + +* The bundle exceeds the size or entry limits. +* The ZIP is malformed, or the bundle file is not reachable. +* Any policy file fails schema validation or its CEL condition fails to compile. +* The bundle contains two policies with the same `name`. +* The bundle introduces a policy whose `name` already exists as a user-managed policy. + +The last failure reason is surfaced in the *Bundles* view so that operators can diagnose sync issues +without needing access to the server logs. + +[Component]: ./schemas/policy.md#component +[Project]: ./schemas/policy.md#project +[Vulnerability]: ./schemas/policy.md#vulnerability +[protobuf-ts-docs]: https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp