From b10eaf5feda3f3c35f24e467d79f562a6290cce3 Mon Sep 17 00:00:00 2001 From: Rieven Date: Tue, 7 Nov 2023 14:57:49 +0100 Subject: [PATCH 01/30] Fix table width at plugin detail page (#2003) Co-authored-by: Jan Klopper --- .../templates/partials/form/checkbox_group_table_form.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rocky/rocky/templates/partials/form/checkbox_group_table_form.html b/rocky/rocky/templates/partials/form/checkbox_group_table_form.html index e29462ca30c..43bf751422c 100644 --- a/rocky/rocky/templates/partials/form/checkbox_group_table_form.html +++ b/rocky/rocky/templates/partials/form/checkbox_group_table_form.html @@ -1,6 +1,6 @@ {% load i18n %} -
+ {% csrf_token %} {% if checkbox_group_table_form %} From 0ca386e574967bc60a7b255980e824433c20d40b Mon Sep 17 00:00:00 2001 From: Rieven Date: Thu, 9 Nov 2023 13:01:39 +0100 Subject: [PATCH 02/30] Task detail download now checks for organization (#1954) --- rocky/rocky/bytes_client.py | 7 ++-- rocky/rocky/locale/django.pot | 6 +++- rocky/rocky/views/bytes_raw.py | 17 ++++----- rocky/tests/conftest.py | 45 ++++++++++++++++++++++- rocky/tests/test_boefjes_tasks.py | 59 +++++++++++++++++++++++++++++++ 5 files changed, 120 insertions(+), 14 deletions(-) diff --git a/rocky/rocky/bytes_client.py b/rocky/rocky/bytes_client.py index 823332db261..0d55a8c2fc7 100644 --- a/rocky/rocky/bytes_client.py +++ b/rocky/rocky/bytes_client.py @@ -5,6 +5,7 @@ import requests from django.conf import settings +from django.http import Http404 from octopoes.api.models import Declaration from rocky.health import ServiceHealth @@ -121,7 +122,7 @@ def get_raw(self, raw_id: str) -> bytes: return response.content - def get_raw_metas(self, boefje_meta_id: str) -> List: + def get_raw_metas(self, boefje_meta_id: str, organization_code: str) -> List: # More than 100 raw files per Boefje run is very unlikely at this stage, but eventually we can start paginating raw_files_limit = 100 params = {"boefje_meta_id": boefje_meta_id, "limit": raw_files_limit, "organization": self.organization} @@ -130,7 +131,9 @@ def get_raw_metas(self, boefje_meta_id: str) -> List: response.raise_for_status() metas = response.json() - + metas = [raw_meta for raw_meta in metas if raw_meta["boefje_meta"]["organization"] == organization_code] + if not metas: + raise Http404 if len(metas) >= raw_files_limit: logger.warning("Reached raw file limit for current view.") diff --git a/rocky/rocky/locale/django.pot b/rocky/rocky/locale/django.pot index 46147a30503..6aca8d4f556 100644 --- a/rocky/rocky/locale/django.pot +++ b/rocky/rocky/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-06 13:48+0000\n" +"POT-Creation-Date: 2023-11-02 14:40+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -5328,6 +5328,10 @@ msgstr "" msgid "Upload raw" msgstr "" +#: rocky/views/bytes_raw.py +msgid "Getting raw data failed." +msgstr "" + #: rocky/views/finding_add.py msgid "Add Finding" msgstr "" diff --git a/rocky/rocky/views/bytes_raw.py b/rocky/rocky/views/bytes_raw.py index b5fdba988eb..dcd140fab9e 100644 --- a/rocky/rocky/views/bytes_raw.py +++ b/rocky/rocky/views/bytes_raw.py @@ -8,8 +8,8 @@ from django.contrib import messages from django.http import FileResponse, Http404 from django.shortcuts import redirect - -from rocky.bytes_client import get_bytes_client +from django.urls import reverse +from django.utils.translation import gettext_lazy as _ logger = logging.getLogger(__name__) @@ -17,24 +17,21 @@ class BytesRawView(OrganizationView): def get(self, request, **kwargs): try: - client = get_bytes_client(self.organization.code) - client.login() + self.bytes_client.login() boefje_meta_id = kwargs["boefje_meta_id"] - raw_metas = client.get_raw_metas(boefje_meta_id) - - raws = {raw_meta["id"]: client.get_raw(raw_meta["id"]) for raw_meta in raw_metas} + raw_metas = self.bytes_client.get_raw_metas(boefje_meta_id, self.organization.code) + raws = {raw_meta["id"]: self.bytes_client.get_raw(raw_meta["id"]) for raw_meta in raw_metas} return FileResponse( zip_data(raws, raw_metas), filename=f"{boefje_meta_id}.zip", ) except Http404 as e: - msg = "Getting raw data failed." + msg = _("Getting raw data failed.") logger.error(msg) logger.error(e) messages.add_message(request, messages.ERROR, msg) - - return redirect(request.META["HTTP_REFERER"]) + return redirect(reverse("task_list", kwargs={"organization_code": self.organization.code})) def zip_data(raws: Dict[str, bytes], raw_metas: List[Dict]) -> BytesIO: diff --git a/rocky/tests/conftest.py b/rocky/tests/conftest.py index 4ee423f5825..bc6169b3b49 100644 --- a/rocky/tests/conftest.py +++ b/rocky/tests/conftest.py @@ -357,7 +357,7 @@ def task() -> Task: ], }, "input_ooi": "Hostname|internet|mispo.es", - "organization": "_dev", + "organization": "test", }, }, "status": "completed", @@ -367,6 +367,49 @@ def task() -> Task: ) +@pytest.fixture +def bytes_raw_metas(): + return [ + { + "id": "85c01c8c-c0bf-4fe8-bda5-abdf2d03117c", + "boefje_meta": { + "id": "6dea9549-c05d-42c9-b55b-8ad54cb9e413", + "started_at": "2023-11-01T15:02:46.764085+00:00", + "ended_at": "2023-11-01T15:02:47.276154+00:00", + "boefje": {"id": "dns-sec", "version": None}, + "input_ooi": "Hostname|internet|mispoes.nl", + "arguments": {}, + "organization": "test", + "runnable_hash": "ed871e9731f3d528ea92ca23c8eb18f38ac47e6d89a634b654a073fc2ca5fb50", + "environment": {}, + }, + "mime_types": [ + {"value": "boefje/dns-sec"}, + {"value": "boefje/dns-sec-c90404f60aeacf9b254abbd250bd3214e3b1a65b5a883dcbc"}, + {"value": "dns-sec"}, + ], + "secure_hash": "sha512:23e40f3e0c4381b89a296a5708a3c7a2dff369dc272b5cbce584d0fd7e17b1a5ebb1a947" + "be36ed19e8930116a46be2f4b450353b786696f83c328f197a8ae741", + "signing_provider_url": None, + "hash_retrieval_link": "a9b261d1-e981-42db-bd92-ee0c36372678", + } + ] + + +@pytest.fixture +def bytes_get_raw(): + byte_string = ";; Number of trusted keys: 2\\n;; Chasing: mispoes.nl." + " A\\n\\n\\nDNSSEC Trust tree:\\nantagonist.nl. (A)\\n|---mispoes.nl. (DNSKEY keytag: 47684 alg: 13 flags:" + " 257)\\n |---mispoes.nl. (DS keytag: 47684 digest type: 2)\\n " + "|---nl. (DNSKEY keytag: 52707 alg: 13 flags: 256)\\n " + "|---nl. (DNSKEY keytag: 17153 alg: 13 flags: 257)\\n " + "|---nl. (DS keytag: 17153 digest type: 2)\\n " + "|---. (DNSKEY keytag: 46780 alg: 8 flags: 256)\\n " + b"|---. (DNSKEY keytag: 20326 alg: 8 flags: 257)\\n;; Chase successful\\n" + + return byte_string.encode() + + @pytest.fixture def lazy_task_list_with_boefje(task) -> MagicMock: mock = MagicMock() diff --git a/rocky/tests/test_boefjes_tasks.py b/rocky/tests/test_boefjes_tasks.py index 1059003528d..af78738b5bf 100644 --- a/rocky/tests/test_boefjes_tasks.py +++ b/rocky/tests/test_boefjes_tasks.py @@ -1,9 +1,12 @@ from http import HTTPStatus from unittest.mock import call +import pytest +from django.http import Http404 from pytest_django.asserts import assertContains from requests import HTTPError +from rocky.views.bytes_raw import BytesRawView from rocky.views.tasks import BoefjesTaskListView from tests.conftest import setup_request @@ -113,3 +116,59 @@ def test_reschedule_task_already_queued(rf, client_member, mocker, task): assert response.status_code == 302 assert list(request._messages)[0].message == "Task queue is full, please try again later." + + +def test_reschedule_task_from_other_org(rf, client_member, client_member_b, mocker, task): + mock_scheduler_client = mocker.patch("rocky.views.tasks.client") + mock_scheduler_client.get_task_details.return_value = task + + request = setup_request( + rf.post( + f"/en/{client_member.organization.code}/tasks/boefjes/?task_id={task.id}", + data={"action": "reschedule_task"}, + ), + client_member_b.user, + ) + with pytest.raises(Http404): + BoefjesTaskListView.as_view()(request, organization_code=client_member.organization.code) + + +def test_download_task_other_org_from_other_org_url( + rf, client_member, client_member_b, mock_bytes_client, bytes_raw_metas +): + with pytest.raises(Http404): + BytesRawView.as_view()( + setup_request(rf.get("bytes_raw"), client_member.user), + organization_code=client_member_b.organization.code, + boefje_meta_id=bytes_raw_metas[0]["id"], + ) + + +def test_download_task_same_org(rf, client_member, mock_bytes_client, bytes_raw_metas, bytes_get_raw): + mock_bytes_client().get_raw.return_value = bytes_get_raw + mock_bytes_client().get_raw_metas.return_value = bytes_raw_metas + + request = setup_request(rf.get("bytes_raw"), client_member.user) + + response = BytesRawView.as_view()( + request, + organization_code=client_member.organization.code, + boefje_meta_id=bytes_raw_metas[0]["id"], + ) + + assert response.status_code == 200 + + +def test_download_task_forbidden(rf, client_member, mock_bytes_client, bytes_raw_metas): + mock_bytes_client().get_raw_metas.side_effect = Http404 + + request = setup_request(rf.get("bytes_raw"), client_member.user) + + response = BytesRawView.as_view()( + request, + organization_code=client_member.organization.code, + boefje_meta_id=bytes_raw_metas[0]["id"], + ) + + assert response.status_code == 302 + assert list(request._messages)[0].message == "Getting raw data failed." From 68659f401ba985d00e4b737fd2de8d15a016f0d2 Mon Sep 17 00:00:00 2001 From: Roelof Korporaal Date: Thu, 9 Nov 2023 15:41:11 +0100 Subject: [PATCH 03/30] Add task details to object detail task history table and fix filtering bug (#2011) --- rocky/rocky/locale/django.pot | 51 +++++++++++-------- .../templates/partials/task_history.html | 35 +++++++++++++ rocky/rocky/views/ooi_detail.py | 18 ++++++- 3 files changed, 82 insertions(+), 22 deletions(-) diff --git a/rocky/rocky/locale/django.pot b/rocky/rocky/locale/django.pot index 6aca8d4f556..72a82c53edd 100644 --- a/rocky/rocky/locale/django.pot +++ b/rocky/rocky/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-02 14:40+0000\n" +"POT-Creation-Date: 2023-11-09 14:01+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1028,6 +1028,7 @@ msgstr "" #: rocky/templates/findings/finding_list.html #: rocky/templates/organizations/organization_crisis_room.html #: rocky/templates/partials/ooi_report_findings_block_table.html +#: rocky/templates/partials/task_history.html #: rocky/templates/tasks/partials/boefje_task_history.html #: rocky/templates/tasks/partials/normalizer_task_history.html msgid "Details" @@ -3613,6 +3614,7 @@ msgstr "" #: rocky/templates/crisis_room/crisis_room_findings_block.html #: rocky/templates/findings/finding_list.html #: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/task_history.html #: rocky/templates/tasks/partials/boefje_task_history.html #: rocky/templates/tasks/partials/normalizer_task_history.html msgid "Close details" @@ -3621,6 +3623,7 @@ msgstr "" #: rocky/templates/crisis_room/crisis_room_findings_block.html #: rocky/templates/findings/finding_list.html #: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/task_history.html #: rocky/templates/tasks/partials/boefje_task_history.html #: rocky/templates/tasks/partials/normalizer_task_history.html msgid "Open details" @@ -3854,6 +3857,8 @@ msgid "Crisis room" msgstr "" #: rocky/templates/header.html rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html #: rocky/views/task_detail.py rocky/views/tasks.py msgid "Tasks" msgstr "" @@ -4941,6 +4946,30 @@ msgstr "" msgid "Created date" msgstr "" +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Yielded objects" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/boefje_task_detail.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Download meta and raw data" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Reschedule" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Download task data" +msgstr "" + #: rocky/templates/scan.html msgid "Boefjes overview:" msgstr "" @@ -5001,12 +5030,6 @@ msgid "" "An overview of the boefje task, the input OOI and the RAW data it generated." msgstr "" -#: rocky/templates/tasks/boefje_task_detail.html -#: rocky/templates/tasks/partials/boefje_task_history.html -#: rocky/templates/tasks/partials/normalizer_task_history.html -msgid "Download meta and raw data" -msgstr "" - #: rocky/templates/tasks/boefje_task_detail.html msgid "Download meta data" msgstr "" @@ -5039,16 +5062,6 @@ msgstr "" msgid "Input Object" msgstr "" -#: rocky/templates/tasks/partials/boefje_task_history.html -#: rocky/templates/tasks/partials/normalizer_task_history.html -msgid "Reschedule" -msgstr "" - -#: rocky/templates/tasks/partials/boefje_task_history.html -#: rocky/templates/tasks/partials/normalizer_task_history.html -msgid "Download task data" -msgstr "" - #: rocky/templates/tasks/partials/normalizer_task_history.html msgid "Normalizer" msgstr "" @@ -5057,10 +5070,6 @@ msgstr "" msgid "Boefje input OOI" msgstr "" -#: rocky/templates/tasks/partials/normalizer_task_history.html -msgid "Yielded objects" -msgstr "" - #: rocky/templates/tasks/partials/tab_navigation.html msgid "List of tasks" msgstr "" diff --git a/rocky/rocky/templates/partials/task_history.html b/rocky/rocky/templates/partials/task_history.html index e46b899e775..ad63905fb85 100644 --- a/rocky/rocky/templates/partials/task_history.html +++ b/rocky/rocky/templates/partials/task_history.html @@ -63,6 +63,7 @@

{% translate "Tasks" %}

{% translate "Plugin" %} {% translate "Status" %} {% translate "Created date" %} + {% translate "Details" %} @@ -102,6 +103,40 @@

{% translate "Tasks" %}

{% endif %} {{ task.created_at }} + + + + + + + {% if task.type == "normalizer" %} +
+
+

{% translate "Yielded objects" %}

+
+
+
+ {% endif %} +
+
+ {% if task.status.value in "completed,failed" %} + {% translate "Download meta and raw data" %} + {% include "partials/single_action_form.html" with btn_text=_("Reschedule") btn_class="ghost" btn_icon="icon ti-refresh" action="reschedule_task" key="task_id" value=task.id %} + + {% else %} + {% translate "Download task data" %} + {% endif %} +
+
+ {% endfor %} diff --git a/rocky/rocky/views/ooi_detail.py b/rocky/rocky/views/ooi_detail.py index 125082092c8..b7d3f988f57 100644 --- a/rocky/rocky/views/ooi_detail.py +++ b/rocky/rocky/views/ooi_detail.py @@ -1,4 +1,5 @@ import json +import uuid from collections import defaultdict from datetime import datetime, timezone from enum import Enum @@ -18,10 +19,12 @@ from tools.forms.ooi import PossibleBoefjesFilterForm from tools.models import Indemnification from tools.ooi_helpers import format_display +from tools.view_helpers import schedule_task from octopoes.models import OOI, Reference from octopoes.models.ooi.question import Question from rocky import scheduler +from rocky.scheduler import client from rocky.views.ooi_detail_related_object import OOIFindingManager, OOIRelatedObjectAddView from rocky.views.ooi_view import BaseOOIDetailView @@ -29,6 +32,7 @@ class PageActions(Enum): START_SCAN = "start_scan" SUBMIT_ANSWER = "submit_answer" + RESCHEDULE_TASK = "reschedule_task" class OOIDetailView( @@ -58,6 +62,18 @@ def post(self, request, *args, **kwargs): def handle_page_action(self, action: str) -> bool: try: + if action == PageActions.RESCHEDULE_TASK.value: + task_id = self.request.POST.get("task_id") + task = client.get_task_details(task_id) + + # TODO: Consistent UUID-parsing across services https://github.com/minvws/nl-kat-coordination/issues/1451 + new_id = uuid.uuid4() + + task.p_item.id = new_id + task.p_item.data.id = new_id + + schedule_task(self.request, self.organization.code, task.p_item) + if action == PageActions.START_SCAN.value: boefje_id = self.request.POST.get("boefje_id") ooi_id = self.request.GET.get("ooi_id") @@ -108,7 +124,7 @@ def get_task_history(self) -> Page: # FIXME: in context of ooi detail is doesn't make sense to search # for an object name, so we search on plugin id - plugin_id = self.request.GET.get("task_history_search") + plugin_id = self.request.GET.get("task_history_search") or None page = int(self.request.GET.get("task_history_page", 1)) From 39a8f968e6802dad38a41bea8c019a14a00a8716 Mon Sep 17 00:00:00 2001 From: Jan Klopper Date: Thu, 9 Nov 2023 16:10:21 +0100 Subject: [PATCH 04/30] Tighten CSP base_uri to 'self' (#2021) Co-authored-by: Jeroen Dekkers --- rocky/rocky/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rocky/rocky/settings.py b/rocky/rocky/settings.py index d8943f2c9ec..d0bc0b366b7 100644 --- a/rocky/rocky/settings.py +++ b/rocky/rocky/settings.py @@ -391,7 +391,7 @@ def immutable_file_test(path, url): CSP_FONT_SRC = ["'self'"] CSP_STYLE_SRC = ["'self'"] CSP_FRAME_ANCESTORS = ["'none'"] -CSP_BASE = ["'none'"] +CSP_BASE_URI = ["'none'"] CSP_FORM_ACTION = ["'self'"] CSP_INCLUDE_NONCE_IN = ["script-src"] CSP_CONNECT_SRC = ["'self'"] From 089f63e9f7f7917f7a494b0c2dded9b50787cfe7 Mon Sep 17 00:00:00 2001 From: JP Bruins Slot Date: Fri, 10 Nov 2023 12:11:25 +0100 Subject: [PATCH 05/30] Scheduler optimizations implementation (#1999) Co-authored-by: ammar92 --- mula/scheduler/app.py | 25 ++-- mula/scheduler/config/settings.py | 36 ++++- mula/scheduler/connectors/services/bytes.py | 10 +- .../connectors/services/katalogus.py | 4 +- .../scheduler/connectors/services/octopoes.py | 3 +- .../scheduler/connectors/services/services.py | 21 ++- mula/scheduler/context/context.py | 9 +- mula/tests/integration/test_services.py | 4 + mula/tests/scripts/__init__.py | 0 mula/tests/scripts/load.py | 123 ++++++++++++++++++ 10 files changed, 206 insertions(+), 29 deletions(-) create mode 100644 mula/tests/scripts/__init__.py create mode 100644 mula/tests/scripts/load.py diff --git a/mula/scheduler/app.py b/mula/scheduler/app.py index f29331c2461..3bbe5c2149b 100644 --- a/mula/scheduler/app.py +++ b/mula/scheduler/app.py @@ -175,22 +175,23 @@ def collect_metrics(self) -> None: This method that allows to collect metrics throughout the application. """ - for s in self.schedulers.values(): - self.ctx.metrics_qsize.labels( - scheduler_id=s.scheduler_id, - ).set( - s.queue.qsize(), - ) - - status_counts = self.ctx.datastores.task_store.get_status_counts(s.scheduler_id) - for status, count in status_counts.items(): - self.ctx.metrics_task_status_counts.labels( + with self.lock: + for s in self.schedulers.values(): + self.ctx.metrics_qsize.labels( scheduler_id=s.scheduler_id, - status=status, ).set( - count, + s.queue.qsize(), ) + status_counts = self.ctx.datastores.task_store.get_status_counts(s.scheduler_id) + for status, count in status_counts.items(): + self.ctx.metrics_task_status_counts.labels( + scheduler_id=s.scheduler_id, + status=status, + ).set( + count, + ) + def run(self) -> None: """Start the main scheduler application, and run in threads the following processes: diff --git a/mula/scheduler/config/settings.py b/mula/scheduler/config/settings.py index e7b4b7e6bf3..34943f05622 100644 --- a/mula/scheduler/config/settings.py +++ b/mula/scheduler/config/settings.py @@ -76,11 +76,6 @@ class Settings(BaseSettings): ) # Application settings - katalogus_cache_ttl: int = Field( - 30, - description="The lifetime of the katalogus cache in seconds", - ) - monitor_organisations_interval: int = Field( 60, description="Interval in seconds of the execution of the " @@ -90,11 +85,42 @@ class Settings(BaseSettings): "their schedulers.", ) + # External services settings octopoes_request_timeout: int = Field( 10, description="The timeout in seconds for the requests to the octopoes api", ) + octopoes_pool_connections: int = Field( + 10, + description="The maximum number of connections to save in the pool for the octopoes api", + ) + + katalogus_cache_ttl: int = Field( + 30, + description="The lifetime of the katalogus cache in seconds", + ) + + katalogus_request_timeout: int = Field( + 10, + description="The timeout in seconds for the requests to the katalogus api", + ) + + katalogus_pool_connections: int = Field( + 10, + description="The maximum number of connections to save in the pool for the katalogus api", + ) + + bytes_request_timeout: int = Field( + 10, + description="The timeout in seconds for the requests to the bytes api", + ) + + bytes_pool_connections: int = Field( + 10, + description="The maximum number of connections to save in the pool for the bytes api", + ) + rabbitmq_prefetch_count: int = Field( 100, description="RabbitMQ prefetch_count for `channel.basic_qos()`, " diff --git a/mula/scheduler/connectors/services/bytes.py b/mula/scheduler/connectors/services/bytes.py index 9f2084285aa..2a72b6f37e8 100644 --- a/mula/scheduler/connectors/services/bytes.py +++ b/mula/scheduler/connectors/services/bytes.py @@ -1,3 +1,4 @@ +import threading import typing from functools import wraps from typing import Any, Callable, Dict, Optional @@ -33,7 +34,7 @@ class Bytes(HTTPService): name = "bytes" - def __init__(self, host: str, source: str, user: str, password: str, timeout: int = 5): + def __init__(self, host: str, source: str, user: str, password: str, timeout: int, pool_connections: int): """Initialize the Bytes service. Args: @@ -48,10 +49,13 @@ def __init__(self, host: str, source: str, user: str, password: str, timeout: in "password": password, } - super().__init__(host=host, source=source, timeout=timeout) + self.lock: threading.Lock = threading.Lock() + + super().__init__(host, source, timeout, pool_connections) def login(self) -> None: - self.headers.update({"Authorization": f"bearer {self.get_token()}"}) + with self.lock: + self.headers.update({"Authorization": f"bearer {self.get_token()}"}) @staticmethod def _verify_response(response: requests.Response) -> None: diff --git a/mula/scheduler/connectors/services/katalogus.py b/mula/scheduler/connectors/services/katalogus.py index d8eeb3bcb57..bdd109bbab2 100644 --- a/mula/scheduler/connectors/services/katalogus.py +++ b/mula/scheduler/connectors/services/katalogus.py @@ -12,8 +12,8 @@ class Katalogus(HTTPService): name = "katalogus" - def __init__(self, host: str, source: str, timeout: int = 5, cache_ttl: int = 30): - super().__init__(host, source, timeout) + def __init__(self, host: str, source: str, timeout: int, pool_connections: int, cache_ttl: int = 30): + super().__init__(host, source, timeout, pool_connections) # For every organisation we cache its plugins, it references the # plugin-id as key and the plugin as value. diff --git a/mula/scheduler/connectors/services/octopoes.py b/mula/scheduler/connectors/services/octopoes.py index 5d70d7c2141..08658c7a9c5 100644 --- a/mula/scheduler/connectors/services/octopoes.py +++ b/mula/scheduler/connectors/services/octopoes.py @@ -17,10 +17,11 @@ def __init__( host: str, source: str, orgs: List[Organisation], + pool_connections: int, timeout: int = 10, ): self.orgs: List[Organisation] = orgs - super().__init__(host, source, timeout) + super().__init__(host, source, timeout, pool_connections) @exception_handler def get_objects_by_object_types( diff --git a/mula/scheduler/connectors/services/services.py b/mula/scheduler/connectors/services/services.py index fc3b29753e6..8024e6f7846 100644 --- a/mula/scheduler/connectors/services/services.py +++ b/mula/scheduler/connectors/services/services.py @@ -38,7 +38,14 @@ class HTTPService(Connector): name: Optional[str] = None health_endpoint: Optional[str] = "health" - def __init__(self, host: str, source: str, timeout: int = 5, retries: int = 5): + def __init__( + self, + host: str, + source: str, + timeout: int = 10, + pool_connections: int = 10, + retries: int = 5, + ): """Initializer of the HTTPService class. During initialization the host will be checked if it is available and healthy. @@ -51,6 +58,8 @@ def __init__(self, host: str, source: str, timeout: int = 5, retries: int = 5): from where the requests came from. timeout: An integer defining the timeout of requests. + pool_connections: + The number of connections kept alive in the pool. retries: An integer defining the number of retries to make before giving up. @@ -61,7 +70,8 @@ def __init__(self, host: str, source: str, timeout: int = 5, retries: int = 5): self.session: requests.Session = requests.Session() self.host: str = host self.timeout: int = timeout - self.retries = retries + self.retries: int = retries + self.pool_connections: int = pool_connections self.source: str = source max_retries = Retry( @@ -69,8 +79,11 @@ def __init__(self, host: str, source: str, timeout: int = 5, retries: int = 5): backoff_factor=0.1, status_forcelist=[500, 502, 503, 504], ) - self.session.mount("http://", HTTPAdapter(max_retries=max_retries)) - self.session.mount("https://", HTTPAdapter(max_retries=max_retries)) + + # Mount the HTTPAdapter to the session + http_adapter = HTTPAdapter(max_retries=max_retries, pool_connections=self.pool_connections) + self.session.mount("http://", http_adapter) + self.session.mount("https://", http_adapter) if self.source: self.headers["User-Agent"] = self.source diff --git a/mula/scheduler/context/context.py b/mula/scheduler/context/context.py index a5090124ace..a59688551d0 100644 --- a/mula/scheduler/context/context.py +++ b/mula/scheduler/context/context.py @@ -45,21 +45,26 @@ def __init__(self) -> None: katalogus_service = services.Katalogus( host=remove_trailing_slash(str(self.config.host_katalogus)), source=f"scheduler/{scheduler.__version__}", + timeout=self.config.katalogus_request_timeout, + pool_connections=self.config.katalogus_pool_connections, cache_ttl=self.config.katalogus_cache_ttl, ) bytes_service = services.Bytes( host=remove_trailing_slash(str(self.config.host_bytes)), + source=f"scheduler/{scheduler.__version__}", user=self.config.host_bytes_user, password=self.config.host_bytes_password, - source=f"scheduler/{scheduler.__version__}", + timeout=self.config.bytes_request_timeout, + pool_connections=self.config.bytes_pool_connections, ) octopoes_service = services.Octopoes( host=remove_trailing_slash(str(self.config.host_octopoes)), source=f"scheduler/{scheduler.__version__}", - orgs=katalogus_service.get_organisations(), timeout=self.config.octopoes_request_timeout, + pool_connections=self.config.octopoes_pool_connections, + orgs=katalogus_service.get_organisations(), ) # Register external services, SimpleNamespace allows us to use dot diff --git a/mula/tests/integration/test_services.py b/mula/tests/integration/test_services.py index 29324d6aa95..ba92d5a30fa 100644 --- a/mula/tests/integration/test_services.py +++ b/mula/tests/integration/test_services.py @@ -16,6 +16,8 @@ def setUp(self) -> None: host=remove_trailing_slash(str(self.config.host_bytes)), user=self.config.host_bytes_user, password=self.config.host_bytes_password, + timeout=self.config.bytes_request_timeout, + pool_connections=self.config.bytes_pool_connections, source="scheduler_test", ) @@ -54,6 +56,8 @@ def setUp(self) -> None: self.service_katalogus = services.Katalogus( host=remove_trailing_slash(str(self.config.host_katalogus)), source="scheduler_test", + timeout=self.config.katalogus_request_timeout, + pool_connections=self.config.katalogus_pool_connections, cache_ttl=12345, ) diff --git a/mula/tests/scripts/__init__.py b/mula/tests/scripts/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/mula/tests/scripts/load.py b/mula/tests/scripts/load.py new file mode 100644 index 00000000000..ef08a91114c --- /dev/null +++ b/mula/tests/scripts/load.py @@ -0,0 +1,123 @@ +import csv +import uuid +from datetime import datetime, timezone +from pathlib import Path +from typing import Any, Dict, List + +import requests + +OCTOPOES_API = "http://localhost:8001" +KATALOGUS_API = "http://localhost:8003" +SCHEDULER_API = "http://localhost:8004" + + +def run(): + # Create organisations + orgs: List[Dict[str, Any]] = [] + for n in range(1, 10): + org = { + "id": f"org-{n}", + "name": f"Organisation {n}", + } + orgs.append(org) + + resp_katalogus = requests.post( + url=f"{KATALOGUS_API}/v1/organisations/", + json=org, + ) + + try: + resp_katalogus.raise_for_status() + except requests.exceptions.HTTPError: + if resp_katalogus.status_code != 404: + print("Error creating organisation ", org) + raise + + if resp_katalogus.status_code == 404: + print("Organisation already exists in katalogus", org) + + try: + requests.post( + url=f"{OCTOPOES_API}/{org.get('id')}/node/", + ) + except requests.exceptions.HTTPError: + print("Error creating organisation ", org) + raise + + print("Created organisation ", org) + + # Enable boefjes for organisation + boefjes = ("dns-records", "dns-sec", "dns-zone") + for boefje_id in boefjes: + resp_enable_boefje = requests.patch( + url=f"{KATALOGUS_API}/v1/organisations/{org.get('id')}/repositories/LOCAL/plugins/{boefje_id}", + json={"enabled": True}, + ) + + try: + resp_enable_boefje.raise_for_status() + except requests.exceptions.HTTPError: + print("Error enabling boefje ", boefje_id) + raise + + print("Enabled boefje ", boefje_id) + + declarations: List[Dict[str, Any]] = [] + with Path("data.csv").open(newline="") as csv_file: + csv_reader = csv.DictReader(csv_file, delimiter=",", quotechar='"') + for row in csv_reader: + name = row["name"] + declaration = { + "ooi": { + "object_type": "Hostname", + "primary_key": f"Hostname|internet|{name}", + "network": "Network|internet", + "name": f"{name}", + "dns_zone": None, + "scan_profile": { + "scan_profile_type": "declared", + "level": 1, + "reference": f"Hostname|internet|{name}", + }, + }, + "valid_time": datetime.now(timezone.utc).isoformat(), + "method": None, + "task_id": str(uuid.uuid4()), + } + declarations.append(declaration) + + for org in orgs: + for declaration in declarations: + resp_octopoes_decl = requests.post(f"{OCTOPOES_API}/{org.get('id')}/declarations", json=declaration) + + try: + resp_octopoes_decl.raise_for_status() + except requests.exceptions.HTTPError: + print("Error creating declaration ", declaration) + print(resp_octopoes_decl.text) + raise + + print("Org", org.get("id"), "created declaration ", declaration) + + resp_octopoes_scan_profile = requests.put( + url=f"{OCTOPOES_API}/{org.get('id')}/scan_profiles", + params={"valid_time": datetime.now(timezone.utc)}, + json={ + "scan_profile_type": "declared", + "reference": declaration.get("ooi").get("scan_profile").get("reference"), + "level": declaration.get("ooi").get("scan_profile").get("level"), + }, + ) + + try: + resp_octopoes_scan_profile.raise_for_status() + except requests.exceptions.HTTPError: + print("Error creating scan profile", declaration.get("ooi").get("scan_profile")) + print(resp_octopoes_scan_profile.text) + raise + + print("Org {org.get('id')} created scan profile", declaration.get("ooi").get("scan_profile")) + + +if __name__ == "__main__": + run() From 41257c87ba96ec266f8c1369c728ee5ee9a590a5 Mon Sep 17 00:00:00 2001 From: stephanie0x00 <9821756+stephanie0x00@users.noreply.github.com> Date: Fri, 10 Nov 2023 12:35:38 +0100 Subject: [PATCH 06/30] Create api.rst (#2013) Co-authored-by: ammar92 Co-authored-by: Jan Klopper --- docs/source/modules/api.rst | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 docs/source/modules/api.rst diff --git a/docs/source/modules/api.rst b/docs/source/modules/api.rst new file mode 100644 index 00000000000..9c6f27a9146 --- /dev/null +++ b/docs/source/modules/api.rst @@ -0,0 +1,4 @@ +API +The API is used to query the status of tasks within OpenKAT. By querying a task identifier you can see if the task has completed or failed. In the future the API can be used to create your own boefjes. + +Boefjes receive their task input and save their output using REST APIs. From 37ff3b7c90fe519860db820471beb0edaf6abfd7 Mon Sep 17 00:00:00 2001 From: stephanie0x00 <9821756+stephanie0x00@users.noreply.github.com> Date: Fri, 10 Nov 2023 12:39:16 +0100 Subject: [PATCH 07/30] Update boefjes.md (#2016) Co-authored-by: Jan Klopper --- docs/source/developer_documentation/boefjes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/developer_documentation/boefjes.md b/docs/source/developer_documentation/boefjes.md index 54ced33d2cd..6df07a3a578 100644 --- a/docs/source/developer_documentation/boefjes.md +++ b/docs/source/developer_documentation/boefjes.md @@ -3,7 +3,7 @@ This module has several entry points discussed below, but let us first consider the prerequisites and scope. If you already have running setup and want to learn where each bit of functionality goes, read the following page: -[Developing Openkat Plugins](README.md#your-first-boefje) +[Developing Openkat Plugins]([https://docs.openkat.nl/introduction/makeyourown.html]) ## Prerequisites From 7e6fa2b27bd48a44a8ae7720bbc73534f0566bc1 Mon Sep 17 00:00:00 2001 From: JP Bruins Slot Date: Fri, 10 Nov 2023 15:57:48 +0100 Subject: [PATCH 08/30] Resolving potential redundant bytes login calls (#2019) Co-authored-by: ammar92 Co-authored-by: Jan Klopper --- boefjes/boefjes/job_handler.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/boefjes/boefjes/job_handler.py b/boefjes/boefjes/job_handler.py index 7d23e234471..23f6ad8c2ff 100644 --- a/boefjes/boefjes/job_handler.py +++ b/boefjes/boefjes/job_handler.py @@ -27,6 +27,7 @@ from octopoes.models.types import OOIType logger = logging.getLogger(__name__) + bytes_api_client = BytesAPIClient( settings.bytes_api, username=settings.bytes_username, @@ -153,7 +154,6 @@ def handle(self, boefje_meta: BoefjeMeta) -> None: boefje_meta.ended_at = datetime.now(timezone.utc) logger.info("Saving to Bytes for boefje %s[%s]", boefje_meta.boefje.id, str(boefje_meta.id)) - bytes_api_client.login() bytes_api_client.save_boefje_meta(boefje_meta) if boefje_results: @@ -175,7 +175,6 @@ def __init__(self, job_runner): def handle(self, normalizer_meta: NormalizerMeta) -> None: logger.info("Handling normalizer %s[%s]", normalizer_meta.normalizer.id, normalizer_meta.id) - bytes_api_client.login() raw = bytes_api_client.get_raw(normalizer_meta.raw_data.id) normalizer_meta.started_at = datetime.now(timezone.utc) From c59fee1653a8de0372ea48cf67f8d50b96ad7952 Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Mon, 13 Nov 2023 09:29:44 +0100 Subject: [PATCH 09/30] Switch default to granian (#1987) Co-authored-by: ammar92 Co-authored-by: Jan Klopper --- rocky/Dockerfile | 2 +- rocky/debian/kat-rocky.service | 3 +-- rocky/debian/postinst | 17 ++++++----------- rocky/entrypoint.sh | 6 +----- 4 files changed, 9 insertions(+), 19 deletions(-) diff --git a/rocky/Dockerfile b/rocky/Dockerfile index d13f512f702..255f1c43b7f 100644 --- a/rocky/Dockerfile +++ b/rocky/Dockerfile @@ -69,4 +69,4 @@ RUN export SECRET_KEY="secret" BYTES_API="http://bytes:8000" BYTES_PASSWORD="pas USER rocky -CMD ["uwsgi", "--ini", "uwsgi.ini", "--wsgi-file", "rocky/wsgi.py"] +CMD ["granian", "--interface", "wsgi", "rocky.wsgi:application", "--host", "0.0.0.0"] diff --git a/rocky/debian/kat-rocky.service b/rocky/debian/kat-rocky.service index 1430ffa7623..6bebab0c8ba 100644 --- a/rocky/debian/kat-rocky.service +++ b/rocky/debian/kat-rocky.service @@ -9,12 +9,11 @@ SyslogIdentifier=kat-rocky WorkingDirectory=/opt/venvs/kat-rocky/ EnvironmentFile=/usr/lib/kat/rocky.defaults EnvironmentFile=/etc/kat/rocky.conf -ExecStart=/opt/venvs/kat-rocky/bin/uwsgi --ini /etc/kat/rocky.uwsgi.ini +ExecStart=/opt/venvs/kat-rocky/bin/granian --interface wsgi rocky.wsgi:application Restart=on-failure RestartSec=3s KillSignal=SIGQUIT KillMode=mixed -Type=notify NotifyAccess=all [Install] diff --git a/rocky/debian/postinst b/rocky/debian/postinst index c7dbaad5496..6a616d82503 100755 --- a/rocky/debian/postinst +++ b/rocky/debian/postinst @@ -9,19 +9,14 @@ if [ "$1" = "configure" ]; then # Set SECRET_KEY if empty key=$(tr -dc A-Za-z0-9 < /dev/urandom | head -c 64) sed -i "s/SECRET_KEY= *\$/SECRET_KEY=${key}/" /etc/kat/rocky.conf - - # Only configure granian for new installs. Existing installations will - # switch in the next release. - mkdir -p /etc/systemd/system/kat-rocky.service.d - cat > /etc/systemd/system/kat-rocky.service.d/use-granian.conf << EOF -# Do not customize this file because it will be automatically removed in the next release -[Service] -ExecStart= -ExecStart=/opt/venvs/kat-rocky/bin/granian --interface wsgi rocky.wsgi:application -Type=simple -EOF fi + # Delete file and directory that was added in 1.13 to use granian only on + # new installs. + if [ -d /etc/systemd/system/kat-rocky.service.d ]; then + rm -f /etc/systemd/system/kat-rocky.service.d/use-granian.conf + rmdir --ignore-fail-on-non-empty /etc/systemd/system/kat-rocky.service.d + fi fi #DEBHELPER# diff --git a/rocky/entrypoint.sh b/rocky/entrypoint.sh index a4f25616119..54687790413 100755 --- a/rocky/entrypoint.sh +++ b/rocky/entrypoint.sh @@ -8,8 +8,4 @@ if [ "$DATABASE_MIGRATION" = "1" ] || [[ $DATABASE_MIGRATION == "true" ]]; then python manage.py migrate --noinput fi -if [ "$1" == "uwsgi" ] && { [ "$USE_GRANIAN" = "1" ] || [[ $USE_GRANIAN == "true" ]]; }; then - exec granian --interface wsgi rocky.wsgi:application --host 0.0.0.0 -else - exec "$@" -fi +exec "$@" From 309b32f03e86b143952d92b774c7f605b343ec9d Mon Sep 17 00:00:00 2001 From: Donny Peeters <46660228+Donnype@users.noreply.github.com> Date: Mon, 13 Nov 2023 20:27:10 +0100 Subject: [PATCH 10/30] Feature/mime types from bytes (#1945) Signed-off-by: Donny Peeters --- boefjes/boefjes/api.py | 4 +- boefjes/boefjes/docker_boefjes_runner.py | 2 +- boefjes/boefjes/job_handler.py | 4 +- boefjes/boefjes/job_models.py | 7 --- .../boefjes/katalogus/tests/test_plugins.py | 5 +- .../kat_adr_finding_types/normalizer.json | 2 +- .../plugins/kat_adr_validator/normalizer.json | 2 +- .../plugins/kat_calvin/normalizer.json | 1 - .../plugins/kat_censys/normalizer.json | 2 +- .../plugins/kat_crt_sh/normalizer.json | 2 +- .../kat_cve_2023_34039/normalizer.json | 2 +- .../kat_cve_2023_35078/normalizer.json | 2 +- .../kat_cve_finding_types/normalizer.json | 2 +- .../kat_cwe_finding_types/normalizer.json | 2 +- .../boefjes/plugins/kat_dicom/normalizer.json | 2 +- .../boefjes/plugins/kat_dns/normalizer.json | 2 +- .../plugins/kat_dns_zone/normalizer.json | 2 +- .../plugins/kat_dnssec/normalizer.json | 2 +- .../plugins/kat_external_db/normalizer.json | 2 +- .../plugins/kat_fierce/normalizer.json | 2 +- .../plugins/kat_green_hosting/normalizer.json | 2 +- .../kat_kat_finding_types/normalizer.json | 2 +- .../plugins/kat_leakix/normalizer.json | 2 +- .../plugins/kat_manyportsopen/normalizer.json | 2 +- .../plugins/kat_masscan/normalizer.json | 2 +- .../boefjes/plugins/kat_nmap/normalizer.json | 6 +-- .../plugins/kat_nuclei_cve/normalizer.json | 2 +- .../kat_nuclei_exposed_panels/normalizer.json | 2 +- .../kat_nuclei_take_over/normalizer.json | 2 +- boefjes/boefjes/plugins/models.py | 17 +------ boefjes/tests/test_tasks.py | 2 - bytes/Makefile | 2 +- bytes/bytes/api/metrics.py | 5 +- bytes/bytes/api/router.py | 48 ++++++++++++++++++- bytes/bytes/config.py | 3 ++ bytes/bytes/database/db_models.py | 2 +- ...1dde0213e9fe_remove_all_hash_mime_types.py | 45 +++++++++++++++++ bytes/bytes/database/sql_meta_repository.py | 27 ++++------- bytes/bytes/repositories/meta_repository.py | 27 ++++++++++- ...dde0213e9fe_remove_all_hash_mime_types.sql | 11 +++++ bytes/tests/client.py | 10 ++++ bytes/tests/integration/test_bytes_api.py | 22 +++++++++ bytes/tests/integration/test_migrations.py | 39 +++++++++++++++ rocky/rocky/bytes_client.py | 4 +- 44 files changed, 252 insertions(+), 85 deletions(-) create mode 100644 bytes/bytes/database/migrations/versions/1dde0213e9fe_remove_all_hash_mime_types.py create mode 100644 bytes/sql_migrations/0019_1dde0213e9fe_remove_all_hash_mime_types.sql create mode 100644 bytes/tests/integration/test_migrations.py diff --git a/boefjes/boefjes/api.py b/boefjes/boefjes/api.py index e244eabff8f..e5530f9a06f 100644 --- a/boefjes/boefjes/api.py +++ b/boefjes/boefjes/api.py @@ -21,7 +21,7 @@ ) from boefjes.job_models import BoefjeMeta from boefjes.katalogus.local_repository import LocalPluginRepository, get_local_repository -from boefjes.plugins.models import _default_meta_mime_types +from boefjes.plugins.models import _default_mime_types from octopoes.models import Reference app = FastAPI(title="Boefje API") @@ -128,7 +128,7 @@ async def boefje_output( bytes_client.save_boefje_meta(boefje_meta) if boefje_output.files: - mime_types = _default_meta_mime_types(task.p_item.data) + mime_types = _default_mime_types(task.p_item.data.boefje) for file in boefje_output.files: raw = base64.b64decode(file.content) # when supported, also save file.name to Bytes diff --git a/boefjes/boefjes/docker_boefjes_runner.py b/boefjes/boefjes/docker_boefjes_runner.py index 78bca658d1d..d07d18b5ca6 100644 --- a/boefjes/boefjes/docker_boefjes_runner.py +++ b/boefjes/boefjes/docker_boefjes_runner.py @@ -33,7 +33,7 @@ def run(self) -> None: # local import to prevent circular dependency import boefjes.plugins.models - stderr_mime_types = boefjes.plugins.models._default_meta_mime_types(self.boefje_meta) + stderr_mime_types = boefjes.plugins.models._default_mime_types(self.boefje_meta.boefje) task_id = str(self.boefje_meta.id) self.scheduler_client.patch_task(task_id, TaskStatus.RUNNING) diff --git a/boefjes/boefjes/job_handler.py b/boefjes/boefjes/job_handler.py index 23f6ad8c2ff..e7130206afe 100644 --- a/boefjes/boefjes/job_handler.py +++ b/boefjes/boefjes/job_handler.py @@ -18,7 +18,7 @@ NormalizerPlainOOI, ) from boefjes.katalogus.local_repository import LocalPluginRepository -from boefjes.plugins.models import _default_meta_mime_types +from boefjes.plugins.models import _default_mime_types from boefjes.runtime_interfaces import BoefjeJobRunner, Handler, NormalizerJobRunner from octopoes.api.models import Declaration, Observation from octopoes.connector.octopoes import OctopoesAPIConnector @@ -135,7 +135,7 @@ def handle(self, boefje_meta: BoefjeMeta) -> None: boefje_meta.runnable_hash = boefje_resource.runnable_hash boefje_meta.environment = get_environment_settings(boefje_meta, env_keys) if env_keys else {} - mime_types = _default_meta_mime_types(boefje_meta) + mime_types = _default_mime_types(boefje_meta.boefje) logger.info("Starting boefje %s[%s]", boefje_meta.boefje.id, str(boefje_meta.id)) diff --git a/boefjes/boefjes/job_models.py b/boefjes/boefjes/job_models.py index be28b2e47b8..9109a6f6a01 100644 --- a/boefjes/boefjes/job_models.py +++ b/boefjes/boefjes/job_models.py @@ -1,4 +1,3 @@ -import hashlib from datetime import datetime, timedelta from typing import Dict, List, Literal, Optional, Union from uuid import UUID @@ -48,12 +47,6 @@ class BoefjeMeta(Job): runnable_hash: Optional[str] environment: Optional[Dict[str, str]] - @property - def parameterized_arguments_hash(self) -> str: - encoded_arguments = ",".join(f"{k}={v}" for k, v in self.arguments.items()) - - return hashlib.sha256(encoded_arguments.encode("utf-8")).hexdigest() - class RawDataMeta(BaseModel): id: UUID diff --git a/boefjes/boefjes/katalogus/tests/test_plugins.py b/boefjes/boefjes/katalogus/tests/test_plugins.py index 1dba09ca9d5..9894f2a8049 100644 --- a/boefjes/boefjes/katalogus/tests/test_plugins.py +++ b/boefjes/boefjes/katalogus/tests/test_plugins.py @@ -115,10 +115,7 @@ def test_get_plugin(self): # For boefjes that are pulled from the local repository, we actually get the default mime_types assert set(self.client.get("/v1/organisations/test-org/plugins/kat_test").json()["mime_types"]) == set( - [ - "kat_test", - "boefje/kat_test", - ] + ["boefje/kat_test"] ) def test_non_existing_plugin(self): diff --git a/boefjes/boefjes/plugins/kat_adr_finding_types/normalizer.json b/boefjes/boefjes/plugins/kat_adr_finding_types/normalizer.json index a944a08232f..9120e876a6d 100644 --- a/boefjes/boefjes/plugins/kat_adr_finding_types/normalizer.json +++ b/boefjes/boefjes/plugins/kat_adr_finding_types/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_adr_finding_types_normalize", "consumes": [ - "adr-finding-types" + "boefje/adr-finding-types" ], "produces": [ "ADRFindingType" diff --git a/boefjes/boefjes/plugins/kat_adr_validator/normalizer.json b/boefjes/boefjes/plugins/kat_adr_validator/normalizer.json index 5a565651fec..36c13c60a41 100644 --- a/boefjes/boefjes/plugins/kat_adr_validator/normalizer.json +++ b/boefjes/boefjes/plugins/kat_adr_validator/normalizer.json @@ -1,7 +1,7 @@ { "id": "adr-validator", "consumes": [ - "adr-validator" + "boefje/adr-validator" ], "produces": [ "APIDesignRule", diff --git a/boefjes/boefjes/plugins/kat_calvin/normalizer.json b/boefjes/boefjes/plugins/kat_calvin/normalizer.json index 30fe73c667a..cdcf38ef7b0 100644 --- a/boefjes/boefjes/plugins/kat_calvin/normalizer.json +++ b/boefjes/boefjes/plugins/kat_calvin/normalizer.json @@ -1,7 +1,6 @@ { "id": "calvin-normalize", "consumes": [ - "calvin", "boefje/calvin" ], "produces": [ diff --git a/boefjes/boefjes/plugins/kat_censys/normalizer.json b/boefjes/boefjes/plugins/kat_censys/normalizer.json index 81c55e2fe9f..36b4cf64d56 100644 --- a/boefjes/boefjes/plugins/kat_censys/normalizer.json +++ b/boefjes/boefjes/plugins/kat_censys/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_censys_normalize", "consumes": [ - "censys" + "boefje/censys" ], "produces": [ "IPPort", diff --git a/boefjes/boefjes/plugins/kat_crt_sh/normalizer.json b/boefjes/boefjes/plugins/kat_crt_sh/normalizer.json index 8c098e6c4c5..49726c37e53 100644 --- a/boefjes/boefjes/plugins/kat_crt_sh/normalizer.json +++ b/boefjes/boefjes/plugins/kat_crt_sh/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_crt_sh_normalize", "consumes": [ - "certificate-search" + "boefje/certificate-search" ], "produces": [ "Hostname", diff --git a/boefjes/boefjes/plugins/kat_cve_2023_34039/normalizer.json b/boefjes/boefjes/plugins/kat_cve_2023_34039/normalizer.json index 855710978dd..9e79a6a56b7 100644 --- a/boefjes/boefjes/plugins/kat_cve_2023_34039/normalizer.json +++ b/boefjes/boefjes/plugins/kat_cve_2023_34039/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_cve_2023_normalize", "consumes": [ - "CVE-2023-34039" + "boefje/CVE-2023-34039" ], "produces": [ "Finding", diff --git a/boefjes/boefjes/plugins/kat_cve_2023_35078/normalizer.json b/boefjes/boefjes/plugins/kat_cve_2023_35078/normalizer.json index 590760e2870..b8bf29d4438 100644 --- a/boefjes/boefjes/plugins/kat_cve_2023_35078/normalizer.json +++ b/boefjes/boefjes/plugins/kat_cve_2023_35078/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_CVE_2023_35078_normalize", "consumes": [ - "CVE_2023_35078" + "boefje/CVE_2023_35078" ], "produces": [ "Finding", diff --git a/boefjes/boefjes/plugins/kat_cve_finding_types/normalizer.json b/boefjes/boefjes/plugins/kat_cve_finding_types/normalizer.json index 54e7a1bbecd..bc23c3cceec 100644 --- a/boefjes/boefjes/plugins/kat_cve_finding_types/normalizer.json +++ b/boefjes/boefjes/plugins/kat_cve_finding_types/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_cve_finding_types_normalize", "consumes": [ - "cve-finding-types" + "boefje/cve-finding-types" ], "produces": [ "CVEFindingType" diff --git a/boefjes/boefjes/plugins/kat_cwe_finding_types/normalizer.json b/boefjes/boefjes/plugins/kat_cwe_finding_types/normalizer.json index 4b7b91f1b33..335549b39e7 100644 --- a/boefjes/boefjes/plugins/kat_cwe_finding_types/normalizer.json +++ b/boefjes/boefjes/plugins/kat_cwe_finding_types/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_cwe_finding_types_normalize", "consumes": [ - "cwe-finding-types" + "boefje/cwe-finding-types" ], "produces": [ "CWEFindingType" diff --git a/boefjes/boefjes/plugins/kat_dicom/normalizer.json b/boefjes/boefjes/plugins/kat_dicom/normalizer.json index 58fc995f312..5ed265f85df 100644 --- a/boefjes/boefjes/plugins/kat_dicom/normalizer.json +++ b/boefjes/boefjes/plugins/kat_dicom/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_dicom_normalize", "consumes": [ - "dicom" + "boefje/dicom" ], "produces": [ "KATFindingType", diff --git a/boefjes/boefjes/plugins/kat_dns/normalizer.json b/boefjes/boefjes/plugins/kat_dns/normalizer.json index 772f7cf1582..487aa4dc3da 100644 --- a/boefjes/boefjes/plugins/kat_dns/normalizer.json +++ b/boefjes/boefjes/plugins/kat_dns/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_dns_normalize", "consumes": [ - "dns-records" + "boefje/dns-records" ], "produces": [ "IPAddressV6", diff --git a/boefjes/boefjes/plugins/kat_dns_zone/normalizer.json b/boefjes/boefjes/plugins/kat_dns_zone/normalizer.json index 5b15c2a3b12..e1668445528 100644 --- a/boefjes/boefjes/plugins/kat_dns_zone/normalizer.json +++ b/boefjes/boefjes/plugins/kat_dns_zone/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_dns_zone_normalize", "consumes": [ - "dns-zone" + "boefje/dns-zone" ], "produces": [ "Hostname", diff --git a/boefjes/boefjes/plugins/kat_dnssec/normalizer.json b/boefjes/boefjes/plugins/kat_dnssec/normalizer.json index 5cf0047221b..dcd03810dd1 100644 --- a/boefjes/boefjes/plugins/kat_dnssec/normalizer.json +++ b/boefjes/boefjes/plugins/kat_dnssec/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_dnssec_normalize", "consumes": [ - "dns-sec" + "boefje/dns-sec" ], "produces": [ "KATFindingType", diff --git a/boefjes/boefjes/plugins/kat_external_db/normalizer.json b/boefjes/boefjes/plugins/kat_external_db/normalizer.json index 58b617f45ea..77b325a75ff 100644 --- a/boefjes/boefjes/plugins/kat_external_db/normalizer.json +++ b/boefjes/boefjes/plugins/kat_external_db/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_external_db_normalize", "consumes": [ - "external_db" + "boefje/external_db" ], "produces": [ "Hostname", diff --git a/boefjes/boefjes/plugins/kat_fierce/normalizer.json b/boefjes/boefjes/plugins/kat_fierce/normalizer.json index 06849fe746b..6a1b35d6e7b 100644 --- a/boefjes/boefjes/plugins/kat_fierce/normalizer.json +++ b/boefjes/boefjes/plugins/kat_fierce/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_fierce_normalize", "consumes": [ - "fierce" + "boefje/fierce" ], "produces": [ "IPAddressV6", diff --git a/boefjes/boefjes/plugins/kat_green_hosting/normalizer.json b/boefjes/boefjes/plugins/kat_green_hosting/normalizer.json index 9c78a742185..bc5fab49b28 100644 --- a/boefjes/boefjes/plugins/kat_green_hosting/normalizer.json +++ b/boefjes/boefjes/plugins/kat_green_hosting/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_green_hosting_normalize", "consumes": [ - "green-hosting" + "boefje/green-hosting" ], "produces": [ "KATFindingType", diff --git a/boefjes/boefjes/plugins/kat_kat_finding_types/normalizer.json b/boefjes/boefjes/plugins/kat_kat_finding_types/normalizer.json index 72956d6bdb7..f53d66dbc9c 100644 --- a/boefjes/boefjes/plugins/kat_kat_finding_types/normalizer.json +++ b/boefjes/boefjes/plugins/kat_kat_finding_types/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_kat_finding_types_normalize", "consumes": [ - "kat-finding-types" + "boefje/kat-finding-types" ], "produces": [ "KATFindingType" diff --git a/boefjes/boefjes/plugins/kat_leakix/normalizer.json b/boefjes/boefjes/plugins/kat_leakix/normalizer.json index af1619411df..77a3234f0c1 100644 --- a/boefjes/boefjes/plugins/kat_leakix/normalizer.json +++ b/boefjes/boefjes/plugins/kat_leakix/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_leakix_normalize", "consumes": [ - "leakix" + "boefje/leakix" ], "produces": [ "KATFindingType", diff --git a/boefjes/boefjes/plugins/kat_manyportsopen/normalizer.json b/boefjes/boefjes/plugins/kat_manyportsopen/normalizer.json index 4b2672aeef1..cbe924cfeb6 100644 --- a/boefjes/boefjes/plugins/kat_manyportsopen/normalizer.json +++ b/boefjes/boefjes/plugins/kat_manyportsopen/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_manyportsopen_normalize", "consumes": [ - "many-ports-open" + "boefje/many-ports-open" ], "produces": [ "KATFindingType", diff --git a/boefjes/boefjes/plugins/kat_masscan/normalizer.json b/boefjes/boefjes/plugins/kat_masscan/normalizer.json index 9caf120e8d8..176159496d0 100644 --- a/boefjes/boefjes/plugins/kat_masscan/normalizer.json +++ b/boefjes/boefjes/plugins/kat_masscan/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_masscan_normalize", "consumes": [ - "masscan" + "boefje/masscan" ], "produces": [ "IPAddressV4", diff --git a/boefjes/boefjes/plugins/kat_nmap/normalizer.json b/boefjes/boefjes/plugins/kat_nmap/normalizer.json index f98d613e7c4..d01fb1e5e11 100644 --- a/boefjes/boefjes/plugins/kat_nmap/normalizer.json +++ b/boefjes/boefjes/plugins/kat_nmap/normalizer.json @@ -1,9 +1,9 @@ { "id": "kat_nmap_normalize", "consumes": [ - "nmap", - "nmap-ports", - "nmap-ip-range" + "boefje/nmap", + "boefje/nmap-ports", + "boefje/nmap-ip-range" ], "produces": [ "IPAddressV6", diff --git a/boefjes/boefjes/plugins/kat_nuclei_cve/normalizer.json b/boefjes/boefjes/plugins/kat_nuclei_cve/normalizer.json index 745d7cbd2c5..4a3cca0c95e 100644 --- a/boefjes/boefjes/plugins/kat_nuclei_cve/normalizer.json +++ b/boefjes/boefjes/plugins/kat_nuclei_cve/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_nuclei_cve_normalize", "consumes": [ - "nuclei-cve" + "boefje/nuclei-cve" ], "produces": [ "Findings", diff --git a/boefjes/boefjes/plugins/kat_nuclei_exposed_panels/normalizer.json b/boefjes/boefjes/plugins/kat_nuclei_exposed_panels/normalizer.json index 69c8621f180..ba4c5b58b10 100644 --- a/boefjes/boefjes/plugins/kat_nuclei_exposed_panels/normalizer.json +++ b/boefjes/boefjes/plugins/kat_nuclei_exposed_panels/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_nuclei_exposed_panels_normalize", "consumes": [ - "nuclei-exposed-panels" + "boefje/nuclei-exposed-panels" ], "produces": [ "Findings", diff --git a/boefjes/boefjes/plugins/kat_nuclei_take_over/normalizer.json b/boefjes/boefjes/plugins/kat_nuclei_take_over/normalizer.json index e92572c5750..69f4849a858 100644 --- a/boefjes/boefjes/plugins/kat_nuclei_take_over/normalizer.json +++ b/boefjes/boefjes/plugins/kat_nuclei_take_over/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_nuclei_takeover_normalize", "consumes": [ - "nuclei-takeover" + "boefje/nuclei-takeover" ], "produces": [ "Findings", diff --git a/boefjes/boefjes/plugins/models.py b/boefjes/boefjes/plugins/models.py index 80b4e019177..7b50bb235ed 100644 --- a/boefjes/boefjes/plugins/models.py +++ b/boefjes/boefjes/plugins/models.py @@ -3,9 +3,8 @@ from importlib import import_module from inspect import isfunction, signature from pathlib import Path -from typing import Protocol, Set +from typing import Protocol -from boefjes.job_models import BoefjeMeta from boefjes.katalogus.models import Boefje, Normalizer BOEFJES_DIR = Path(__file__).parent @@ -87,20 +86,8 @@ def get_runnable_hash(path: Path) -> str: return folder_hash.hexdigest() -def _default_meta_mime_types(boefje_meta: BoefjeMeta) -> Set[str]: - mime_types = _default_mime_types(boefje_meta.boefje) - mime_types.add(f"boefje/{boefje_meta.boefje.id}-{boefje_meta.parameterized_arguments_hash}") - - if boefje_meta.boefje.version is not None: - mime_types = mime_types.add( - f"boefje/{boefje_meta.boefje.id}-{boefje_meta.parameterized_arguments_hash}-{boefje_meta.boefje.version}", - ) - - return mime_types - - def _default_mime_types(boefje: Boefje): - mime_types = {boefje.id, f"boefje/{boefje.id}"} + mime_types = {f"boefje/{boefje.id}"} if boefje.version is not None: mime_types = mime_types.union({f"boefje/{boefje.id}-{boefje.version}"}) diff --git a/boefjes/tests/test_tasks.py b/boefjes/tests/test_tasks.py index 7699cac982b..803b29dcecc 100644 --- a/boefjes/tests/test_tasks.py +++ b/boefjes/tests/test_tasks.py @@ -132,9 +132,7 @@ def test_handle_boefje_with_exception(self, mock_find_ooi_in_past, mock_bytes_ap assert "JobRuntimeError: Boefje failed" in raw_call_args[0][1] assert raw_call_args[0][2] == { "error/boefje", - "dummy_boefje_runtime_exception", "boefje/dummy_boefje_runtime_exception", - f"boefje/dummy_boefje_runtime_exception-{meta.parameterized_arguments_hash}", } def test_exception_raised_unsupported_return_type_normalizer(self): diff --git a/bytes/Makefile b/bytes/Makefile index 40006430eba..11e2447fcd2 100644 --- a/bytes/Makefile +++ b/bytes/Makefile @@ -34,7 +34,7 @@ done: lint test ## Prepare for a commit. lint: ## Format the code using black. pre-commit run --all-files --show-diff-on-failure --color always -py-run := docker-compose --rm run bytes python +py-run := docker-compose run --rm bytes python export revid diff --git a/bytes/bytes/api/metrics.py b/bytes/bytes/api/metrics.py index e0ed6bb3223..9fe6d44a195 100644 --- a/bytes/bytes/api/metrics.py +++ b/bytes/bytes/api/metrics.py @@ -31,7 +31,10 @@ def ignore_arguments_key(meta_repository: MetaDataRepository): @cached(cache=TTLCache(maxsize=1, ttl=get_settings().metrics_ttl_seconds), key=ignore_arguments_key) def cached_counts_per_organization(meta_repository: MetaDataRepository) -> Dict[str, int]: - logger.debug("Metrics cache miss, ttl set to %s seconds", get_settings().metrics_ttl_seconds) + logger.debug( + "Metrics cache miss for cached_counts_per_organization, ttl set to %s seconds", + get_settings().metrics_ttl_seconds, + ) return meta_repository.get_raw_file_count_per_organization() diff --git a/bytes/bytes/api/router.py b/bytes/bytes/api/router.py index 30356c3a18c..d1cc243f831 100644 --- a/bytes/bytes/api/router.py +++ b/bytes/bytes/api/router.py @@ -1,13 +1,15 @@ import logging -from typing import List, Optional +from typing import Dict, List, Optional from uuid import UUID +from cachetools import TTLCache, cached from fastapi import APIRouter, Depends, HTTPException, Query, Request from fastapi.responses import Response from starlette.responses import JSONResponse from bytes.api.models import RawResponse from bytes.auth import authenticate_token +from bytes.config import get_settings from bytes.database.sql_meta_repository import MetaIntegrityError, ObjectNotFoundException, create_meta_data_repository from bytes.events.events import RawFileReceived from bytes.events.manager import EventManager @@ -207,7 +209,7 @@ def get_raw_meta_by_id( @router.get("/raw", response_model=List[RawDataMeta], tags=[RAW_TAG]) -def get_raws( +def get_raw( organization: Optional[str] = None, boefje_meta_id: Optional[UUID] = None, normalized: Optional[bool] = None, @@ -230,3 +232,45 @@ def get_raws( logger.info("mime_types: %s", parsed_mime_types) return meta_repository.get_raw(query_filter) + + +@router.get("/mime_types", response_model=Dict[str, int], tags=[RAW_TAG]) +def get_raw_count_per_mime_type( + organization: Optional[str] = None, + boefje_meta_id: Optional[UUID] = None, + normalized: Optional[bool] = None, + mime_types: Optional[List[str]] = Query(None), + meta_repository: MetaDataRepository = Depends(create_meta_data_repository), +) -> Dict[str, int]: + parsed_mime_types = [] if mime_types is None else [MimeType(value=mime_type) for mime_type in mime_types] + + query_filter = RawDataFilter( + organization=organization, + boefje_meta_id=boefje_meta_id, + normalized=normalized, + mime_types=parsed_mime_types, + offset=None, + limit=None, + ) + + logger.info("mime_types: %s", parsed_mime_types) + + return cached_counts_per_mime_type(meta_repository, query_filter) + + +def ignore_arguments_key(meta_repository: MetaDataRepository, query_filter: RawDataFilter): + """Helper to not cache based on the stateful meta_repository, but only use the query parameters as a key.""" + return query_filter.json() + + +@cached( + cache=TTLCache(maxsize=get_settings().metrics_cache_size, ttl=get_settings().metrics_ttl_seconds), + key=ignore_arguments_key, +) +def cached_counts_per_mime_type(meta_repository: MetaDataRepository, query_filter: RawDataFilter) -> Dict[str, int]: + logger.debug( + "Metrics cache miss for cached_counts_per_mime_type, ttl set to %s seconds", + get_settings().metrics_ttl_seconds, + ) + + return meta_repository.get_raw_file_count_per_mime_type(query_filter) diff --git a/bytes/bytes/config.py b/bytes/bytes/config.py index d645f311412..756e071bf64 100644 --- a/bytes/bytes/config.py +++ b/bytes/bytes/config.py @@ -126,6 +126,9 @@ class Settings(BaseSettings): metrics_ttl_seconds: int = Field( 300, description="The time to cache slow queries performed in the metrics endpoint" ) + metrics_cache_size: int = Field( + 200, description="The amount of cache entries to keep for metrics endpoints with query parameters." + ) span_export_grpc_endpoint: Optional[AnyHttpUrl] = Field( None, description="OpenTelemetry endpoint", env="SPAN_EXPORT_GRPC_ENDPOINT" diff --git a/bytes/bytes/database/db_models.py b/bytes/bytes/database/db_models.py index e30d5d6b0fe..287ea59cd8d 100644 --- a/bytes/bytes/database/db_models.py +++ b/bytes/bytes/database/db_models.py @@ -14,7 +14,7 @@ class BoefjeMetaInDB(SQL_BASE): # type: ignore organization = Column(String(length=32), nullable=False) input_ooi = Column(String(length=1024), nullable=True) arguments = Column(JSON, nullable=False, default=lambda: {}) - environment = Column(JSON, nullable=False, default=lambda: {}) + environment = Column(JSON, nullable=True, default=lambda: {}) runnable_hash = Column(String(length=64), nullable=True) started_at = Column(DateTime(timezone=True)) diff --git a/bytes/bytes/database/migrations/versions/1dde0213e9fe_remove_all_hash_mime_types.py b/bytes/bytes/database/migrations/versions/1dde0213e9fe_remove_all_hash_mime_types.py new file mode 100644 index 00000000000..c77350ad000 --- /dev/null +++ b/bytes/bytes/database/migrations/versions/1dde0213e9fe_remove_all_hash_mime_types.py @@ -0,0 +1,45 @@ +"""Remove all hash-mime-types + +Revision ID: 1dde0213e9fe +Revises: d216ad75177d +Create Date: 2023-10-19 11:26:06.627048 + +""" +import sqlalchemy +from alembic import op + +# revision identifiers, used by Alembic. +revision = "1dde0213e9fe" +down_revision = "d216ad75177d" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + conn = op.get_bind() + with conn.begin(): + # Remove mime-types with the pattern "boefje/{boefje_id}-%", i.e. all mime-types containing parameter hashes + + conn.execute( + sqlalchemy.text( + """ +WITH filtered AS ( + SELECT m.id, array_agg(m.mime_type) AS mime_types FROM ( + SELECT raw.id, boefje_id, unnest(mime_types) AS mime_type + FROM raw_file raw JOIN boefje_meta b ON boefje_meta_id = b.id + ) m + + WHERE m.mime_type NOT LIKE concat('boefje/', m.boefje_id, '-%') + AND m.mime_type != m.boefje_id + GROUP BY m.id +) +UPDATE raw_file r SET mime_types = filtered.mime_types FROM filtered WHERE r.id = filtered.id;""" + ) + ) + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### diff --git a/bytes/bytes/database/sql_meta_repository.py b/bytes/bytes/database/sql_meta_repository.py index 25a36acf174..b17839a8dd1 100644 --- a/bytes/bytes/database/sql_meta_repository.py +++ b/bytes/bytes/database/sql_meta_repository.py @@ -144,23 +144,7 @@ def save_raw(self, raw: RawData) -> uuid.UUID: def get_raw(self, query_filter: RawDataFilter) -> List[RawDataMeta]: logger.debug("Querying raw data: %s", query_filter.json()) query = self.session.query(RawFileInDB) - - if query_filter.boefje_meta_id: - query = query.filter(RawFileInDB.boefje_meta_id == str(query_filter.boefje_meta_id)) - - if query_filter.organization: - query = query.join(BoefjeMetaInDB).filter(BoefjeMetaInDB.organization == query_filter.organization) - - if query_filter.normalized: - query = query.join(NormalizerMetaInDB, isouter=False) - - if query_filter.normalized is False: # it can also be None, in which case we do not want a filter - query = query.join(NormalizerMetaInDB, isouter=True).filter(NormalizerMetaInDB.id.is_(None)) - - if query_filter.mime_types: - query = query.filter(RawFileInDB.mime_types.contains([m.value for m in query_filter.mime_types])) - - query = query.offset(query_filter.offset).limit(query_filter.limit) + query = query_filter.apply(query) return [to_raw_meta(raw_file_in_db) for raw_file_in_db in query] @@ -200,6 +184,15 @@ def get_raw_file_count_per_organization(self) -> Dict[str, int]: return {organization_id: count for organization_id, count in query} + def get_raw_file_count_per_mime_type(self, query_filter: RawDataFilter) -> Dict[str, int]: + logger.debug("Querying count raw data per mime type: %s", query_filter.json()) + query = self.session.query(func.unnest(RawFileInDB.mime_types), func.count()).group_by( + func.unnest(RawFileInDB.mime_types) + ) + query = query_filter.apply(query) + + return {mime_type: count for mime_type, count in query} + def _to_raw(self, raw_file_in_db: RawFileInDB) -> RawData: boefje_meta = to_boefje_meta(raw_file_in_db.boefje_meta) data = self.raw_repository.get_raw(raw_file_in_db.id, boefje_meta) diff --git a/bytes/bytes/repositories/meta_repository.py b/bytes/bytes/repositories/meta_repository.py index 5b4a9332b70..92841b2a87d 100644 --- a/bytes/bytes/repositories/meta_repository.py +++ b/bytes/bytes/repositories/meta_repository.py @@ -2,7 +2,9 @@ from uuid import UUID from pydantic import BaseModel, Field +from sqlalchemy.orm import Query +from bytes.database.db_models import BoefjeMetaInDB, NormalizerMetaInDB, RawFileInDB from bytes.models import BoefjeMeta, MimeType, NormalizerMeta, RawData, RawDataMeta @@ -30,8 +32,26 @@ class RawDataFilter(BaseModel): boefje_meta_id: Optional[UUID] normalized: Optional[bool] mime_types: List[MimeType] = Field(default_factory=list) - limit: int = 1 - offset: int = 0 + limit: Optional[int] = 1 + offset: Optional[int] = 0 + + def apply(self, query: Query) -> Query: + if self.boefje_meta_id: + query = query.filter(RawFileInDB.boefje_meta_id == str(self.boefje_meta_id)) + + if self.organization: + query = query.join(BoefjeMetaInDB).filter(BoefjeMetaInDB.organization == self.organization) + + if self.normalized: + query = query.join(NormalizerMetaInDB, isouter=False) + + if self.normalized is False: # it can also be None, in which case we do not want a filter + query = query.join(NormalizerMetaInDB, isouter=True).filter(NormalizerMetaInDB.id.is_(None)) + + if self.mime_types: + query = query.filter(RawFileInDB.mime_types.contains([m.value for m in self.mime_types])) + + return query.offset(self.offset).limit(self.limit) class MetaDataRepository: @@ -74,5 +94,8 @@ def has_raw(self, boefje_meta: BoefjeMeta, mime_types: List[MimeType]) -> bool: def get_raw_file_count_per_organization(self) -> Dict[str, int]: raise NotImplementedError() + def get_raw_file_count_per_mime_type(self, query_filter: RawDataFilter) -> Dict[str, int]: + raise NotImplementedError() + def get_raw_meta_by_id(self, raw_id: UUID) -> RawDataMeta: raise NotImplementedError() diff --git a/bytes/sql_migrations/0019_1dde0213e9fe_remove_all_hash_mime_types.sql b/bytes/sql_migrations/0019_1dde0213e9fe_remove_all_hash_mime_types.sql new file mode 100644 index 00000000000..13e3792a36e --- /dev/null +++ b/bytes/sql_migrations/0019_1dde0213e9fe_remove_all_hash_mime_types.sql @@ -0,0 +1,11 @@ +WITH filtered AS ( + SELECT m.id, array_agg(m.mime_type) AS mime_types FROM ( + SELECT raw.id, boefje_id, unnest(mime_types) AS mime_type + FROM raw_file raw JOIN boefje_meta b ON boefje_meta_id = b.id + ) m + + WHERE m.mime_type NOT LIKE concat('boefje/', m.boefje_id, '-%') + AND m.mime_type != m.boefje_id + GROUP BY m.id +) +UPDATE raw_file r SET mime_types = filtered.mime_types FROM filtered WHERE r.id = filtered.id; diff --git a/bytes/tests/client.py b/bytes/tests/client.py index e613dc96e68..cce9d4d9a1a 100644 --- a/bytes/tests/client.py +++ b/bytes/tests/client.py @@ -79,6 +79,16 @@ def get_metrics(self) -> bytes: return response.content + @retry_with_login + def get_mime_type_count(self, query_filter: RawDataFilter) -> Dict[str, str]: + params = query_filter.dict() + params["mime_types"] = [m.value for m in query_filter.mime_types] + + response = self._session.get("/bytes/mime_types", headers=self.headers, params=params) + self._verify_response(response) + + return response.json() # type: ignore + @retry_with_login def save_boefje_meta(self, boefje_meta: BoefjeMeta) -> None: response = self._session.post("/bytes/boefje_meta", data=boefje_meta.json(), headers=self.headers) diff --git a/bytes/tests/integration/test_bytes_api.py b/bytes/tests/integration/test_bytes_api.py index 73e9c3d0bf1..c29f2d41b81 100644 --- a/bytes/tests/integration/test_bytes_api.py +++ b/bytes/tests/integration/test_bytes_api.py @@ -69,6 +69,28 @@ def test_metrics(bytes_api_client: BytesAPIClient) -> None: assert database_files.samples[1].value == 1.0 +def test_get_mime_type_count(bytes_api_client: BytesAPIClient) -> None: + boefje_meta = get_boefje_meta() + bytes_api_client.save_boefje_meta(boefje_meta) + + bytes_api_client.save_raw(boefje_meta.id, b"test 123", ["boefje"]) + raw_id = bytes_api_client.save_raw(boefje_meta.id, b"test 12334", ["text/boefje", "boefje"]) + + normalizer_meta = get_normalizer_meta(raw_id) + bytes_api_client.save_normalizer_meta(normalizer_meta) + + assert bytes_api_client.get_mime_type_count(RawDataFilter(organization="test")) == { + "boefje": 2, + "text/boefje": 1, + } + + assert bytes_api_client.get_mime_type_count(RawDataFilter(organization="test", normalized=True)) == { + "boefje": 1, + "text/boefje": 1, + } + assert bytes_api_client.get_mime_type_count(RawDataFilter(organization="test", normalized=False)) == {"boefje": 1} + + def test_boefje_meta(bytes_api_client: BytesAPIClient) -> None: boefje_meta = get_boefje_meta() bytes_api_client.save_boefje_meta(boefje_meta) diff --git a/bytes/tests/integration/test_migrations.py b/bytes/tests/integration/test_migrations.py new file mode 100644 index 00000000000..eb3a29c0c4f --- /dev/null +++ b/bytes/tests/integration/test_migrations.py @@ -0,0 +1,39 @@ +import alembic.config + +from bytes.database.sql_meta_repository import SQLMetaDataRepository +from bytes.models import MimeType +from tests.loading import get_boefje_meta, get_raw_data + + +def test_clean_mime_types(meta_repository: SQLMetaDataRepository) -> None: + alembic.config.main(argv=["--config", "/app/bytes/bytes/alembic.ini", "--raiseerr", "downgrade", "d216ad75177d"]) + + with meta_repository: + boefje_meta = get_boefje_meta() + meta_repository.save_boefje_meta(boefje_meta) + + raw = get_raw_data() + raw.mime_types.append(MimeType(value=raw.boefje_meta.boefje.id)) + raw_id_1 = meta_repository.save_raw(raw) + + raw.mime_types.append( + MimeType(value=f"boefje/{raw.boefje_meta.boefje.id}-ce293f79fd3c809a300a2837bb1da4f7115fc034a1f78") + ) + raw_id_2 = meta_repository.save_raw(raw) + + raw.mime_types.append( + MimeType(value=f"boefje/{raw.boefje_meta.boefje.id}-ba293f79fd3c809a300a2837bb1da4f7115fc034a1f78") + ) + raw_id_3 = meta_repository.save_raw(raw) + + assert len(meta_repository.get_raw_meta_by_id(raw_id_1).mime_types) == 3 + assert len(meta_repository.get_raw_meta_by_id(raw_id_2).mime_types) == 4 + assert len(meta_repository.get_raw_meta_by_id(raw_id_3).mime_types) == 5 + + alembic.config.main(argv=["--config", "/app/bytes/bytes/alembic.ini", "--raiseerr", "upgrade", "head"]) + + assert len(meta_repository.get_raw_meta_by_id(raw_id_1).mime_types) == 2 + assert len(meta_repository.get_raw_meta_by_id(raw_id_2).mime_types) == 2 + assert len(meta_repository.get_raw_meta_by_id(raw_id_3).mime_types) == 2 + + assert meta_repository.get_raw_meta_by_id(raw_id_3).mime_types == get_raw_data().mime_types diff --git a/rocky/rocky/bytes_client.py b/rocky/rocky/bytes_client.py index 0d55a8c2fc7..f71551863ad 100644 --- a/rocky/rocky/bytes_client.py +++ b/rocky/rocky/bytes_client.py @@ -55,7 +55,7 @@ def add_manual_proof(self, normalizer_id: uuid.UUID, raw: bytes, manual_mime_typ ) self._save_boefje_meta(boefje_meta) - all_mime_types = {"manual", "boefje/manual"}.union(manual_mime_types) + all_mime_types = {"boefje/manual"}.union(manual_mime_types) raw_id = self._save_raw(boefje_meta.id, raw, all_mime_types) self._save_normalizer_meta( @@ -86,7 +86,7 @@ def upload_raw(self, raw: bytes, manual_mime_types: Set[str], input_ooi: Optiona ) self._save_boefje_meta(boefje_meta) - self._save_raw(boefje_meta.id, raw, {"manual", "boefje/manual"}.union(manual_mime_types)) + self._save_raw(boefje_meta.id, raw, {"boefje/manual"}.union(manual_mime_types)) def _save_boefje_meta(self, boefje_meta: BoefjeMeta) -> None: response = self.session.post(f"{self.base_url}/bytes/boefje_meta", data=boefje_meta.json()) From 77f7879bace1b1163d8cb3f9df2f95af0dd1d891 Mon Sep 17 00:00:00 2001 From: JP Bruins Slot Date: Mon, 13 Nov 2023 21:03:55 +0100 Subject: [PATCH 11/30] Add api filtering documentation for scheduler (#2017) Co-authored-by: Jan Klopper --- mula/docs/api.md | 183 +++++ mula/docs/openapi.json | 1546 +++++++++++++++++++++++++++++----------- 2 files changed, 1332 insertions(+), 397 deletions(-) create mode 100644 mula/docs/api.md diff --git a/mula/docs/api.md b/mula/docs/api.md new file mode 100644 index 00000000000..54bafb1851c --- /dev/null +++ b/mula/docs/api.md @@ -0,0 +1,183 @@ +API +=== + + +The browsable api docs can be view at: [http://localhost:8004/docs](http://localhost:8004/docs). +A formal description of the spec can be referenced here: [open api spec](openapi.json) + +Filtering +--------- + +The endpoints `/tasks` and `/queues/{queue_id}/pop` support additional payload +filters. An example: + +```json +POST /tasks + +{ + "filters": [ + { + "column": "status", + "operator": "eq", + "value": "completed" + } + ] +} +``` + +`column` specifies the column/field of the model to filter on. + +`operator` specifies the type of operation to apply. + +`value` specifies the value to filter on. + +### Chaining + +Filters can be chained using the `and`, `or` and `not`, and defaults to `and`: + +```json +POST /tasks + +{ + "filters": [ + { + "column": "type", + "operator": "eq", + "value": "boefje" + }, + { + "column": "status", + "operator": "eq", + "value": "completed" + } + ] +} +``` + +Is the same as: + + +```json +POST /tasks + +{ + "filters": { + "and": [ + { + "column": "type", + "operator": "eq", + "value": "boefje" + }, + { + "column": "status", + "operator": "eq", + "value": "completed" + } + ] + } +} +``` + +Example using the `or` operator: + +```json +POST /tasks + +{ + "filters": { + "or": [ + { + "column": "status", + "operator": "eq", + "value": "completed" + }, + { + "column": "status", + "operator": "eq", + "value": "failed" + } + ] + } +} +``` + +Example using the `not` operator: + +```json +POST /tasks + +{ + "filters": { + "not": [ + { + "column": "status", + "operator": "eq", + "value": "completed" + } + ] + } +} +``` + +### Nested fields + +Querying on nested field is also possible. Note that both the `Task`, and +`PrioritizedItem` models both use a `JSONB` column. To query nested field in +these `JSONB` columns you can use the `__` (double under, dunder) separators, +to specify what nested field to filter on. + + +Example: + +```json +POST /tasks + +{ + "filters": [ + { + "column": "p_item", + "field": "data__input_ooi", + "operator": "like", + "value": "%internet%" + }, + { + "column": "p_item", + "field": "data__boefje__id", + "operator": "eq", + "value": "dns-zone" + } + ] +} +``` + +Operators +--------- + +Here's a list of the operators that you can use in the filters: + +| Operator | Description | +|---------------|-------------| +| `==`, `eq` | | +| `!=`, `ne` | | +| `is` | | +| `is_not` | | +| `is_null` | | +| `is_not_null` | | +| `>`, `gt` | | +| `<`, `lt` | | +| `>=`, `gte` | | +| `<=`, `lte` | | +| `like` | pattern matching | +| `not_like` | pattern matching | +| `ilike` | case-insensitive pattern matching | +| `not_ilike` | case-insensitive pattern matching | +| `in` | matching against a list of values | +| `not_in` | matching against a list of values | +| `contains` | substring matching | +| `any` | | +| `match` | | +| `starts_with` | | +| `@>` | Contains, used to check if one JSON or array value contains another JSON or array value | +| `<@` | Is contained by, it checks if one JSON or array value is contained by another JSON or array value | +| `@?` | Exists, used to check if a key exists in a JSON object | +| `@@` | Full text search, performs postgresql full text searching using queries (requires `tsvector` columns) | diff --git a/mula/docs/openapi.json b/mula/docs/openapi.json index af39f9143c4..c292ae9b88b 100644 --- a/mula/docs/openapi.json +++ b/mula/docs/openapi.json @@ -1,5 +1,5 @@ { - "openapi": "3.0.2", + "openapi": "3.1.0", "info": { "title": "FastAPI", "version": "0.1.0" @@ -8,6 +8,7 @@ "/": { "get": { "summary": "Root", + "description": "Root endpoint", "operationId": "root__get", "responses": { "200": { @@ -26,6 +27,7 @@ "/health": { "get": { "summary": "Health", + "description": "Health check endpoint", "operationId": "health_health_get", "responses": { "200": { @@ -44,6 +46,7 @@ "/metrics": { "get": { "summary": "Metrics", + "description": "OpenMetrics compliant metrics endpoint", "operationId": "metrics_metrics_get", "responses": { "200": { @@ -62,6 +65,7 @@ "/schedulers": { "get": { "summary": "Get Schedulers", + "description": "List all schedulers", "operationId": "get_schedulers_schedulers_get", "responses": { "200": { @@ -69,11 +73,11 @@ "content": { "application/json": { "schema": { - "title": "Response Get Schedulers Schedulers Get", - "type": "array", "items": { - "$ref": "#/components/schemas/Scheduler" - } + "$ref": "#/components/schemas/Scheduler-Output" + }, + "type": "array", + "title": "Response Get Schedulers Schedulers Get" } } } @@ -84,16 +88,17 @@ "/schedulers/{scheduler_id}": { "get": { "summary": "Get Scheduler", + "description": "Get a scheduler", "operationId": "get_scheduler_schedulers__scheduler_id__get", "parameters": [ { + "name": "scheduler_id", + "in": "path", "required": true, "schema": { - "title": "Scheduler Id", - "type": "string" - }, - "name": "scheduler_id", - "in": "path" + "type": "string", + "title": "Scheduler Id" + } } ], "responses": { @@ -102,7 +107,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Scheduler" + "$ref": "#/components/schemas/Scheduler-Output" } } } @@ -121,27 +126,28 @@ }, "patch": { "summary": "Patch Scheduler", + "description": "Update a scheduler", "operationId": "patch_scheduler_schedulers__scheduler_id__patch", "parameters": [ { + "name": "scheduler_id", + "in": "path", "required": true, "schema": { - "title": "Scheduler Id", - "type": "string" - }, - "name": "scheduler_id", - "in": "path" + "type": "string", + "title": "Scheduler Id" + } } ], "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Scheduler" + "$ref": "#/components/schemas/Scheduler-Input" } } - }, - "required": true + } }, "responses": { "200": { @@ -149,7 +155,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Scheduler" + "$ref": "#/components/schemas/Scheduler-Output" } } } @@ -170,94 +176,161 @@ "/schedulers/{scheduler_id}/tasks": { "get": { "summary": "List Tasks", + "description": "List all tasks for a scheduler", "operationId": "list_tasks_schedulers__scheduler_id__tasks_get", "parameters": [ { + "name": "scheduler_id", + "in": "path", "required": true, "schema": { - "title": "Scheduler Id", - "type": "string" - }, - "name": "scheduler_id", - "in": "path" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Scheduler Id" + } }, { + "name": "task_type", + "in": "query", "required": false, "schema": { - "title": "Task Type", - "type": "string" - }, - "name": "task_type", - "in": "query" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Task Type" + } }, { + "name": "status", + "in": "query", "required": false, "schema": { - "title": "Status", - "type": "string" - }, - "name": "status", - "in": "query" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } }, { + "name": "offset", + "in": "query", "required": false, "schema": { - "title": "Offset", "type": "integer", - "default": 0 - }, - "name": "offset", - "in": "query" + "default": 0, + "title": "Offset" + } }, { + "name": "limit", + "in": "query", "required": false, "schema": { - "title": "Limit", "type": "integer", - "default": 10 - }, - "name": "limit", - "in": "query" + "default": 10, + "title": "Limit" + } }, { + "name": "min_created_at", + "in": "query", "required": false, "schema": { - "title": "Min Created At", - "type": "string", - "format": "date-time" - }, - "name": "min_created_at", - "in": "query" + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Min Created At" + } }, { + "name": "max_created_at", + "in": "query", "required": false, "schema": { - "title": "Max Created At", - "type": "string", - "format": "date-time" - }, - "name": "max_created_at", - "in": "query" + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Max Created At" + } }, { + "name": "input_ooi", + "in": "query", "required": false, "schema": { - "title": "Input Ooi", - "type": "string" - }, - "name": "input_ooi", - "in": "query" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Ooi" + } }, { + "name": "plugin_id", + "in": "query", "required": false, "schema": { - "title": "Plugin Id", - "type": "string" - }, - "name": "plugin_id", - "in": "query" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Plugin Id" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/FilterRequest" + }, + { + "type": "null" + } + ], + "title": "Filters" + } + } + } + }, "responses": { "200": { "description": "Successful Response", @@ -283,182 +356,162 @@ } }, "/tasks": { - "get": { + "post": { "summary": "List Tasks", - "operationId": "list_tasks_tasks_get", + "description": "List all tasks", + "operationId": "list_tasks_tasks_post", "parameters": [ { + "name": "scheduler_id", + "in": "query", "required": false, "schema": { - "title": "Scheduler Id", - "type": "string" - }, - "name": "scheduler_id", - "in": "query" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Scheduler Id" + } }, { + "name": "task_type", + "in": "query", "required": false, "schema": { - "title": "Task Type", - "type": "string" - }, - "name": "task_type", - "in": "query" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Task Type" + } }, { + "name": "status", + "in": "query", "required": false, "schema": { - "title": "Status", - "type": "string" - }, - "name": "status", - "in": "query" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } }, { + "name": "offset", + "in": "query", "required": false, "schema": { - "title": "Offset", "type": "integer", - "default": 0 - }, - "name": "offset", - "in": "query" + "default": 0, + "title": "Offset" + } }, { + "name": "limit", + "in": "query", "required": false, "schema": { - "title": "Limit", "type": "integer", - "default": 10 - }, - "name": "limit", - "in": "query" + "default": 10, + "title": "Limit" + } }, { - "required": false, - "schema": { - "title": "Min Created At", - "type": "string", - "format": "date-time" - }, "name": "min_created_at", - "in": "query" - }, - { + "in": "query", "required": false, "schema": { - "title": "Max Created At", - "type": "string", - "format": "date-time" - }, - "name": "max_created_at", - "in": "query" + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Min Created At" + } }, { + "name": "max_created_at", + "in": "query", "required": false, "schema": { - "title": "Input Ooi", - "type": "string" - }, - "name": "input_ooi", - "in": "query" + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Max Created At" + } }, { + "name": "input_ooi", + "in": "query", "required": false, "schema": { - "title": "Plugin Id", - "type": "string" - }, - "name": "plugin_id", - "in": "query" - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PaginatedResponse" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" } - } + ], + "title": "Input Ooi" } }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/tasks/{task_id}": { - "get": { - "summary": "Get Task", - "operationId": "get_task_tasks__task_id__get", - "parameters": [ { - "required": true, + "name": "plugin_id", + "in": "query", + "required": false, "schema": { - "title": "Task Id", - "type": "string" - }, - "name": "task_id", - "in": "path" - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Task" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" } - } + ], + "title": "Plugin Id" } } - } - }, - "patch": { - "summary": "Patch Task", - "operationId": "patch_task_tasks__task_id__patch", - "parameters": [ - { - "required": true, - "schema": { - "title": "Task Id", - "type": "string" - }, - "name": "task_id", - "in": "path" - } ], "requestBody": { "content": { "application/json": { "schema": { - "title": "Item", - "type": "object" + "anyOf": [ + { + "$ref": "#/components/schemas/FilterRequest" + }, + { + "type": "null" + } + ], + "title": "Filters" } } - }, - "required": true + } }, "responses": { "200": { @@ -466,7 +519,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Task" + "$ref": "#/components/schemas/PaginatedResponse" } } } @@ -482,23 +535,415 @@ } } } - } - }, - "/queues": { + }, "get": { - "summary": "Get Queues", - "operationId": "get_queues_queues_get", + "summary": "List Tasks", + "description": "List all tasks", + "operationId": "list_tasks_tasks_post", + "parameters": [ + { + "name": "scheduler_id", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Scheduler Id" + } + }, + { + "name": "task_type", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Task Type" + } + }, + { + "name": "status", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "name": "offset", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "default": 0, + "title": "Offset" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "default": 10, + "title": "Limit" + } + }, + { + "name": "min_created_at", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Min Created At" + } + }, + { + "name": "max_created_at", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Max Created At" + } + }, + { + "name": "input_ooi", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Ooi" + } + }, + { + "name": "plugin_id", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Plugin Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/FilterRequest" + }, + { + "type": "null" + } + ], + "title": "Filters" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/tasks/stats": { + "get": { + "summary": "Get Task Stats", + "description": "Get task status counts for all schedulers in last 24 hours", + "operationId": "get_task_stats_tasks_stats_get", + "parameters": [ + { + "name": "scheduler_id", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Scheduler Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "type": "integer" + } + } + }, + { + "type": "null" + } + ], + "title": "Response Get Task Stats Tasks Stats Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/tasks/stats/{scheduler_id}": { + "get": { + "summary": "Get Task Stats", + "description": "Get task status counts for a scheduler in last 24 hours", + "operationId": "get_task_stats_tasks_stats__scheduler_id__get", + "parameters": [ + { + "name": "scheduler_id", + "in": "path", + "required": true, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Scheduler Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "type": "integer" + } + } + }, + { + "type": "null" + } + ], + "title": "Response Get Task Stats Tasks Stats Scheduler Id Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/tasks/{task_id}": { + "get": { + "summary": "Get Task", + "description": "Get a task", + "operationId": "get_task_tasks__task_id__get", + "parameters": [ + { + "name": "task_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Task Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Task" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "patch": { + "summary": "Patch Task", + "description": "Update a task", + "operationId": "patch_task_tasks__task_id__patch", + "parameters": [ + { + "name": "task_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Task Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "Item" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Task" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/queues": { + "get": { + "summary": "Get Queues", + "description": "List all queues", + "operationId": "get_queues_queues_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { - "title": "Response Get Queues Queues Get", - "type": "array", "items": { "$ref": "#/components/schemas/Queue" - } + }, + "type": "array", + "title": "Response Get Queues Queues Get" } } } @@ -509,16 +954,17 @@ "/queues/{queue_id}": { "get": { "summary": "Get Queue", + "description": "Get a queue", "operationId": "get_queue_queues__queue_id__get", "parameters": [ { + "name": "queue_id", + "in": "path", "required": true, "schema": { - "title": "Queue Id", - "type": "string" - }, - "name": "queue_id", - "in": "path" + "type": "string", + "title": "Queue Id" + } } ], "responses": { @@ -548,27 +994,32 @@ "/queues/{queue_id}/pop": { "post": { "summary": "Pop Queue", + "description": "Pop an item from a queue", "operationId": "pop_queue_queues__queue_id__pop_post", "parameters": [ { + "name": "queue_id", + "in": "path", "required": true, "schema": { - "title": "Queue Id", - "type": "string" - }, - "name": "queue_id", - "in": "path" + "type": "string", + "title": "Queue Id" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "title": "Filters", - "type": "array", - "items": { - "$ref": "#/components/schemas/Filter" - } + "anyOf": [ + { + "$ref": "#/components/schemas/FilterRequest" + }, + { + "type": "null" + } + ], + "title": "Filters" } } } @@ -579,7 +1030,15 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PrioritizedItem" + "anyOf": [ + { + "$ref": "#/components/schemas/PrioritizedItem-Output" + }, + { + "type": "null" + } + ], + "title": "Response Pop Queue Queues Queue Id Pop Post" } } } @@ -600,27 +1059,28 @@ "/queues/{queue_id}/push": { "post": { "summary": "Push Queue", + "description": "Push an item to a queue", "operationId": "push_queue_queues__queue_id__push_post", "parameters": [ { + "name": "queue_id", + "in": "path", "required": true, "schema": { - "title": "Queue Id", - "type": "string" - }, - "name": "queue_id", - "in": "path" + "type": "string", + "title": "Queue Id" + } } ], "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PrioritizedItem" + "$ref": "#/components/schemas/PrioritizedItem-Input" } } - }, - "required": true + } }, "responses": { "201": { @@ -650,287 +1110,580 @@ "components": { "schemas": { "Filter": { - "title": "Filter", + "properties": { + "column": { + "type": "string", + "title": "Column" + }, + "field": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Field" + }, + "operator": { + "type": "string", + "enum": [ + "==", + "eq", + "!=", + "ne", + "is", + "is_not", + "is_null", + "is_not_null", + ">", + "gt", + "<", + "lt", + ">=", + "gte", + "<=", + "lte", + "like", + "not_like", + "ilike", + "not_ilike", + "in", + "not_in", + "contains", + "any", + "match", + "starts_with", + "@>", + "<@", + "@?", + "@@" + ], + "title": "Operator" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "items": { + "type": "boolean" + }, + "type": "array" + }, + { + "items": { + "type": "null" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Value" + } + }, + "type": "object", "required": [ - "field", + "column", "operator", "value" ], + "title": "Filter", + "description": "Represents a filter condition.\n\nAttributes:\n column: The name of the column to filter on.\n field: An optional field name for nested filtering.\n operator: The comparison operator for the filter.\n value: The value to compare against." + }, + "FilterRequest": { + "properties": { + "filters": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/Filter" + }, + "type": "array" + }, + { + "additionalProperties": { + "items": { + "$ref": "#/components/schemas/Filter" + }, + "type": "array" + }, + "type": "object" + } + ], + "title": "Filters" + } + }, + "type": "object", + "required": [ + "filters" + ], + "title": "FilterRequest", + "description": "Represents a filter request.\n\nArgs:\n filters: The filter criteria, which can be a list of Filter objects or\n a dictionary of lists." + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/components/schemas/ValidationError" + }, + "type": "array", + "title": "Detail" + } + }, "type": "object", + "title": "HTTPValidationError" + }, + "PaginatedResponse": { + "properties": { + "count": { + "type": "integer", + "title": "Count" + }, + "next": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Next" + }, + "previous": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Previous" + }, + "results": { + "items": {}, + "type": "array", + "title": "Results" + } + }, + "type": "object", + "required": [ + "count", + "next", + "previous", + "results" + ], + "title": "PaginatedResponse" + }, + "PrioritizedItem-Input": { "properties": { - "field": { - "title": "Field", - "type": "string" + "id": { + "type": "string", + "format": "uuid", + "title": "Id" }, - "operator": { - "title": "Operator", - "enum": [ - "eq", - "ne", - "lt", - "le", - "gt", - "ge", - "in_", - "notin_" + "scheduler_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } ], - "type": "string" + "title": "Scheduler Id" }, - "value": { - "title": "Value", + "hash": { "anyOf": [ { - "type": "string" + "type": "string", + "maxLength": 32 }, + { + "type": "null" + } + ], + "title": "Hash" + }, + "priority": { + "anyOf": [ { "type": "integer" }, { - "type": "string", - "format": "date" + "type": "null" } - ] - } - } - }, - "HTTPValidationError": { - "title": "HTTPValidationError", - "type": "object", - "properties": { - "detail": { - "title": "Detail", - "type": "array", - "items": { - "$ref": "#/components/schemas/ValidationError" - } - } - } - }, - "PaginatedResponse": { - "title": "PaginatedResponse", - "required": [ - "count", - "results" - ], - "type": "object", - "properties": { - "count": { - "title": "Count", - "type": "integer" + ], + "title": "Priority" }, - "next": { - "title": "Next", - "type": "string" + "data": { + "type": "object", + "title": "Data" }, - "previous": { - "title": "Previous", - "type": "string" + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" }, - "results": { - "title": "Results", - "type": "array", - "items": {} + "modified_at": { + "type": "string", + "format": "date-time", + "title": "Modified At" } - } - }, - "PrioritizedItem": { - "title": "PrioritizedItem", + }, + "type": "object", "required": [ + "priority", "data" ], - "type": "object", + "title": "PrioritizedItem", + "description": "Representation of an queue.PrioritizedItem on the priority queue. Used\nfor unmarshalling of priority queue prioritized items to a JSON\nrepresentation." + }, + "PrioritizedItem-Output": { "properties": { "id": { - "title": "Id", "type": "string", - "format": "uuid" + "format": "uuid", + "title": "Id" }, "scheduler_id": { - "title": "Scheduler Id", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Scheduler Id" }, "hash": { - "title": "Hash", - "maxLength": 32, - "type": "string" + "anyOf": [ + { + "type": "string", + "maxLength": 32 + }, + { + "type": "null" + } + ], + "title": "Hash" }, "priority": { - "title": "Priority", - "type": "integer" + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Priority" }, "data": { - "title": "Data", - "type": "object" + "type": "object", + "title": "Data" }, "created_at": { - "title": "Created At", "type": "string", - "format": "date-time" + "format": "date-time", + "title": "Created At" }, "modified_at": { - "title": "Modified At", "type": "string", - "format": "date-time" + "format": "date-time", + "title": "Modified At" } }, - "description": "Representation of an queue.PrioritizedItem on the priority queue. Used\nfor unmarshalling of priority queue prioritized items to a JSON\nrepresentation." - }, - "Queue": { - "title": "Queue", + "type": "object", "required": [ "id", - "size", - "maxsize", - "item_type", - "allow_replace", - "allow_updates", - "allow_priority_updates" + "scheduler_id", + "hash", + "priority", + "data", + "created_at", + "modified_at" ], - "type": "object", + "title": "PrioritizedItem", + "description": "Representation of an queue.PrioritizedItem on the priority queue. Used\nfor unmarshalling of priority queue prioritized items to a JSON\nrepresentation." + }, + "Queue": { "properties": { "id": { - "title": "Id", - "type": "string" + "type": "string", + "title": "Id" }, "size": { - "title": "Size", - "type": "integer" + "type": "integer", + "title": "Size" }, "maxsize": { - "title": "Maxsize", - "type": "integer" + "type": "integer", + "title": "Maxsize" }, "item_type": { - "title": "Item Type", - "type": "string" + "type": "string", + "title": "Item Type" }, "allow_replace": { - "title": "Allow Replace", - "type": "boolean" + "type": "boolean", + "title": "Allow Replace" }, "allow_updates": { - "title": "Allow Updates", - "type": "boolean" + "type": "boolean", + "title": "Allow Updates" }, "allow_priority_updates": { - "title": "Allow Priority Updates", - "type": "boolean" + "type": "boolean", + "title": "Allow Priority Updates" }, "pq": { - "title": "Pq", - "type": "array", - "items": { - "$ref": "#/components/schemas/PrioritizedItem" - } + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/PrioritizedItem-Output" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Pq" } }, - "description": "Representation of an queue.PriorityQueue object. Used for unmarshalling\nof priority queues to a JSON representation." - }, - "Scheduler": { - "title": "Scheduler", "type": "object", + "required": [ + "id", + "size", + "maxsize", + "item_type", + "allow_replace", + "allow_updates", + "allow_priority_updates", + "pq" + ], + "title": "Queue" + }, + "Scheduler-Input": { "properties": { "id": { - "title": "Id", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Id" }, "enabled": { - "title": "Enabled", - "type": "boolean" + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Enabled" }, "priority_queue": { - "title": "Priority Queue", - "type": "object" + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Priority Queue" } }, + "type": "object", + "title": "Scheduler", "description": "Representation of a schedulers.Scheduler instance. Used for\nunmarshalling of schedulers to a JSON representation." }, - "ServiceHealth": { - "title": "ServiceHealth", + "Scheduler-Output": { + "properties": { + "id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Id" + }, + "enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Enabled" + }, + "priority_queue": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Priority Queue" + } + }, + "type": "object", "required": [ - "service" + "id", + "enabled", + "priority_queue" ], - "type": "object", + "title": "Scheduler", + "description": "Representation of a schedulers.Scheduler instance. Used for\nunmarshalling of schedulers to a JSON representation." + }, + "ServiceHealth": { "properties": { "service": { - "title": "Service", - "type": "string" + "type": "string", + "title": "Service" }, "healthy": { - "title": "Healthy", "type": "boolean", + "title": "Healthy", "default": false }, "version": { - "title": "Version", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Version" }, "additional": { "title": "Additional" }, "results": { - "title": "Results", - "type": "array", "items": { "$ref": "#/components/schemas/ServiceHealth" }, + "type": "array", + "title": "Results", "default": [] }, "externals": { - "title": "Externals", - "type": "object", "additionalProperties": { "type": "boolean" }, + "type": "object", + "title": "Externals", "default": {} } }, + "type": "object", + "required": [ + "service", + "healthy", + "version", + "additional", + "results", + "externals" + ], + "title": "ServiceHealth", "description": "ServiceHealth is used as response model for health check in the\nserver.Server for the health endpoint." }, "Task": { - "title": "Task", - "required": [ - "id", - "scheduler_id", - "type", - "p_item", - "status" - ], - "type": "object", "properties": { "id": { - "title": "Id", "type": "string", - "format": "uuid" + "format": "uuid", + "title": "Id" }, "scheduler_id": { - "title": "Scheduler Id", - "type": "string" + "type": "string", + "title": "Scheduler Id" }, "type": { - "title": "Type", - "type": "string" + "type": "string", + "title": "Type" }, "p_item": { - "$ref": "#/components/schemas/PrioritizedItem" + "$ref": "#/components/schemas/PrioritizedItem-Output" }, "status": { "$ref": "#/components/schemas/TaskStatus" }, "created_at": { - "title": "Created At", "type": "string", - "format": "date-time" + "format": "date-time", + "title": "Created At" }, "modified_at": { - "title": "Modified At", "type": "string", - "format": "date-time" + "format": "date-time", + "title": "Modified At" } - } + }, + "type": "object", + "required": [ + "id", + "scheduler_id", + "type", + "p_item", + "status", + "created_at", + "modified_at" + ], + "title": "Task" }, "TaskStatus": { - "title": "TaskStatus", + "type": "string", "enum": [ "pending", "queued", @@ -940,21 +1693,11 @@ "failed", "cancelled" ], - "type": "string", - "description": "Status of a task." + "title": "TaskStatus" }, "ValidationError": { - "title": "ValidationError", - "required": [ - "loc", - "msg", - "type" - ], - "type": "object", "properties": { "loc": { - "title": "Location", - "type": "array", "items": { "anyOf": [ { @@ -964,17 +1707,26 @@ "type": "integer" } ] - } + }, + "type": "array", + "title": "Location" }, "msg": { - "title": "Message", - "type": "string" + "type": "string", + "title": "Message" }, "type": { - "title": "Error Type", - "type": "string" + "type": "string", + "title": "Error Type" } - } + }, + "type": "object", + "required": [ + "loc", + "msg", + "type" + ], + "title": "ValidationError" } } } From 492f680c806c1aa824d2240e87ec622b57170fe5 Mon Sep 17 00:00:00 2001 From: Jan Klopper Date: Tue, 14 Nov 2023 12:11:08 +0100 Subject: [PATCH 12/30] Fix external links to not include opener rights. (#2026) --- rocky/katalogus/templates/partials/plugin_tile.html | 2 +- .../ooi_report_findings_block_table_expanded_row.html | 4 +++- rocky/rocky/templates/partials/ooi_summary_block.html | 6 ++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/rocky/katalogus/templates/partials/plugin_tile.html b/rocky/katalogus/templates/partials/plugin_tile.html index 0e4fe3a00cf..2a4b2487cc0 100644 --- a/rocky/katalogus/templates/partials/plugin_tile.html +++ b/rocky/katalogus/templates/partials/plugin_tile.html @@ -16,7 +16,7 @@ {% endif %} - OpenKAT + OpenKAT
{% include "partials/enable_disable_plugin.html" with plugin=plugin %} diff --git a/rocky/rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html b/rocky/rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html index 35d0446cb78..eff897cdff0 100644 --- a/rocky/rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +++ b/rocky/rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html @@ -44,7 +44,9 @@

{% translate "Finding details" %}

{% endif %} diff --git a/rocky/rocky/templates/partials/ooi_summary_block.html b/rocky/rocky/templates/partials/ooi_summary_block.html index 8fb50f4c42a..3078d54e7bc 100644 --- a/rocky/rocky/templates/partials/ooi_summary_block.html +++ b/rocky/rocky/templates/partials/ooi_summary_block.html @@ -39,7 +39,8 @@

Jobs that found {{ tree_node.human_readable }}

{% if job.ooi_type == "Job" %}
  • {{ job.human_readable }} + target="_blank" + rel="noopener noreferrer">{{ job.human_readable }}
  • {% endif %} {% endfor %} @@ -97,7 +98,8 @@

    Jobs that found {{ tree_node.human_readable }}

    {% if job.ooi_type == "Job" %}
  • {{ job.human_readable }} + target="_blank" + rel="noopener noreferrer">{{ job.human_readable }}
  • {% endif %} {% endfor %} From 4ea72cce91c8a5a863615332825c526386d4fe7c Mon Sep 17 00:00:00 2001 From: Mark Janssen Date: Tue, 14 Nov 2023 13:00:35 +0100 Subject: [PATCH 13/30] Sigrid-CI integration (#2027) Co-authored-by: ammar92 Co-authored-by: Jan Klopper --- .github/workflows/sigrid-publish.yml | 20 ++++++++++++++++++++ .github/workflows/sigrid-pullrequest.yml | 22 ++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 .github/workflows/sigrid-publish.yml create mode 100644 .github/workflows/sigrid-pullrequest.yml diff --git a/.github/workflows/sigrid-publish.yml b/.github/workflows/sigrid-publish.yml new file mode 100644 index 00000000000..5969c097b04 --- /dev/null +++ b/.github/workflows/sigrid-publish.yml @@ -0,0 +1,20 @@ +name: Publish to Sigrid +on: + push: + branches: + - main + +jobs: + sigridci: + runs-on: ubuntu-latest + steps: + - name: Check out repository + uses: actions/checkout@v3 + - name: Sigrid CI + uses: Software-Improvement-Group/sigridci@main + with: + customer: vws + system: kat + publishonly: true + env: + SIGRID_CI_TOKEN: "${{ secrets.SIGRID_CI_TOKEN }}" diff --git a/.github/workflows/sigrid-pullrequest.yml b/.github/workflows/sigrid-pullrequest.yml new file mode 100644 index 00000000000..e2f225bb8ef --- /dev/null +++ b/.github/workflows/sigrid-pullrequest.yml @@ -0,0 +1,22 @@ +name: Sigrid pull request feedback +on: [pull_request] + +jobs: + sigridci: + runs-on: ubuntu-latest + steps: + - name: Check out repository + uses: actions/checkout@v3 + - name: Sigrid CI + uses: Software-Improvement-Group/sigridci@main + with: + customer: vws + system: kat + env: + SIGRID_CI_TOKEN: "${{ secrets.SIGRID_CI_TOKEN }}" +# - name: "Sigrid pull request feedback" +# uses: mshick/add-pr-comment@v2 +# if: always() +# with: +# message-id: sigrid +# message-path: sigrid-ci-output/feedback.md From 0bfcfacaeae97c42a07bac6f5536800eb23857fa Mon Sep 17 00:00:00 2001 From: stephanie0x00 <9821756+stephanie0x00@users.noreply.github.com> Date: Tue, 14 Nov 2023 19:53:27 +0100 Subject: [PATCH 14/30] Update intro.rst (#2032) Co-authored-by: ammar92 Co-authored-by: Jan Klopper --- docs/source/introduction/intro.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/source/introduction/intro.rst b/docs/source/introduction/intro.rst index e7f092b4657..badc47f16f6 100644 --- a/docs/source/introduction/intro.rst +++ b/docs/source/introduction/intro.rst @@ -39,7 +39,7 @@ Where do I start with OpenKAT? The documentation explains how the system works and what the main principles are. This gives an impression, but after reading the documentation, trying it yourself is the best way to find out how OpenKAT works. There are `several options to install OpenKAT `_. -The easiest way to get to know the system is a local installation. If you don't have a debian or ubuntu machine (yet), try the Gitpod test environment. `The installation chapter `_ has a comprehensive roadmap for creating a local installation. In addition to the documentation, read `the readme from the general repository `_ (dutch). +The easiest way to get to know the system is a local installation. If you don't have a debian or ubuntu machine (yet), try the Gitpod test environment. `The installation chapter `_ has a comprehensive roadmap for creating a local installation. In addition to the documentation, read `the readme from the general repository `_. Where is the software located? ============================== @@ -53,6 +53,8 @@ OpenKAT scans for vulnerabilities. If you find any, it is valid that you deal wi Many organizations have their contact information in ``security.txt`` in the root of their domain, so you get straight to the right people. Not every organization handles it equally professionally, but that's no reason not to want to use that standard yourself. +If you find any vulnerabilities in the software of OpenKAT itself you can report them per e-mail to: security @ rdobeheer.nl (remove the spaces). + What are the plans for the future? ================================== From 634e20231d577c4de8351891d65d165f93782e2b Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Wed, 15 Nov 2023 12:05:45 +0100 Subject: [PATCH 15/30] Translations update from Hosted Weblate (#1995) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: LibreTranslate Co-authored-by: Weblate Translation Memory Co-authored-by: jan klopper Co-authored-by: 跨性别 Co-authored-by: ammar92 --- .../locale/en@pirate/LC_MESSAGES/django.po | 5690 +++++++++++++++++ rocky/rocky/locale/fy/LC_MESSAGES/django.po | 5690 +++++++++++++++++ rocky/rocky/locale/it/LC_MESSAGES/django.po | 232 +- rocky/rocky/locale/nl/LC_MESSAGES/django.po | 738 ++- rocky/rocky/locale/pap/LC_MESSAGES/django.po | 232 +- 5 files changed, 12181 insertions(+), 401 deletions(-) create mode 100644 rocky/rocky/locale/en@pirate/LC_MESSAGES/django.po create mode 100644 rocky/rocky/locale/fy/LC_MESSAGES/django.po diff --git a/rocky/rocky/locale/en@pirate/LC_MESSAGES/django.po b/rocky/rocky/locale/en@pirate/LC_MESSAGES/django.po new file mode 100644 index 00000000000..22351af2210 --- /dev/null +++ b/rocky/rocky/locale/en@pirate/LC_MESSAGES/django.po @@ -0,0 +1,5690 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# jan klopper , 2023. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-11-09 14:01+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: en@pirate\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: account/admin.py +msgid "Permissions" +msgstr "" + +#: account/admin.py +msgid "Important dates" +msgstr "" + +#: account/forms/account_setup.py katalogus/templates/katalogus_settings.html +#: katalogus/templates/plugin_settings_list.html +#: reports/report_types/tls_report/report.html +#: rocky/templates/organizations/organization_list.html +#: rocky/templates/organizations/organization_settings.html +#: rocky/templates/partials/ooi_detail_related_object.html +msgid "Name" +msgstr "" + +#: account/forms/account_setup.py +msgid "This name we will use to communicate with you." +msgstr "" + +#: account/forms/account_setup.py +msgid "What do we call you?" +msgstr "" + +#: account/forms/account_setup.py +msgid "Email" +msgstr "" + +#: account/forms/account_setup.py +msgid "Enter your email address." +msgstr "" + +#: account/forms/account_setup.py +msgid "Password" +msgstr "" + +#: account/forms/account_setup.py +msgid "Choose your super secret password" +msgstr "" + +#: account/forms/account_setup.py +msgid "Choose another email." +msgstr "" + +#: account/forms/account_setup.py tools/forms/settings.py +msgid "--- Please select one of the available options ----" +msgstr "" + +#: account/forms/account_setup.py +msgid "Account Type" +msgstr "" + +#: account/forms/account_setup.py +msgid "Every member of OpenKAT must be part of an account type." +msgstr "" + +#: account/forms/account_setup.py +msgid "Please select an account type to proceed." +msgstr "" + +#: account/forms/account_setup.py +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +msgid "Trusted clearance level" +msgstr "" + +#: account/forms/account_setup.py +msgid "Select a clearance level you trust this member with." +msgstr "" + +#: account/forms/account_setup.py onboarding/forms.py tools/forms/ooi.py +msgid "Please select a clearance level to proceed." +msgstr "" + +#: account/forms/account_setup.py +msgid "The name of the organization." +msgstr "" + +#: account/forms/account_setup.py +msgid "explanation-organization-name" +msgstr "" + +#: account/forms/account_setup.py +#, python-brace-format +msgid "A unique code of {code_length} characters." +msgstr "" + +#: account/forms/account_setup.py +msgid "explanation-organization-code" +msgstr "" + +#: account/forms/account_setup.py +msgid "Organization name is required to proceed." +msgstr "" + +#: account/forms/account_setup.py +msgid "Choose another organization." +msgstr "" + +#: account/forms/account_setup.py +msgid "Organization code is required to proceed." +msgstr "" + +#: account/forms/account_setup.py +msgid "Choose another code for your organization." +msgstr "" + +#: account/forms/account_setup.py +msgid "" +"I declare that OpenKAT may scan the assets of my organization and that I " +"have permission to scan these assets. I am aware of the implications a scan " +"with a higher scan level brings on my systems." +msgstr "" + +#: account/forms/account_setup.py +msgid "" +"I declare that I am authorized to give this indemnification within my " +"organization. I have the experience and knowledge to know what the " +"consequences might be and can be held responsible for them." +msgstr "" + +#: account/forms/account_setup.py +msgid "Trusted to change Clearance Levels." +msgstr "" + +#: account/forms/account_setup.py +msgid "Acknowledged to change Clearance Levels." +msgstr "" + +#: account/forms/account_setup.py +#: rocky/templates/organizations/organization_member_list.html +#: rocky/views/organization_member_list.py +msgid "Blocked" +msgstr "" + +#: account/forms/account_setup.py +msgid "" +"Set the members status to blocked, so they don't have access to the " +"organization anymore." +msgstr "" + +#: account/forms/account_setup.py +#: rocky/templates/organizations/organization_member_list.html +msgid "Accepted clearance level" +msgstr "" + +#: account/forms/account_setup.py +msgid "Enter tags separated by comma." +msgstr "" + +#: account/forms/account_setup.py +msgid "The two password fields didn’t match." +msgstr "" + +#: account/forms/account_setup.py +msgid "New password" +msgstr "" + +#: account/forms/account_setup.py +msgid "Enter your new password" +msgstr "" + +#: account/forms/account_setup.py +msgid "New password confirmation" +msgstr "" + +#: account/forms/account_setup.py +msgid "Repeat your new password" +msgstr "" + +#: account/forms/account_setup.py +msgid "Confirm your new password" +msgstr "" + +#: account/forms/login.py +msgid "Please enter a correct email address and password." +msgstr "" + +#: account/forms/login.py +msgid "This account is inactive." +msgstr "" + +#: account/forms/login.py +msgid "Insert the email you registered with or got at OpenKAT installation." +msgstr "" + +#: account/forms/organization.py +msgid "Organization is required." +msgstr "" + +#: account/forms/organization.py tools/view_helpers.py +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/organizations/organization_list.html +#: rocky/views/organization_add.py +msgid "Organizations" +msgstr "" + +#: account/forms/organization.py +msgid "The organization from which to clone settings." +msgstr "" + +#: account/forms/password_reset.py +msgid "Email address" +msgstr "" + +#: account/forms/password_reset.py +msgid "A reset link will be sent to this email" +msgstr "" + +#: account/forms/password_reset.py +msgid "The email address connected to your OpenKAT-account" +msgstr "" + +#: account/forms/token.py +msgid "" +"Insert the token generated by the authenticator app to setup the two factor " +"authentication." +msgstr "" + +#: account/forms/token.py +msgid "Insert the token generated by your token authenticator app." +msgstr "" + +#: account/forms/token.py +msgid "Backup token" +msgstr "" + +#: account/models.py +msgid "The Email must be set" +msgstr "" + +#: account/models.py +msgid "Superuser must have is_staff=True." +msgstr "" + +#: account/models.py +msgid "Superuser must have is_superuser=True." +msgstr "" + +#: account/models.py +msgid "full name" +msgstr "" + +#: account/models.py +msgid "email" +msgstr "" + +#: account/models.py +msgid "staff status" +msgstr "" + +#: account/models.py +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: account/models.py tools/models.py +msgid "active" +msgstr "" + +#: account/models.py +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: account/models.py +msgid "date joined" +msgstr "" + +#: account/templates/account_detail.html account/views/account.py +msgid "Account details" +msgstr "" + +#: account/templates/account_detail.html account/templates/password_reset.html +#: account/views/password_reset.py +msgid "Reset password" +msgstr "" + +#: account/templates/account_detail.html +msgid "Full name" +msgstr "" + +#: account/templates/account_detail.html +msgid "E-mail address" +msgstr "" + +#: account/templates/account_detail.html +msgid "Member type" +msgstr "" + +#: account/templates/account_detail.html +#: onboarding/templates/account/step_2a_organization_setup.html +#: onboarding/templates/account/step_2a_organization_update.html +#: rocky/templates/crisis_room/crisis_room_findings_block.html +#: rocky/templates/organizations/organization_member_list.html +#: rocky/templates/organizations/organization_settings.html +msgid "Organization" +msgstr "" + +#: account/templates/account_detail.html +msgid "Permission to set OOI clearance levels " +msgstr "" + +#: account/templates/account_detail.html +msgid "OOI clearance" +msgstr "" + +#: account/templates/account_detail.html +msgid "" +"\n" +" You don't have any clearance to scan objects." +"
    \n" +" Get in contact with the admin to give you the " +"necessary clearance level.\n" +" " +msgstr "" + +#: account/templates/account_detail.html +msgid "You have currently accepted clearance up to level " +msgstr "" + +#: account/templates/account_detail.html +msgid "Explanation OOI Clearance" +msgstr "" + +#: account/templates/account_detail.html +msgid "" +"You can withdraw this at anytime you like, but know that you won't be able " +"to change clearance levels anymore when you do." +msgstr "" + +#: account/templates/account_detail.html +#, python-format +msgid "" +"\n" +" \"Withdraw acceptance of level L%(acl)s " +"clearance and responsibility\"\n" +" " +msgstr "" + +#: account/templates/account_detail.html +msgid "Explanation OOI clearance" +msgstr "" + +#: account/templates/account_detail.html +#, python-format +msgid "" +"You are granted clearance for level L%(tcl)s by your admin. Before you can " +"change OOI clearance levels up to this level, you need to accept this " +"permission. Remember: with great power comes great responsibility." +msgstr "" + +#: account/templates/account_detail.html +#, python-format +msgid "" +"\n" +" \"Accept level L%(tcl)s clearance and " +"responsibility\"\n" +" " +msgstr "" + +#: account/templates/password_reset.html +msgid "Use the form below to reset your password." +msgstr "" + +#: account/templates/password_reset.html +#: account/templates/password_reset_confirm.html +msgid "Back" +msgstr "" + +#: account/templates/password_reset.html +#: account/templates/password_reset_confirm.html +msgid "Send" +msgstr "" + +#: account/templates/password_reset_confirm.html +msgid "Confirm reset password" +msgstr "" + +#: account/templates/password_reset_confirm.html +msgid "Use the form below to confirm resetting your password" +msgstr "" + +#: account/templates/password_reset_confirm.html +msgid "Confirm password" +msgstr "" + +#: account/templates/password_reset_confirm.html +msgid "The link is invalid" +msgstr "" + +#: account/templates/password_reset_confirm.html +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" + +#: account/templates/password_reset_email.html +#, python-format +msgid "" +"You're receiving this email because you requested a password reset for your " +"user account at %(site_name)s." +msgstr "" + +#: account/templates/password_reset_email.html +#: account/templates/registration_email.html +msgid "Please go to the following page and choose a new password:" +msgstr "" + +#: account/templates/password_reset_email.html +#: account/templates/registration_email.html +msgid "Sincerely," +msgstr "" + +#: account/templates/password_reset_email.html +#: account/templates/registration_email.html +msgid "The OpenKAT team" +msgstr "" + +#: account/templates/password_reset_subject.txt +#, python-format +msgid "Password reset on %(site_name)s" +msgstr "" + +#: account/templates/recover_email.html account/views/recover_email.py +msgid "Recover email address" +msgstr "" + +#: account/templates/recover_email.html +msgid "Information on how to recover your connected email address" +msgstr "" + +#: account/templates/recover_email.html +msgid "Forgotten email address?" +msgstr "" + +#: account/templates/recover_email.html +msgid "" +"If you don’t remember the email address connected to your account, contact: " +msgstr "" + +#: account/templates/recover_email.html +msgid "Please contact the system administrator." +msgstr "" + +#: account/templates/recover_email.html +msgid "Back to Home" +msgstr "" + +#: account/templates/recover_email.html +msgid "Back to login" +msgstr "" + +#: account/templates/registration_email.html +#, python-format +msgid "" +"Welcome to OpenKAT. You're receiving this email because you have been added " +"to organization \"%(organization)s\" at %(site_name)s." +msgstr "" + +#: account/templates/registration_subject.txt +#, python-format +msgid "Verify OpenKAT account on %(site_name)s" +msgstr "" + +#: account/validators.py +msgid "Your password must contain at least the following:" +msgstr "" + +#: account/validators.py +msgid " characters" +msgstr "" + +#: account/validators.py +msgid " digits" +msgstr "" + +#: account/validators.py +msgid " letters" +msgstr "" + +#: account/validators.py +msgid " special characters such as: " +msgstr "" + +#: account/validators.py +msgid " lower case letters" +msgstr "" + +#: account/validators.py +msgid " upper case letters" +msgstr "" + +#: account/views/login.py +msgid "Your session has timed out. Please login again." +msgstr "" + +#: account/views/login.py reports/templates/partials/report_header.html +#: rocky/templates/header.html +msgid "OpenKAT" +msgstr "" + +#: account/views/login.py account/views/password_reset.py +#: account/views/recover_email.py rocky/templates/partials/secondary-menu.html +#: rocky/templates/two_factor/core/login.html +msgid "Login" +msgstr "" + +#: account/views/login.py +msgid "Two factor authentication" +msgstr "" + +#: account/views/password_reset.py +msgid "We couldn't send a password reset link. Contact " +msgstr "" + +#: account/views/password_reset.py +msgid "" +"We couldn't send a password reset link. Contact your system administrator." +msgstr "" + +#: crisis_room/views.py +msgid "" +"Failed to get list of findings for organization {}, check server logs for " +"more details." +msgstr "" + +#: fmea/forms.py +#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html +#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html +#: fmea/templates/fmea/fmea_failure_mode_detail.html +msgid "Failure mode" +msgstr "" + +#: fmea/forms.py fmea/templates/fmea/fmea_failure_mode_detail.html +#: katalogus/templates/boefje_detail.html +#: katalogus/templates/normalizer_detail.html +#: reports/templates/summary/report_summary.html tools/forms/finding_type.py +#: rocky/templates/oois/ooi_detail.html +#: rocky/templates/oois/ooi_detail_findings_list.html rocky/templates/scan.html +msgid "Description" +msgstr "" + +#: fmea/forms.py +msgid "Frequency Level" +msgstr "" + +#: fmea/forms.py +msgid "Detectability Level" +msgstr "" + +#: fmea/forms.py +msgid "Effect(s)" +msgstr "" + +#: fmea/forms.py +msgid "Describe in one sentence what type of failure mode you are creating." +msgstr "" + +#: fmea/forms.py +msgid "Describe the failure mode in details." +msgstr "" + +#: fmea/forms.py +msgid "" +"From 1 to 5, how often does this failure mode occurs. 1: Almost unthinkable " +"and 5: occurs daily." +msgstr "" + +#: fmea/forms.py +msgid "" +"Is this failure mode easy detectable? Give it a score from 1 to 5. 1: always " +"detectable and 5: almost undetectable." +msgstr "" + +#: fmea/forms.py +msgid "Describe the type of failure mode" +msgstr "" + +#: fmea/forms.py +msgid "explanation-failure-mode" +msgstr "" + +#: fmea/forms.py +msgid "Describe in more detail what the failure mode is about." +msgstr "" + +#: fmea/forms.py +msgid "explanation-description" +msgstr "" + +#: fmea/forms.py +msgid "explanation-frequency-level" +msgstr "" + +#: fmea/forms.py +msgid "explanation-detectability_level" +msgstr "" + +#: fmea/forms.py +msgid "You must at least set a failure mode." +msgstr "" + +#: fmea/forms.py +msgid "Choose a frequency level." +msgstr "" + +#: fmea/forms.py +msgid "Choose a detectability level." +msgstr "" + +#: fmea/forms.py +msgid "Choose at least one effect." +msgstr "" + +#: fmea/forms.py +#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html +#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html +msgid "Affected Department" +msgstr "" + +#: fmea/forms.py +msgid "Affected Objects" +msgstr "" + +#: fmea/forms.py +msgid "Choose a failure mode which applies to " +msgstr "" + +#: fmea/forms.py +msgid "When this failure mode occurs, which department is affected?" +msgstr "" + +#: fmea/forms.py +msgid "Which objects does this failure mode affect when it occurs?" +msgstr "" + +#: fmea/forms.py +msgid "explanation-affected-ooi-type" +msgstr "" + +#: fmea/forms.py fmea/templates/fmea/fmea_failure_mode_effect_detail.html +msgid "Effect" +msgstr "" + +#: fmea/forms.py +msgid "Severity Level" +msgstr "" + +#: fmea/forms.py +msgid "Name a possible effect of any type of failure mode that can occur." +msgstr "" + +#: fmea/forms.py +msgid "" +"Describe the severity of this effect ex. 1: not severe and 5: catastrophic" +msgstr "" + +#: fmea/forms.py +msgid "Describe a possible effect for FMEA" +msgstr "" + +#: fmea/forms.py +msgid "explanation-effect" +msgstr "" + +#: fmea/forms.py +msgid "explanation-severity-level" +msgstr "" + +#: fmea/forms.py +msgid "The effect is required." +msgstr "" + +#: fmea/forms.py +msgid "This effect already exists." +msgstr "" + +#: fmea/forms.py +msgid "Choose a severity level." +msgstr "" + +#: fmea/models.py +msgid "Finances" +msgstr "" + +#: fmea/models.py +msgid "Marketing" +msgstr "" + +#: fmea/models.py +msgid "Human Resources" +msgstr "" + +#: fmea/models.py +msgid "Research & Development" +msgstr "" + +#: fmea/models.py +msgid "Administration" +msgstr "" + +#: fmea/models.py reports/templates/summary/service_health.html +#: rocky/templates/footer.html rocky/templates/health.html +msgid "Service" +msgstr "" + +#: fmea/models.py +msgid "Level 1: Not Severe" +msgstr "" + +#: fmea/models.py +msgid "Level 2: Harmful" +msgstr "" + +#: fmea/models.py +msgid "Level 3: Severe" +msgstr "" + +#: fmea/models.py +msgid "Level 4: Very Harmful" +msgstr "" + +#: fmea/models.py +msgid "Level 5: Catastrophic" +msgstr "" + +#: fmea/models.py +msgid "Level 1: Very Rare. Incident (almost) never occurs, almost unthinkable." +msgstr "" + +#: fmea/models.py +msgid "Level 2: Rare. Incidents occur less than once a year (3-5)." +msgstr "" + +#: fmea/models.py +msgid "Level 3: Occurs. Incidents occur several times a year." +msgstr "" + +#: fmea/models.py +msgid "Level 4: Regularly. Incidents occur weekly." +msgstr "" + +#: fmea/models.py +msgid "Level 5: Frequent. Incidents occur daily." +msgstr "" + +#: fmea/models.py +msgid "" +"Level 1: Always Detectable. Incident (almost) never occurs, almost " +"unthinkable." +msgstr "" + +#: fmea/models.py +msgid "" +"Level 2: Usually Detectable. Incidents occur less than once a year (3-5)." +msgstr "" + +#: fmea/models.py +msgid "Level 3: Detectable. Failure mode is detectable with effort." +msgstr "" + +#: fmea/models.py +msgid "Level 4: Poorly Detectable. Detecting the failure mode is difficult." +msgstr "" + +#: fmea/models.py +msgid "" +"Level 5: Almost Undetectable. Failure mode detection is very difficult or " +"nearly impossible." +msgstr "" + +#: fmea/models.py fmea/templates/fmea/fmea_failure_mode_list.html +#: fmea/views/view_helpers.py +msgid "Failure modes" +msgstr "" + +#: fmea/models.py fmea/views/view_helpers.py +msgid "Failure Mode Affected Objects" +msgstr "" + +#: fmea/templates/fmea/fmea_department_heatmap.html +msgid "FMEA Departments Heatmap:" +msgstr "" + +#: fmea/templates/fmea/fmea_department_heatmap.html +msgid "No data to build heatmap" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html +msgid "Failure mode affected object table:" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html +#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html +msgid "Affected Object" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html +#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html +#: fmea/templates/fmea/fmea_failure_mode_detail.html +#: fmea/templates/fmea/fmea_failure_mode_effect_detail.html +#: fmea/templates/fmea/fmea_failure_mode_effect_list.html +#: fmea/templates/fmea/fmea_failure_mode_list.html +#: fmea/views/fmea_affected_objects.py fmea/views/fmea_failure_mode.py +#: fmea/views/fmea_failure_mode_effect.py +#: katalogus/templates/plugin_settings_list.html +#: rocky/templates/organizations/organization_member_list.html +#: rocky/templates/organizations/organization_settings.html +#: rocky/views/ooi_edit.py rocky/views/organization_edit.py +msgid "Edit" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html +msgid "Failure mode affected objects cannot be found." +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html +msgid "Define which objects are affected for a failure mode" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html +msgid "Failure mode affected objects" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html +#: fmea/templates/fmea/fmea_failure_mode_effect_form.html +#: fmea/templates/fmea/fmea_failure_mode_form.html +msgid "Save" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html +#: fmea/templates/fmea/fmea_failure_mode_effect_form.html +#: fmea/templates/fmea/fmea_failure_mode_form.html +#: onboarding/templates/account/step_2a_organization_setup.html +#: onboarding/templates/account/step_4_account_setup_admin.html +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +#: onboarding/templates/account/step_6_account_setup_client.html +#: rocky/templates/forms/json_schema_form.html +#: rocky/templates/organizations/organization_add.html +#: rocky/templates/organizations/organization_member_add.html +#: rocky/templates/organizations/organization_member_add_account_type.html +#: rocky/templates/partials/elements/ooi_detail_settings.html +#: rocky/templates/partials/elements/ooi_report_settings.html +#: rocky/templates/partials/form/indemnification_add_form.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/two_factor/_wizard_actions.html +msgid "Submit" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "No failure mode yet defined." +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html +msgid "To add affected objects to a failure mode, first create one." +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "Create failure mode" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html +msgid "Failure mode affected objects table:" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html +msgid "No failure mode affected objects yet defined." +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html +msgid "Create failure mode Affected Objects" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_departments.html +msgid "Departments failure modes" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_departments.html +msgid "Failure modes and affected departments table:" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_departments.html +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "Failure Mode" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_departments.html +msgid "Affected Departments" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_departments.html +msgid "Nothing found." +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_detail.html +msgid "Failure mode properties" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_detail.html +#: fmea/templates/fmea/fmea_failure_mode_effect_detail.html +msgid "Properties" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_detail.html +msgid "Risk class" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_detail.html +msgid "Frequency level" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_detail.html +msgid "Detectability level" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_detail.html +msgid "" +"\n" +" Effect and severity level\n" +" " +msgid_plural "" +"\n" +" Effects and severity levels\n" +" " +msgstr[0] "" +msgstr[1] "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_detail.html +#: fmea/templates/fmea/fmea_failure_mode_effect_list.html +msgid "Failure mode effect" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_detail.html +msgid "Failure mode effect properties" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_detail.html +#: rocky/templates/crisis_room/crisis_room_findings_block.html +#: rocky/templates/findings/finding_list.html +#: rocky/templates/oois/ooi_detail_findings_list.html +#: rocky/templates/oois/ooi_detail_findings_overview.html +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/ooi_report_severity_totals_table.html +msgid "Severity" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_form.html +msgid "FMEA effect and severity" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_form.html +msgid "FMEA effect" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_list.html +msgid "Failure mode effects table:" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_list.html +msgid "Severity level" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_list.html +msgid "No failure mode effect yet defined." +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_list.html +msgid "Create a failure mode effect" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_form.html +#: fmea/templates/fmea/fmea_index.html +msgid "Create a new failure mode" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_form.html +msgid "Failure mode and effects" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_form.html +msgid "No failure mode effects created." +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_form.html +msgid "" +"First create failure mode effects which can be added later to a failure mode." +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_form.html +#: fmea/templates/fmea/fmea_index.html +msgid "Create failure mode effects" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "Failure mode table:" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "Risk Class" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_list.html +#: rocky/templates/crisis_room/crisis_room_findings_block.html +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/ooi_report_findings_block_table.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Details" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "Sluit details" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "Description:" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "Frequency level:" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "Detectability level:" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "" +"\n" +"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tEffect and severity level\n" +"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t" +msgid_plural "" +"\n" +"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tEffects and severity levels\n" +"\t\t\t\t\t\t\t\t\t\t\t\t\t\t" +msgstr[0] "" +msgstr[1] "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Failure mode report" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +#: reports/templates/summary/report_summary.html +#: rocky/templates/partials/ooi_report_severity_totals.html +#: rocky/views/ooi_tree.py +msgid "Summary" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Failure mode: " +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Severity: " +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Detectability: " +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Frequency: " +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Effect: " +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Description: " +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Affected Departments: " +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Affected OOI's: " +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Report cannot be viewed, failure mode not found." +msgstr "" + +#: fmea/templates/fmea/fmea_index.html +msgid "FMEA introduction" +msgstr "" + +#: fmea/templates/fmea/fmea_index.html +msgid "" +"FMEA (failure mode and effective analysis) is a step-by-step approach for " +"collecting knowledge about possible points of failure in a design, " +"manufacturing process, product or service." +msgstr "" + +#: fmea/templates/fmea/fmea_index.html +msgid "" +"Failure mode (FM) refers to the way in which something might break down and " +"includes potential errors that may occur, especially errors that may affect " +"a system. Effective analysis (EA) involves deciphering the consequences of " +"those break downs by making sure that all failures can be detected, " +"determining how frequently a failure might occur and identifying which " +"potential failures should be prioritized." +msgstr "" + +#: fmea/templates/fmea/fmea_index.html +msgid "Create affected objects of a failure mode" +msgstr "" + +#: fmea/templates/fmea/fmea_index.html +msgid "View all failure modes" +msgstr "" + +#: fmea/templates/fmea/fmea_index.html +msgid "View all failure mode effects" +msgstr "" + +#: fmea/templates/fmea/fmea_index.html +msgid "View all affected objects for a failure modes" +msgstr "" + +#: fmea/templates/fmea/fmea_index.html fmea/views/fmea_analytics.py +msgid "Heatmap" +msgstr "" + +#: fmea/tools.py +msgid "--- Select an option ----" +msgstr "" + +#: fmea/views/fmea_affected_objects.py +msgid "Failure mode affected objects successfully created." +msgstr "" + +#: fmea/views/fmea_affected_objects.py fmea/views/fmea_failure_mode.py +#: fmea/views/fmea_failure_mode_effect.py +msgid "Create" +msgstr "" + +#: fmea/views/fmea_affected_objects.py +msgid "Treeobjects successfully added." +msgstr "" + +#: fmea/views/fmea_affected_objects.py +msgid "Please select a department or ooi." +msgstr "" + +#: fmea/views/fmea_analytics.py onboarding/templates/step_4_report.html +msgid "Report" +msgstr "" + +#: fmea/views/fmea_failure_mode.py +msgid "Failure mode successfully created." +msgstr "" + +#: fmea/views/fmea_failure_mode_effect.py +msgid "Failure mode effect successfully created." +msgstr "" + +#: fmea/views/view_helpers.py rocky/templates/dashboard_redteam.html +msgid "FMEA" +msgstr "" + +#: fmea/views/view_helpers.py +msgid "Failure mode effects" +msgstr "" + +#: katalogus/forms/katalogus_filter.py +msgid "Show all" +msgstr "" + +#: katalogus/forms/katalogus_filter.py +#: reports/report_types/dns_report/report.html +msgid "Enabled" +msgstr "" + +#: katalogus/forms/katalogus_filter.py +msgid "Disabled" +msgstr "" + +#: katalogus/forms/katalogus_filter.py +msgid "Enabled-Disabled" +msgstr "" + +#: katalogus/forms/katalogus_filter.py +msgid "Disabled-Enabled" +msgstr "" + +#: katalogus/forms/katalogus_filter.py +msgid "Filter options" +msgstr "" + +#: katalogus/forms/katalogus_filter.py +msgid "Sorting options" +msgstr "" + +#: katalogus/forms/plugin_settings.py +msgid "This field is required." +msgstr "" + +#: katalogus/templates/about_plugins.html +#: katalogus/templates/partials/plugins_navigation.html +msgid "About plugins" +msgstr "" + +#: katalogus/templates/about_plugins.html katalogus/templates/katalogus.html +msgid "" +"Plugins gather data, objects and insight. Each plugin has its own focus area " +"and strengths and may be able to work with other plugins to gain even more " +"insights." +msgstr "" + +#: katalogus/templates/about_plugins.html katalogus/templates/boefjes.html +msgid "" +"Boefjes gather factual information, such as by calling an external scanning " +"tool like nmap or using a database like shodan." +msgstr "" + +#: katalogus/templates/about_plugins.html katalogus/templates/normalizers.html +msgid "" +"Normalizers analyze the information and turn it into objects for the data " +"model in Octopoes." +msgstr "" + +#: katalogus/templates/about_plugins.html +msgid "" +"Bits are business rules that look for insight within the current dataset and " +"search for specific insight and draw conclusions." +msgstr "" + +#: katalogus/templates/boefje_detail.html +msgid "Scan level" +msgstr "" + +#: katalogus/templates/boefje_detail.html +#: katalogus/templates/normalizer_detail.html +msgid "Consumes" +msgstr "" + +#: katalogus/templates/boefje_detail.html +#, python-format +msgid "%(plugin_name)s is able to scan the following object types:" +msgstr "" + +#: katalogus/templates/boefje_detail.html +#: katalogus/templates/normalizer_detail.html +#, python-format +msgid "%(plugin_name)s does not need any input objects." +msgstr "" + +#: katalogus/templates/boefje_detail.html +#: katalogus/templates/normalizer_detail.html +msgid "Produces" +msgstr "" + +#: katalogus/templates/boefje_detail.html +#: katalogus/templates/normalizer_detail.html +#, python-format +msgid "%(plugin_name)s can produce the following output:" +msgstr "" + +#: katalogus/templates/boefjes.html katalogus/templates/normalizers.html +msgid "available" +msgstr "" + +#: katalogus/templates/change_clearance_level.html +#: katalogus/templates/partials/objects_to_scan.html +msgid "scan level warning" +msgstr "" + +#: katalogus/templates/change_clearance_level.html +#, python-format +msgid "" +"%(plugin_name)s will only scan objects with a corresponding clearance level " +"of L%(scan_level)s or higher." +msgstr "" + +#: katalogus/templates/change_clearance_level.html +msgid "Scan OOI" +msgstr "" + +#: katalogus/templates/change_clearance_level.html +#, python-format +msgid "" +"The following objects are not yet cleared for level %(scan_level)s, please " +"be advised that by continuing you will declare a level %(scan_level)s on " +"these objects." +msgstr "" + +#: katalogus/templates/change_clearance_level.html +msgid "Selected OOIs:" +msgstr "" + +#: katalogus/templates/change_clearance_level.html +#: rocky/templates/partials/explanations.html +msgid "OOI" +msgstr "" + +#: katalogus/templates/change_clearance_level.html onboarding/forms.py +#: reports/templates/report_oois_selection.html +#: reports/templates/summary/ooi_selection.html tools/forms/ooi.py +#: rocky/templates/oois/ooi_page_tabs.html +#: rocky/templates/partials/explanations.html +#: rocky/templates/scan_profiles/scan_profile_detail.html +msgid "Clearance level" +msgstr "" + +#: katalogus/templates/change_clearance_level.html +msgid "Are you sure you want to scan anyways?" +msgstr "" + +#: katalogus/templates/change_clearance_level.html +#: rocky/templates/oois/ooi_detail.html +msgid "Scan" +msgstr "" + +#: katalogus/templates/change_clearance_level.html +#: katalogus/templates/confirmation_clone_settings.html +#: katalogus/templates/plugin_settings_delete.html +#: rocky/templates/oois/ooi_delete.html +#: rocky/templates/oois/ooi_mute_finding.html +#: rocky/templates/organizations/organization_edit.html +#: rocky/templates/organizations/organization_member_edit.html +#: rocky/templates/two_factor/_wizard_actions.html +msgid "Cancel" +msgstr "" + +#: katalogus/templates/clone_settings.html +#: katalogus/templates/confirmation_clone_settings.html +msgid "Clone settings" +msgstr "" + +#: katalogus/templates/clone_settings.html +#, python-format +msgid "" +"\n" +" Use the form below to clone the settings from " +"%(current_organization)s to the selected organization.\n" +" This includes both the KAT-alogus settings as well as enabled and " +"disabled plugins.\n" +" " +msgstr "" + +#: katalogus/templates/confirmation_clone_settings.html +msgid "Clone" +msgstr "" + +#: katalogus/templates/katalogus.html +msgid "All plugins" +msgstr "" + +#: katalogus/templates/katalogus.html +msgid "" +"\n" +" Plugin available\n" +" " +msgid_plural "" +"\n" +" Plugins available\n" +" " +msgstr[0] "" +msgstr[1] "" + +#: katalogus/templates/katalogus_settings.html +msgid "KAT-alogus Settings" +msgstr "" + +#: katalogus/templates/katalogus_settings.html +msgid "" +"There are currently no settings defined. Add settings at plugin detail page." +msgstr "" + +#: katalogus/templates/katalogus_settings.html +#: reports/templates/report_setup_scan.html +#: reports/templates/report_types_selection.html +#: rocky/templates/two_factor/core/otp_required.html +msgid "Go back" +msgstr "" + +#: katalogus/templates/katalogus_settings.html +msgid "This is an overview of the latest settings of all plugins." +msgstr "" + +#: katalogus/templates/katalogus_settings.html +msgid "Latest plugin settings:" +msgstr "" + +#: katalogus/templates/katalogus_settings.html +#: rocky/templates/partials/task_history.html +msgid "Plugin" +msgstr "" + +#: katalogus/templates/katalogus_settings.html +#: katalogus/templates/plugin_settings_list.html +#: reports/report_types/dns_report/report.html +#: rocky/templates/oois/ooi_delete.html +msgid "Value" +msgstr "" + +#: katalogus/templates/normalizer_detail.html +#, python-format +msgid "%(plugin_name)s is able to process the following mime types:" +msgstr "" + +#: katalogus/templates/partials/boefje_tile.html +msgid "Scan level:" +msgstr "" + +#: katalogus/templates/partials/boefje_tile.html +msgid "Publisher" +msgstr "" + +#: katalogus/templates/partials/boefje_tile.html +#: katalogus/templates/partials/plugin_tile.html +#: katalogus/templates/partials/plugins.html +msgid "See details" +msgstr "" + +#: katalogus/templates/partials/enable_disable_plugin.html +msgid "Enable" +msgstr "" + +#: katalogus/templates/partials/enable_disable_plugin.html +#: rocky/templates/two_factor/profile/disable.html +msgid "Disable" +msgstr "" + +#: katalogus/templates/partials/enable_disable_plugin.html +msgid "You don't have permission to enable " +msgstr "" + +#: katalogus/templates/partials/katalogus_filter.html +msgid "Filter plugins" +msgstr "" + +#: katalogus/templates/partials/katalogus_filter.html +msgid "Clear filter" +msgstr "" + +#: katalogus/templates/partials/katalogus_header.html +#: katalogus/views/change_clearance_level.py katalogus/views/katalogus.py +#: katalogus/views/katalogus_settings.py katalogus/views/plugin_detail.py +#: katalogus/views/plugin_settings_add.py +#: katalogus/views/plugin_settings_delete.py +#: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html +#: rocky/templates/header.html +msgid "KAT-alogus" +msgstr "" + +#: katalogus/templates/partials/katalogus_header.html +msgid "An overview of all available plugins." +msgstr "" + +#: katalogus/templates/partials/katalogus_header.html +#: katalogus/templates/plugin_settings_list.html +#: katalogus/views/katalogus_settings.py tools/view_helpers.py +#: rocky/templates/header.html +#: rocky/templates/organizations/organization_settings.html +msgid "Settings" +msgstr "" + +#: katalogus/templates/partials/katalogus_toolbar.html +msgid "Gridview" +msgstr "" + +#: katalogus/templates/partials/katalogus_toolbar.html +msgid "Tableview" +msgstr "" + +#: katalogus/templates/partials/objects_to_scan.html +#: rocky/templates/findings/finding_list.html +#: rocky/templates/oois/ooi_list.html +#: rocky/templates/organizations/organization_crisis_room.html +msgid "Object list" +msgstr "" + +#: katalogus/templates/partials/objects_to_scan.html +#, python-format +msgid "" +"This Boefje will only scan objects with a corresponding clearance level of " +"L%(scan_level)s or higher. There is no indemnification for " +"this Boefje to scan an OOI with a lower clearance level than " +"L%(scan_level)s. Use the filter to show OOI's with a lower " +"clearance level." +msgstr "" + +#: katalogus/templates/partials/objects_to_scan.html +msgid "" +"Warning scan level: Scanning OOI's with a lower clearance level " +"will result in OpenKAT increasing the clearance level on that OOI, not only " +"for this scan but from now on out, until it manually gets set to something " +"else again. This means that all other enabled Boefjes will use this higher " +"clearance level aswel." +msgstr "" + +#: katalogus/templates/partials/objects_to_scan.html +#, python-format +msgid "" +"You currently don't have any objects that meet the scan level of %(name)s. " +"Add objects with a complying clearance level, or alter the clearance level " +"of existing objects." +msgstr "" + +#: katalogus/templates/partials/objects_to_scan.html +#, python-format +msgid "" +"You currently don't have scannable objects for %(name)s. Add objects to use " +"this Boefje. This Boefje is able to scan objects of the following types:" +msgstr "" + +#: katalogus/templates/partials/plugin_settings_required.html +msgid "The form could not be initialized." +msgstr "" + +#: katalogus/templates/partials/plugin_settings_required.html +msgid "Required settings" +msgstr "" + +#: katalogus/templates/partials/plugin_settings_required.html +#: katalogus/templates/plugin_settings_list.html +#: rocky/templates/findings/finding_add.html +#: rocky/templates/partials/ooi_list_toolbar.html +msgid "Add" +msgstr "" + +#: katalogus/templates/partials/plugins.html +msgid "Plugins overview:" +msgstr "" + +#: katalogus/templates/partials/plugins.html +#: reports/templates/summary/report_summary.html +msgid "Plugin name" +msgstr "" + +#: katalogus/templates/partials/plugins.html +#: reports/templates/summary/report_summary.html +msgid "Plugin type" +msgstr "" + +#: katalogus/templates/partials/plugins.html +#: reports/templates/summary/report_summary.html +msgid "Plugin description" +msgstr "" + +#: katalogus/templates/partials/plugins.html +#: rocky/templates/organizations/organization_settings.html +msgid "Actions" +msgstr "" + +#: katalogus/templates/partials/plugins_navigation.html +msgid "Plugins Navigation" +msgstr "" + +#: katalogus/templates/partials/plugins_navigation.html +msgid "All" +msgstr "" + +#: katalogus/templates/partials/plugins_navigation.html +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +#: tools/forms/boefje.py rocky/templates/scan.html +#: rocky/templates/tasks/boefjes.html +#: rocky/templates/tasks/partials/tab_navigation.html +msgid "Boefjes" +msgstr "" + +#: katalogus/templates/partials/plugins_navigation.html +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +#: rocky/templates/tasks/normalizers.html +#: rocky/templates/tasks/partials/tab_navigation.html +msgid "Normalizers" +msgstr "" + +#: katalogus/templates/plugin_settings_add.html +msgid "" +"\n" +" Add setting\n" +" " +msgid_plural "" +"\n" +" Add settings\n" +" " +msgstr[0] "" +msgstr[1] "" + +#: katalogus/templates/plugin_settings_add.html +msgid "" +"\n" +" Setting\n" +" " +msgid_plural "" +"\n" +" Settings\n" +" " +msgstr[0] "" +msgstr[1] "" + +#: katalogus/templates/plugin_settings_add.html +msgid "" +"\n" +" Add setting\n" +" " +msgid_plural "" +"\n" +" Add settings\n" +" " +msgstr[0] "" +msgstr[1] "" + +#: katalogus/templates/plugin_settings_add.html +msgid "" +"\n" +" Add setting and enable boefje\n" +" " +msgid_plural "" +"\n" +" Add settings and enable boefje\n" +" " +msgstr[0] "" +msgstr[1] "" + +#: katalogus/templates/plugin_settings_delete.html +msgid "Delete settings" +msgstr "" + +#: katalogus/templates/plugin_settings_delete.html +#, python-format +msgid "" +"Are you sure you want to delete all settings for the plugin %(plugin_name)s?" +msgstr "" + +#: katalogus/templates/plugin_settings_delete.html +#: katalogus/templates/plugin_settings_list.html +#: katalogus/views/plugin_settings_delete.py +#: rocky/templates/admin/delete_confirmation.html rocky/views/ooi_delete.py +msgid "Delete" +msgstr "" + +#: katalogus/templates/plugin_settings_list.html +msgid " Details" +msgstr "" + +#: katalogus/templates/plugin_settings_list.html +msgid "Overview of settings:" +msgstr "" + +#: katalogus/templates/plugin_settings_list.html +msgid "Required" +msgstr "" + +#: katalogus/templates/plugin_settings_list.html +msgid "Action" +msgstr "" + +#: katalogus/templates/plugin_settings_list.html +msgid "Unset" +msgstr "" + +#: katalogus/templates/plugin_settings_list.html +#: reports/report_types/dns_report/report.html +msgid "Yes" +msgstr "" + +#: katalogus/templates/plugin_settings_list.html +#: reports/report_types/dns_report/report.html +msgid "No" +msgstr "" + +#: katalogus/views/change_clearance_level.py +msgid "Session has terminated, please select OOIs again." +msgstr "" + +#: katalogus/views/change_clearance_level.py +msgid "Change clearance level" +msgstr "" + +#: katalogus/views/katalogus_settings.py +msgid "Settings from {} to {} successfully cloned." +msgstr "" + +#: katalogus/views/katalogus_settings.py +#: katalogus/views/plugin_settings_list.py +msgid "Failed getting settings for boefje {}" +msgstr "" + +#: katalogus/views/mixins.py +msgid "" +"Getting information for plugin {} failed. Please check the KATalogus logs." +msgstr "" + +#: katalogus/views/mixins.py +#, python-format +msgid "" +"Could not raise clearance level of %s to L%s. " +"Indemnification not present at organization %s." +msgstr "" + +#: katalogus/views/mixins.py onboarding/views.py rocky/views/scan_profile.py +#, python-format +msgid "" +"Could not raise clearance level of %s to L%s. You were trusted a clearance " +"level of L%s. Contact your administrator to receive a higher clearance." +msgstr "" + +#: katalogus/views/mixins.py onboarding/views.py +#, python-format +msgid "" +"Could not raise clearance level of %s to L%s. You acknowledged a clearance " +"level of L%s. Please accept the clearance level first on your profile page " +"to proceed." +msgstr "" + +#: katalogus/views/plugin_detail.py +msgid "" +"Some selected OOIs needs an increase of clearance level to perform scans. " +"You do not have the permission to change clearance level." +msgstr "" + +#: katalogus/views/plugin_detail.py +msgid "Please select an OOI to start scan." +msgstr "" + +#: katalogus/views/plugin_enable_disable.py +msgid "{} '{}' disabled." +msgstr "" + +#: katalogus/views/plugin_enable_disable.py +msgid "Failed fetching settings for {}. Is the Katalogus up?" +msgstr "" + +#: katalogus/views/plugin_enable_disable.py +msgid "Before enabling, please set the required settings for '{}'." +msgstr "" + +#: katalogus/views/plugin_enable_disable.py +msgid "{} '{}' enabled." +msgstr "" + +#: katalogus/views/plugin_enable_disable.py +msgid "" +"Your clearance level is not set. Go to your profile page to see your " +"clearance or contact the administrator to set a clearance level." +msgstr "" + +#: katalogus/views/plugin_enable_disable.py +msgid "To enable {} you need at least a clearance level of L{}. " +msgstr "" + +#: katalogus/views/plugin_settings_add.py +msgid "Trying to add settings to boefje without schema" +msgstr "" + +#: katalogus/views/plugin_settings_add.py +msgid "No changes to the settings added: no form data present" +msgstr "" + +#: katalogus/views/plugin_settings_add.py +msgid "Added settings for '{}'" +msgstr "" + +#: katalogus/views/plugin_settings_add.py +msgid "Failed adding settings" +msgstr "" + +#: katalogus/views/plugin_settings_add.py +msgid "Enabling {} failed" +msgstr "" + +#: katalogus/views/plugin_settings_add.py +msgid "Boefje '{}' enabled." +msgstr "" + +#: katalogus/views/plugin_settings_add.py +msgid "Add settings" +msgstr "" + +#: katalogus/views/plugin_settings_delete.py +msgid "Settings for plugin {} successfully deleted." +msgstr "" + +#: katalogus/views/plugin_settings_delete.py +msgid "Plugin {} has no settings." +msgstr "" + +#: katalogus/views/plugin_settings_delete.py +msgid "" +"Failed deleting Settings for plugin {}. Check the Katalogus logs for more " +"info." +msgstr "" + +#: onboarding/forms.py tools/forms/ooi.py +msgid "" +"Boefjes that has a scan level below or equal to the clearance level, is " +"permitted to scan an object." +msgstr "" + +#: onboarding/forms.py tools/forms/ooi.py +msgid "explanation-clearance-level" +msgstr "" + +#: onboarding/templates/account/step_1_registration_intro.html +msgid "Register" +msgstr "" + +#: onboarding/templates/account/step_1_registration_intro.html +msgid "Create a new account for your organization" +msgstr "" + +#: onboarding/templates/account/step_1_registration_intro.html +msgid "" +"All user accounts are part of an organization. So if you’re new and your " +"company is also new to OpenKAT you can register here to create a OpenKAT " +"account for your company including an admin account for you. If you like a " +"user account that is connected to an already existing organization within " +"OpenKAT you can ask the admin to create an account for you." +msgstr "" + +#: onboarding/templates/account/step_1_registration_intro.html +#: onboarding/templates/step_1_introduction.html +msgid "Let's get started" +msgstr "" + +#: onboarding/templates/account/step_1_registration_intro.html +#: onboarding/templates/step_1_introduction.html +msgid "How does OpenKAT work" +msgstr "" + +#: onboarding/templates/account/step_1_registration_intro.html +msgid "" +"OpenKAT is able to give insight into security risks on your online objects. " +"For example, your websites, mailservers or online data. OpenKAT uses scans " +"to find and assess the area's that might be at risk and reports these back " +"to you. As a user you decide which insight you would like and OpenKAT guides " +"you to through the process. During this introduction you will be guided " +"through the steps to create a report." +msgstr "" + +#: onboarding/templates/account/step_2a_organization_setup.html +#: onboarding/templates/account/step_2a_organization_update.html +#: onboarding/templates/account/step_2b_indemnification_setup.html +#: onboarding/templates/account/step_2c_account_setup_intro.html +#: onboarding/templates/account/step_3_account_user_type.html +#: onboarding/templates/account/step_4_account_setup_admin.html +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "OpenKAT setup" +msgstr "" + +#: onboarding/templates/account/step_2a_organization_setup.html +#: onboarding/templates/account/step_2a_organization_update.html +#: rocky/templates/organizations/organization_add.html +msgid "Organization setup" +msgstr "" + +#: onboarding/templates/account/step_2a_organization_setup.html +msgid "" +"Please enter the following organization details. These details can be edited " +"within the organization page within OpenKAT when necessary. Adding a new " +"organization requires a new database." +msgstr "" + +#: onboarding/templates/account/step_2a_organization_setup.html +#: onboarding/templates/account/step_2a_organization_update.html +#: rocky/templates/organizations/organization_add.html +#: rocky/templates/organizations/organization_settings.html +msgid "Organization details" +msgstr "" + +#: onboarding/templates/account/step_2a_organization_update.html +#: rocky/templates/organizations/organization_add.html +msgid "" +"Please enter the following organization details. These details can be edited " +"within the organization page within OpenKAT when necessary." +msgstr "" + +#: onboarding/templates/account/step_2a_organization_update.html +msgid "Submit changes" +msgstr "" + +#: onboarding/templates/account/step_2a_organization_update.html +#: onboarding/templates/account/step_2b_indemnification_setup.html +#: onboarding/templates/step_3d_clearance_level_introduction.html +msgid "Continue" +msgstr "" + +#: onboarding/templates/account/step_2b_indemnification_setup.html +msgid "Indemnification setup" +msgstr "" + +#: onboarding/templates/account/step_2b_indemnification_setup.html +msgid "Indemnification on the organization is already present." +msgstr "" + +#: onboarding/templates/account/step_2c_account_setup_intro.html +#: onboarding/templates/account/step_3_account_user_type.html +msgid "Account setup" +msgstr "" + +#: onboarding/templates/account/step_2c_account_setup_intro.html +msgid "Accounts" +msgstr "" + +#: onboarding/templates/account/step_2c_account_setup_intro.html +msgid "Organization setup with separate accounts:" +msgstr "" + +#: onboarding/templates/account/step_2c_account_setup_intro.html +msgid "" +"Within OpenKAT it is possible to create separate user accounts with the " +"specific roles. Each with their own functionalities and permissions. This is " +"useful when multiple people will be working with the same OpenKAT-setup. You " +"can choose to create the separate accounts during this introduction or when " +"you’re ready from the OpenKAT users page." +msgstr "" + +#: onboarding/templates/account/step_2c_account_setup_intro.html +msgid "Single account setup:" +msgstr "" + +#: onboarding/templates/account/step_2c_account_setup_intro.html +msgid "" +"Alternatively it is also an option to run OpenKAT from a single user " +"account. Which is useful when you are the only user in the account. You will " +"be able to access the functionality of the different roles from your " +"account. You can always add additional user accounts If you’re team expands " +"in the future." +msgstr "" + +#: onboarding/templates/account/step_2c_account_setup_intro.html +msgid "Create separate accounts" +msgstr "" + +#: onboarding/templates/account/step_2c_account_setup_intro.html +msgid "Continue with this account, onboard me!" +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +msgid "Users" +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +msgid "" +"Within OpenKAT there are three types of user accounts. Each has its own " +"functions." +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +#: onboarding/templates/account/step_4_account_setup_admin.html +msgid "Admin" +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +#: onboarding/templates/account/step_4_account_setup_admin.html +msgid "" +"Each organization must have an admin. The admin can create and manage user " +"accounts as well as organization details." +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +msgid "Red teamer" +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +msgid "A red teamer account can run scans and generate reports." +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "Client account" +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +msgid "A client account can access reports." +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +msgid "" +"Each organization requires at least one admin and one red teamer account to " +"function. This introduction will guide you through the setup of both. After " +"that you can choose to add a client account as well." +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +msgid "Let's add accounts" +msgstr "" + +#: onboarding/templates/account/step_4_account_setup_admin.html +msgid "Admin account setup" +msgstr "" + +#: onboarding/templates/account/step_4_account_setup_admin.html +msgid "Admin details" +msgstr "" + +#: onboarding/templates/account/step_4_account_setup_admin.html +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "Go back to previous step" +msgstr "" + +#: onboarding/templates/account/step_4_account_setup_admin.html +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +msgid "Skip this step" +msgstr "" + +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +msgid "Red teamer account setup" +msgstr "" + +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +msgid "Red teamer details" +msgstr "" + +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "Client account setup (optional)" +msgstr "" + +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "" +"A client account can access reports. Adding a client account to the " +"organization is optional." +msgstr "" + +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "User details" +msgstr "" + +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "Finish organization setup" +msgstr "" + +#: onboarding/templates/dns_report.html +#: onboarding/templates/step_2a_choose_report_info.html +#: onboarding/templates/step_2b_choose_report_type.html +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +#: onboarding/templates/step_4_report.html onboarding/views.py +msgid "OpenKAT introduction" +msgstr "" + +#: onboarding/templates/dns_report.html +#: reports/report_types/dns_report/report.py +msgid "DNS Report" +msgstr "" + +#: onboarding/templates/dns_report.html +#, python-format +msgid "" +"These are the findings of a OpenKAT-analysis (%(observed_at)s). Click a " +"finding for more detailed information about the issue, its origin, severity " +"and possible solutions." +msgstr "" + +#: onboarding/templates/dns_report.html +msgid "DNS Tree" +msgstr "" + +#: onboarding/templates/step_1_introduction.html +#: rocky/templates/landing_page.html +msgid "Welcome to OpenKAT" +msgstr "" + +#: onboarding/templates/step_1_introduction.html +msgid "" +"OpenKAT is the \"Kwetsbaarheden Analyse Tool\" (Vulnerabilities Analysis " +"Tool). An Open-Source-project developed by the Ministry of Health, Welfare " +"and Sport to make your and our world a safer place." +msgstr "" + +#: onboarding/templates/step_1_introduction.html +msgid "" +"OpenKAT is able to give insight into security risks on your online objects. " +"For example, your websites, mailservers or online data." +msgstr "" + +#: onboarding/templates/step_1_introduction.html +msgid "" +"OpenKAT uses plugins to find and assess the area's that might be at risk and " +"reports these back to you. Each plugin has its own skillset which could be " +"scanning, normalizing or analyzing data. As a user you decide which areas " +"you would like to monitor or scan and which insight you would like to " +"receive." +msgstr "" + +#: onboarding/templates/step_1_introduction.html +msgid "" +"Within OpenKAT you can view the insights as well as all the data OpenKAT has " +"found. You can choose to browse through the data or view reports." +msgstr "" + +#: onboarding/templates/step_1_introduction.html +msgid "" +"During this introduction you will be guided through the steps to create a " +"report." +msgstr "" + +#: onboarding/templates/step_1_introduction.html +#: onboarding/templates/step_2a_choose_report_info.html +#: onboarding/templates/step_2b_choose_report_type.html +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +#: onboarding/templates/step_3d_clearance_level_introduction.html +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +#: onboarding/templates/step_3f_set_clearance_level.html +#: rocky/templates/partials/form/boefje_tiles_form.html +msgid "Skip onboarding" +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "Choose a report - Introduction" +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +#: reports/templates/report_oois_selection.html reports/views.py +#: rocky/templates/header.html +msgid "Reports" +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "" +"Reports within OpenKAT contain an overview of the scanned objects, issues " +"found within them and known security risks that the object might be " +"vulnerable to. Each report gives a high overview of the state of the object " +"as well as detailed information on what OpenKAT found and possible solutions." +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "Data" +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "" +"OpenKAT can scan and analyze by using plugins. Each plugin has it's unique " +"skillset and will collect specific data or give specific insights. You " +"manage the plugins within your account which let's OpenKAT know which " +"plugins to run and on which objects or areas." +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "Generating a report" +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "" +"When you choose a report type OpenKAT will guide you through the setup. " +"OpenKAT will ask the necessary questions based on the input the report " +"needs, as well as asks for permission to run plugins that you haven’t " +"enabled yet but are needed to collect or analyze the data." +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "" +"You can also choose to look at the collected data directly or generate your " +"own report by selecting and running plugins on objects of your choice. " +"OpenKAT will present the results." +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "Permission" +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "" +"Plugins can be provided by OpenKAT but they can also come from the " +"community. Before a plugin can run, you need to give it permission by " +"enabling it." +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "" +"When you generate a report. OpenKAT will let you know which plugins it " +"requires or suggests so you can choose to enable them." +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "Let's choose a report" +msgstr "" + +#: onboarding/templates/step_2b_choose_report_type.html +msgid "Choose a report - Type" +msgstr "" + +#: onboarding/templates/step_2b_choose_report_type.html +msgid "" +"Within OpenKAT you can view reports for each of your current objects. For " +"specific reports you can choose one of the available report types and " +"generate a report. Such as a pen-test, a DNS-report or a mail report to give " +"some examples." +msgstr "" + +#: onboarding/templates/step_2b_choose_report_type.html +msgid "For this tutorial we suggest a DNS-report to get you started." +msgstr "" + +#: onboarding/templates/step_2b_choose_report_type.html +msgid "" +"When you start to generate this report. OpenKAT will guide you through the " +"necessary steps." +msgstr "" + +#: onboarding/templates/step_2b_choose_report_type.html +msgid "DNS report" +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "Setup scan" +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +msgid "Let OpenKAT know what object to scan" +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +msgid "" +"Plugins scan and analyze objects. OpenKAT needs to know which object(s) you " +"would like to scan and analyze for the DNS-report. So it can tell you which " +"plugins are available for the chosen object." +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +msgid "Understanding objects" +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +msgid "" +"A lot of things can be an object within the scope of OpenKAT. For example a " +"mailserver, an ip-address, a URL, a DNS record, a hostname or a network to " +"name a few. While these objects can be related to each other they are all " +"objects within OpenKAT that can be scanned to gain valuable insight." +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +msgid "Creating, adding and editing objects" +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +msgid "" +"Within OpenKAT you can view, add and edit objects from the organization’s " +"object page." +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +msgid "" +"Let’s add an object to scan for the DNS-Report. For this introduction we " +"suggest adding a URL." +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +msgid "Add URL" +msgstr "" + +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html onboarding/views.py +msgid "Creating an object" +msgstr "" + +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +msgid "Create your first object, a URL by filling out the form below." +msgstr "" + +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +msgid "" +"Additional details and examples can be found by pressing on the help button " +"next to the input field." +msgstr "" + +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +msgid "Dependencies" +msgstr "" + +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +msgid "" +"Most objects have dependencies on the existence of other objects. For " +"example a URL needs to be connected to a network, hostname, fqdn (fully " +"qualified domain name) and ip-address. OpenKAT collects these additional " +"object automatically when possible. By running plugins to collect or extract " +"this data." +msgstr "" + +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +msgid "" +"The additional objects that OpenKAT created will be added to your object " +"list as separate objects. If OpenKAT can’t add them automatically it will " +"guide you through the process of creating them manually." +msgstr "" + +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +#: reports/templates/report_oois_selection.html +msgid "Create object" +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "" +"Based on the url you provided OpenKAT added the necessary additional objects " +"to create a url object." +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "URL" +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +#: reports/report_types/dns_report/report.html +#: reports/templates/report_oois_selection.html +#: reports/templates/summary/ooi_selection.html tools/forms/ooi.py +#: rocky/templates/partials/elements/ooi_tree_condensed_table.html +#: rocky/templates/partials/explanations.html +#: rocky/templates/partials/ooi_detail_related_object.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Type" +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "Path" +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "Hostname" +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "scheme" +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "DNS Zone" +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "Network" +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "Start scanning" +msgstr "" + +#: onboarding/templates/step_3d_clearance_level_introduction.html +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +#: onboarding/templates/step_3f_set_clearance_level.html +msgid "OpenKAT Introduction" +msgstr "" + +#: onboarding/templates/step_3d_clearance_level_introduction.html +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +msgid "Setup scan - OOI clearance for" +msgstr "" + +#: onboarding/templates/step_3d_clearance_level_introduction.html +#: reports/templates/partials/report_introduction.html +msgid "Introduction" +msgstr "" + +#: onboarding/templates/step_3d_clearance_level_introduction.html +#: rocky/templates/partials/form/indemnification_add_form.html +msgid "" +"Some scans are lightweight while others might be a bit more aggressive with " +"their scanning. OpenKAT requires you to set a clearance level for each " +"object to prevent you from unintentionally running aggressive scans. For " +"example you might have the right to run any type of scan on your own server " +"but you probably don’t have the right to do so for objects owned by other " +"people of companies." +msgstr "" + +#: onboarding/templates/step_3d_clearance_level_introduction.html +msgid "How to know required clearance level" +msgstr "" + +#: onboarding/templates/step_3d_clearance_level_introduction.html +msgid "" +"Each plugin that scans will have a scan intensity score. The intensity of " +"the scan must be equal to or below the clearance level you set for your " +"object. If the scan has an intensity level that is too high, OpenKAT will " +"notify you before running it. Visually clearance levels and intensity scores " +"are indicated with little cat paws." +msgstr "" + +#: onboarding/templates/step_3d_clearance_level_introduction.html +msgid "" +"This scan has a scan intensity score of 1, requiring a level 1 clearance " +"level to be run. This means that the scan does not touch the object itself, " +"but only searches for information about the object." +msgstr "" + +#: onboarding/templates/step_3d_clearance_level_introduction.html +msgid "" +"An example of a more aggressive scan. Which has a scan intensity score of 3. " +"Meaning it requires at least a level 3 clearance level to be set on your " +"object." +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +msgid "" +"\n" +" OpenKAT has a permission system that allows " +"administrators to\n" +" configure which users can set a certain clearance level. " +"The will make sure\n" +" that only users that are trusted can start the more " +"aggressive scans.\n" +" " +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +msgid "Acknowledge clearance level" +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +msgid "" +"\n" +" Before a member is granted the ability to set clearance " +"levels on an object,\n" +" they must first acknowledge and accept the clearance " +"level set by the administrators.\n" +" The maximum scanning level permitted for a member is " +"aligned with the trusted clearance level.\n" +" By acknowledging the trusted clearance level, this " +"member formally agrees to abide by\n" +" this permission and gains the capability to perform " +"scans only up to this trusted clearance level.\n" +" This two-step process ensures that the member operates " +"within authorized boundaries.\n" +" " +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +msgid "What is my clearance level?" +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +#, python-format +msgid "" +"\n" +" Unfortunately you cannot continue the " +"onboarding.
    \n" +" Your administrator has trusted you with a " +"clearance level of L%(tcl)s.
    \n" +" You need at least a clearance level of " +"L%(dns_report_least_clearance_level)s to scan " +"%(ooi)s
    \n" +" Contact your administrator to receive a " +"higher clearance.\n" +" " +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +#, python-format +msgid "" +"\n" +" Your administrator has trusted you with a " +"clearance level of L%(tcl)s.
    \n" +" You must first accept this clearance level to " +"continue.\n" +" " +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +#, python-format +msgid "" +"\n" +" Accept level L%(tcl)s clearance and " +"responsibility\n" +" " +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +#, python-format +msgid "" +"\n" +" Your administrator has trusted " +"you with a clearance level of L%(tcl)s.
    \n" +" You have also acknowledged to " +"use this clearance level of L%(acl)s.\n" +" " +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +#: onboarding/templates/step_3f_set_clearance_level.html +#: rocky/templates/oois/ooi_list.html +#: rocky/templates/scan_profiles/scan_profile_detail.html +#: rocky/templates/scan_profiles/scan_profile_reset.html +msgid "Set clearance level" +msgstr "" + +#: onboarding/templates/step_3f_set_clearance_level.html +msgid "Setup scan - Set clearance level for" +msgstr "" + +#: onboarding/templates/step_3f_set_clearance_level.html +#, python-format +msgid "" +"After creating a new object OpenKAT will ask you to set a clearance level. " +"On the object detail page you can always change the clearance level. For the " +"onboarding we will suggest to set the clearance level to " +"L%(dns_report_least_clearance_level)s." +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +msgid "Setup scan - Enable plugins" +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +msgid "Plugins introduction" +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +msgid "" +"OpenKAT uses plugins to scan, check and analyze. Each plugin will bring a " +"specific skillset that will help to generate your report. There are three " +"types of plugins." +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +msgid "" +"Scan objects for data. Each boefje has a scan intensity score to prevent " +"invasive scanning on objects where you don’t have the clearance to do so." +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +msgid "" +"Check the data for specific objects and add these object to your object list." +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +#: reports/report_types/tls_report/report.html +msgid "Bits" +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +msgid "Analyze the available data to come to insights and conclusions." +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +msgid "" +"OpenKAT will be able to generate a full report when all the required and " +"suggested plugins are enabled. If you choose not to give a plugin permission " +"to run, the data that plugin would collect or produce will be left out of " +"the report which will then be generated based on the available data " +"collected by the enabled plugins. Below are the suggested and required " +"plugins for this report." +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +msgid "Let’s setup your scan by enabling the plugins of your choice below." +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +#: reports/templates/report_setup_scan.html +msgid "Suggested plugins" +msgstr "" + +#: onboarding/templates/step_4_report.html +msgid "Boefjes are scanning" +msgstr "" + +#: onboarding/templates/step_4_report.html +msgid "" +"The enabled boefjes are collecting the data needed to generate the DNS-" +"report. This may take some time based on the type of scans and the number of " +"objects found. For the current scan we expect boefjes to take about 3 " +"minutes." +msgstr "" + +#: onboarding/templates/step_4_report.html +msgid "" +"During this introduction we ask you to wait till the scan is ready. After " +"which you can view the report." +msgstr "" + +#: onboarding/templates/step_4_report.html +msgid "" +"After the onboarding, boefjes run in the background. This enables you to use " +"OpenKAT in the meantime without waiting for scans to finish. When you would " +"like to see the status of a scan you can open the \"tasks\" page." +msgstr "" + +#: onboarding/templates/step_4_report.html +msgid "Open my DNS-report" +msgstr "" + +#: onboarding/view_helpers.py +msgid "1: Introduction" +msgstr "" + +#: onboarding/view_helpers.py +msgid "2: Choose a report" +msgstr "" + +#: onboarding/view_helpers.py +msgid "3: Setup scan" +msgstr "" + +#: onboarding/view_helpers.py +msgid "4: Open report" +msgstr "" + +#: onboarding/view_helpers.py +msgid "2: Organization setup" +msgstr "" + +#: onboarding/view_helpers.py +msgid "3: Indemnification" +msgstr "" + +#: onboarding/view_helpers.py +msgid "4: Account setup" +msgstr "" + +#: onboarding/views.py +msgid "" +"OpenKAT added the following required object to your object list to complete " +"your request: {}" +msgstr "" + +#: onboarding/views.py +#, python-format +msgid "" +"Could not raise clearance level of %s to L%s. " +"Indemnification not present at organization %s." +msgstr "" + +#: onboarding/views.py +msgid "Clearance level has been set" +msgstr "" + +#: onboarding/views.py +msgid "OpenKAT Setup" +msgstr "" + +#: onboarding/views.py +#, python-brace-format +msgid "{org_name} successfully created." +msgstr "" + +#: onboarding/views.py +#, python-brace-format +msgid "{org_name} successfully updated." +msgstr "" + +#: onboarding/views.py +#, python-brace-format +msgid "{name} successfully created." +msgstr "" + +#: reports/forms.py tools/forms/ooi_form.py +msgid "Filter by OOI types" +msgstr "" + +#: reports/forms.py +msgid "Report types" +msgstr "" + +#: reports/report_types/dns_report/report.html +msgid "IP address lookup" +msgstr "" + +#: reports/report_types/dns_report/report.html +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "warning" +msgstr "" + +#: reports/report_types/dns_report/report.html +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Warning" +msgstr "" + +#: reports/report_types/dns_report/report.html +msgid "" +"You have less than one webserver that is reachable over IPv6, which is " +"not in compliance to internet.nl standards." +msgstr "" + +#: reports/report_types/dns_report/report.html +msgid "Other records found" +msgstr "" + +#: reports/report_types/dns_report/report.html +msgid "Record" +msgstr "" + +#: reports/report_types/dns_report/report.html +msgid "Found by" +msgstr "" + +#: reports/report_types/dns_report/report.html +msgid "Security measures" +msgstr "" + +#: reports/report_types/dns_report/report.py +msgid "" +"DNS reports focus on domain name system configuration and potential " +"weaknesses." +msgstr "" + +#: reports/report_types/tls_report/report.html +#: rocky/templates/organizations/organization_member_list.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "Status" +msgstr "" + +#: reports/report_types/tls_report/report.html +msgid "Protocol" +msgstr "" + +#: reports/report_types/tls_report/report.html +msgid "Encryption Algorithm" +msgstr "" + +#: reports/report_types/tls_report/report.html +msgid "Key Size" +msgstr "" + +#: reports/report_types/tls_report/report.html +#: rocky/templates/organizations/organization_list.html +#: rocky/templates/organizations/organization_settings.html +msgid "Code" +msgstr "" + +#: reports/report_types/tls_report/report.html +msgid "Phase out" +msgstr "" + +#: reports/report_types/tls_report/report.html +msgid "Good" +msgstr "" + +#: reports/report_types/tls_report/report.html +msgid "No ciphers found for this IPService" +msgstr "" + +#: reports/report_types/tls_report/report.html +#: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html +#: rocky/templates/header.html +#: rocky/templates/oois/ooi_detail_findings_list.html +#: rocky/templates/oois/ooi_detail_findings_overview.html +#: rocky/templates/oois/ooi_page_tabs.html +#: rocky/templates/partials/ooi_report_findings_block.html +#: rocky/views/finding_list.py rocky/views/finding_type_add.py +#: rocky/views/ooi_view.py +msgid "Findings" +msgstr "" + +#: reports/report_types/tls_report/report.py +msgid "TLS Report" +msgstr "" + +#: reports/report_types/tls_report/report.py +msgid "" +"TLS reports assess the security of data encryption and transmission " +"protocols." +msgstr "" + +#: reports/templates/partials/report_header.html +msgid "Report for organization" +msgstr "" + +#: reports/templates/partials/report_header.html +msgid "Observed at:" +msgstr "" + +#: reports/templates/partials/report_header.html +msgid "Created by:" +msgstr "" + +#: reports/templates/partials/report_introduction.html +msgid "" +"Through a systematic examination of the network's infrastructure, the scan " +"has identified potential security weaknesses and points of exposure. " +"Additionally, the report offers actionable recommendations and prioritizes " +"remediation steps to fortify the network's defenses against potential " +"threats. This invaluable assessment serves as a roadmap for enhancing " +"network security, ensuring the confidentiality, integrity, and availability " +"of critical data and resources." +msgstr "" + +#: reports/templates/report.html +msgid "for" +msgstr "" + +#: reports/templates/report_oois_selection.html +msgid "Overview of reports" +msgstr "" + +#: reports/templates/report_oois_selection.html +msgid "Select OOI" +msgid_plural "Select OOIs" +msgstr[0] "" +msgstr[1] "" + +#: reports/templates/report_oois_selection.html +msgid "Select which objects you want to include in your report." +msgstr "" + +#: reports/templates/report_oois_selection.html +#: rocky/templates/admin/change_list.html rocky/templates/oois/ooi_list.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "Filter" +msgstr "" + +#: reports/templates/report_oois_selection.html +msgid "No OOIs found." +msgstr "" + +#: reports/templates/report_oois_selection.html +msgid "Go to the object page" +msgstr "" + +#: reports/templates/report_oois_selection.html +#: reports/templates/summary/ooi_selection.html +#: rocky/templates/partials/task_history.html +msgid "Object" +msgstr "" + +#: reports/templates/report_oois_selection.html +msgid "Setup report" +msgstr "" + +#: reports/templates/report_setup_scan.html rocky/views/organization_add.py +msgid "Setup" +msgstr "" + +#: reports/templates/report_setup_scan.html +msgid "Set up the required plugins for this report." +msgstr "" + +#: reports/templates/report_setup_scan.html +#: reports/templates/report_types_selection.html +msgid "Change selection" +msgstr "" + +#: reports/templates/report_setup_scan.html reports/views.py +msgid "Set up scan" +msgstr "" + +#: reports/templates/report_setup_scan.html +msgid "" +"KAT will be able to generate a full report when all the required and " +"suggested boefjes are enabled." +msgstr "" + +#: reports/templates/report_setup_scan.html +msgid "" +"If you choose not to give a plugin permission to run, the data that plugin " +"would collect or produce will be left out of the report which will then be " +"generated based on the available data collected by the enabled plugins." +msgstr "" + +#: reports/templates/report_setup_scan.html +msgid "Required plugins" +msgstr "" + +#: reports/templates/report_setup_scan.html +msgid "This report type requires the following plugins to be enabled:" +msgstr "" + +#: reports/templates/report_setup_scan.html +msgid "" +"This report requires at least one of the following plugins to be enabled to " +"generate the report:" +msgstr "" + +#: reports/templates/report_setup_scan.html +#: rocky/templates/partials/ooi_detail_toolbar.html +msgid "Generate report" +msgstr "" + +#: reports/templates/report_types_selection.html reports/views.py +msgid "Choose report types" +msgstr "" + +#: reports/templates/report_types_selection.html +msgid "" +"Various types of reports, such as DNS reports and TLS reports, are essential " +"for identifying vulnerabilities in different aspects of a system's security. " +"DNS reports focus on domain name system configuration and potential " +"weaknesses, while TLS reports assess the security of data encryption and " +"transmission protocols, helping organizations pinpoint areas where security " +"improvements are needed." +msgstr "" + +#: reports/templates/report_types_selection.html +msgid "Selected object" +msgid_plural "Selected objects" +msgstr[0] "" +msgstr[1] "" + +#: reports/templates/report_types_selection.html +msgid "Available report types" +msgstr "" + +#: reports/templates/report_types_selection.html +msgid "All report types that are available for your selection." +msgstr "" + +#: reports/templates/report_types_selection.html +msgid "Toggle all report types" +msgstr "" + +#: reports/templates/report_types_selection.html +msgid "Continue with selection" +msgstr "" + +#: reports/templates/summary/report_summary.html +msgid "Selected OOIs" +msgstr "" + +#: reports/templates/summary/report_summary.html +msgid "Selected Report Types" +msgstr "" + +#: reports/templates/summary/report_summary.html +msgid "Report type" +msgstr "" + +#: reports/templates/summary/report_summary.html +msgid "Selected Plugins for scans" +msgstr "" + +#: reports/templates/summary/report_summary.html +msgid "Plugin options" +msgstr "" + +#: reports/templates/summary/report_summary.html +msgid "Plugin scan level" +msgstr "" + +#: reports/templates/summary/service_health.html rocky/templates/health.html +msgid "Version" +msgstr "" + +#: reports/views.py +msgid "View Report" +msgstr "" + +#: reports/views.py +msgid "Select at least one OOI to proceed." +msgstr "" + +#: reports/views.py +msgid "Select at least one report type to proceed." +msgstr "" + +#: reports/views.py +msgid "This report may not show all the data as some plugins are not enabled." +msgstr "" + +#: tools/forms/base.py +msgid "Date" +msgstr "" + +#: tools/forms/boefje.py +msgid "" +"Not all required boefjes are selected. Please select all required boefjes." +msgstr "" + +#: tools/forms/finding_type.py +msgid "KAT-ID" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Unique ID within OpenKAT, for this type" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Title" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Give the finding type a fitting title" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Describe the finding type" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Risk" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Solution" +msgstr "" + +#: tools/forms/finding_type.py +msgid "How can this be solved?" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Describe how this type of finding can be solved" +msgstr "" + +#: tools/forms/finding_type.py +msgid "References" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Please give some references on the solution" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Please give sources and references on the suggested solution" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Impact description" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Describe the solutions impact" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Solution chance" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Solution impact" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Solution effort" +msgstr "" + +#: tools/forms/finding_type.py +msgid "ID should start with " +msgstr "" + +#: tools/forms/finding_type.py +msgid "Finding type already exists" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Click to select one of the available options" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Finding types" +msgstr "" + +#: tools/forms/finding_type.py +#: rocky/templates/partials/finding_occurrence_definition_list.html +msgid "Proof" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Provide evidence of your finding" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Describe your finding" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Reproduce finding" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Please explain how to reproduce your finding" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Date/Time (UTC)" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Doc! I'm from the future, I'm here to take you back!" +msgstr "" + +#: tools/forms/finding_type.py +msgid "OOI doesn't exist" +msgstr "" + +#: tools/forms/findings.py +msgid "Show non-muted findings" +msgstr "" + +#: tools/forms/findings.py +msgid "Show muted findings" +msgstr "" + +#: tools/forms/findings.py +msgid "Show muted and non-muted findings" +msgstr "" + +#: tools/forms/findings.py +msgid "Filter by severity" +msgstr "" + +#: tools/forms/findings.py +msgid "Filter by muted findings" +msgstr "" + +#: tools/forms/ooi.py +msgid "Filter types" +msgstr "" + +#: tools/forms/ooi.py tools/view_helpers.py +#: rocky/templates/admin/delete_confirmation.html +#: rocky/templates/admin/delete_selected_confirmation.html +#: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html +#: rocky/templates/header.html rocky/templates/indemnification_present.html +#: rocky/views/ooi_add.py rocky/views/ooi_list.py rocky/views/ooi_view.py +#: rocky/views/upload_csv.py rocky/views/upload_raw.py +msgid "Objects" +msgstr "" + +#: tools/forms/ooi.py +msgid "Clearance Level" +msgstr "" + +#: tools/forms/ooi.py +msgid "Show objects that don't meet the Boefjes scan level." +msgstr "" + +#: tools/forms/ooi.py +msgid "Show Boefjes that exceed the objects clearance level." +msgstr "" + +#: tools/forms/ooi_form.py +msgid "option" +msgstr "" + +#: tools/forms/ooi_form.py +#, python-brace-format +msgid "Optionally choose a {option_label}" +msgstr "" + +#: tools/forms/ooi_form.py +#, python-brace-format +msgid "Please choose a {option_label}" +msgstr "" + +#: tools/forms/ooi_form.py +msgid "Filter by clearance level" +msgstr "" + +#: tools/forms/ooi_form.py +msgid "Filter by clearance type" +msgstr "" + +#: tools/forms/settings.py +msgid "--- Show all ----" +msgstr "" + +#: tools/forms/settings.py +msgid "recommendation" +msgstr "" + +#: tools/forms/settings.py +msgid "low" +msgstr "" + +#: tools/forms/settings.py +msgid "medium" +msgstr "" + +#: tools/forms/settings.py +msgid "high" +msgstr "" + +#: tools/forms/settings.py +msgid "very high" +msgstr "" + +#: tools/forms/settings.py +msgid "critical" +msgstr "" + +#: tools/forms/settings.py +msgid "quickfix" +msgstr "" + +#: tools/forms/settings.py +#: rocky/templates/scan_profiles/scan_profile_detail.html +msgid "Declared" +msgstr "" + +#: tools/forms/settings.py +#: rocky/templates/scan_profiles/scan_profile_detail.html +msgid "Inherited" +msgstr "" + +#: tools/forms/settings.py +#: rocky/templates/scan_profiles/scan_profile_detail.html +msgid "Empty" +msgstr "" + +#: tools/forms/settings.py +msgid "Add one finding type ID per line." +msgstr "" + +#: tools/forms/settings.py +msgid "Add the date and time of your finding (UTC)" +msgstr "" + +#: tools/forms/settings.py +msgid "" +"OpenKAT stores a time indication with every observation, so it is possible " +"to see the status of your network through time. Select a datetime to change " +"the view to represent that moment in time." +msgstr "" + +#: tools/forms/settings.py +msgid "Depth of the tree." +msgstr "" + +#: tools/forms/upload_csv.py +msgid "Only CSV file supported" +msgstr "" + +#: tools/forms/upload_csv.py tools/forms/upload_raw.py +msgid "File could not be decoded" +msgstr "" + +#: tools/forms/upload_csv.py +msgid "No file selected" +msgstr "" + +#: tools/forms/upload_csv.py +msgid "The uploaded file is empty." +msgstr "" + +#: tools/forms/upload_csv.py +msgid "The number of columns do not meet the requirements." +msgstr "" + +#: tools/forms/upload_csv.py +msgid "OOI Type in CSV does not meet the criteria." +msgstr "" + +#: tools/forms/upload_csv.py +msgid "An error has occurred during the parsing of the csv file:" +msgstr "" + +#: tools/forms/upload_csv.py +msgid "Upload CSV file" +msgstr "" + +#: tools/forms/upload_csv.py +msgid "Only accepts CSV file." +msgstr "" + +#: tools/forms/upload_oois.py rocky/templates/partials/explanations.html +msgid "Object Type" +msgstr "" + +#: tools/forms/upload_oois.py +msgid "Choose a type of which objects are added." +msgstr "" + +#: tools/forms/upload_raw.py +msgid "Organization code(s) for raw does not exist in our database" +msgstr "" + +#: tools/forms/upload_raw.py +msgid "Mime types" +msgstr "" + +#: tools/forms/upload_raw.py +msgid "" +"

    Add a set of mime types, separated by commas, for example:

    \"text/html, image/jpeg\" or \"boefje/dns-records\".

    Mime types are used to match the correct normalizer to a raw file. When " +"the mime type \"boefje/dns-records\" is added, the normalizer expects the " +"raw file to contain dns scan information.

    " +msgstr "" + +#: tools/forms/upload_raw.py rocky/templates/partials/ooi_list_toolbar.html +#: rocky/templates/upload_raw.html +msgid "Upload raw file" +msgstr "" + +#: tools/models.py +msgid "The name of the organisation" +msgstr "" + +#: tools/models.py +msgid "" +"A slug containing only lower-case unicode letters, numbers, hyphens or " +"underscores that will be used in URLs and paths" +msgstr "" + +#: tools/models.py +msgid "" +"This organization code is reserved by OpenKAT and cannot be used. Choose " +"another organization code." +msgstr "" + +#: tools/models.py +msgid "new" +msgstr "" + +#: tools/view_helpers.py rocky/templates/header.html +#: rocky/templates/organizations/organization_list.html +#: rocky/templates/organizations/organization_member_list.html +#: rocky/templates/partials/organization_member_list_filters.html +#: rocky/views/organization_member_edit.py +msgid "Members" +msgstr "" + +#: tools/view_helpers.py +msgid "" +"Your task is scheduled and will soon be started in the background. Results " +"will be added to the object list when they are in. It may take some time, a " +"refresh of the page may be needed to show the results." +msgstr "" + +#: rocky/messaging.py +msgid "" +"You have trusted this member with a clearance level of L{}. This member " +"needs at least a clearance level of L{} in order to do a proper onboarding. " +"Edit this member and change the clearance level if necessary." +msgstr "" + +#: rocky/scheduler.py +msgid "Connectivity issues with Mula." +msgstr "" + +#: rocky/scheduler.py +msgid "Task queue is full, please try again later." +msgstr "" + +#: rocky/scheduler.py +msgid "Task is invalid." +msgstr "" + +#: rocky/scheduler.py +msgid "Task already queued." +msgstr "" + +#: rocky/settings.py +msgid "Blue light" +msgstr "" + +#: rocky/settings.py +msgid "Blue medium" +msgstr "" + +#: rocky/settings.py +msgid "Blue dark" +msgstr "" + +#: rocky/settings.py +msgid "Green light" +msgstr "" + +#: rocky/settings.py +msgid "Green medium" +msgstr "" + +#: rocky/settings.py +msgid "Green dark" +msgstr "" + +#: rocky/settings.py +msgid "Yellow light" +msgstr "" + +#: rocky/settings.py +msgid "Yellow medium" +msgstr "" + +#: rocky/settings.py +msgid "Yellow dark" +msgstr "" + +#: rocky/settings.py +msgid "Orange light" +msgstr "" + +#: rocky/settings.py +msgid "Orange medium" +msgstr "" + +#: rocky/settings.py +msgid "Orange dark" +msgstr "" + +#: rocky/settings.py +msgid "Red light" +msgstr "" + +#: rocky/settings.py +msgid "Red medium" +msgstr "" + +#: rocky/settings.py +msgid "Red dark" +msgstr "" + +#: rocky/settings.py +msgid "Violet light" +msgstr "" + +#: rocky/settings.py +msgid "Violet medium" +msgstr "" + +#: rocky/settings.py +msgid "Violet dark" +msgstr "" + +#: rocky/settings.py +msgid "Plain" +msgstr "" + +#: rocky/settings.py +msgid "Solid" +msgstr "" + +#: rocky/settings.py +msgid "Dashed" +msgstr "" + +#: rocky/settings.py +msgid "Dotted" +msgstr "" + +#: rocky/templates/403.html +msgid "Error code 403: Unauthorized" +msgstr "" + +#: rocky/templates/403.html +msgid "Your account is not authorized to access this page or organization." +msgstr "" + +#: rocky/templates/403.html +msgid "Please contact your system administrator." +msgstr "" + +#: rocky/templates/403.html rocky/templates/404.html +msgid "You may want to go back to the" +msgstr "" + +#: rocky/templates/403.html rocky/templates/404.html +#: rocky/templates/crisis_room/crisis_room.html +msgid "Crisis Room" +msgstr "" + +#: rocky/templates/404.html +msgid "Error code 404: Page not found" +msgstr "" + +#: rocky/templates/404.html +msgid "" +"The page you wanted to see or the file you wanted to view was not found." +msgstr "" + +#: rocky/templates/admin/base.html +msgid "Skip to main content" +msgstr "" + +#: rocky/templates/admin/base.html +msgid "Welcome," +msgstr "" + +#: rocky/templates/admin/base.html +msgid "View site" +msgstr "" + +#: rocky/templates/admin/base.html +msgid "Documentation" +msgstr "" + +#: rocky/templates/admin/base.html +msgid "Change password" +msgstr "" + +#: rocky/templates/admin/base.html +msgid "Log out" +msgstr "" + +#: rocky/templates/admin/base.html rocky/templates/header.html +msgid "Breadcrumbs" +msgstr "" + +#: rocky/templates/admin/base.html rocky/templates/admin/change_form.html +#: rocky/templates/admin/change_list.html +#: rocky/templates/admin/delete_confirmation.html +#: rocky/templates/admin/delete_selected_confirmation.html +msgid "Home" +msgstr "" + +#: rocky/templates/admin/change_form.html +#, python-format +msgid "Add %(name)s" +msgstr "" + +#: rocky/templates/admin/change_form.html +#: rocky/templates/admin/change_list.html +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: rocky/templates/admin/change_list.html +msgid "Clear all filters" +msgstr "" + +#: rocky/templates/admin/delete_confirmation.html +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" + +#: rocky/templates/admin/delete_confirmation.html +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the " +"following protected related objects:" +msgstr "" + +#: rocky/templates/admin/delete_confirmation.html +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" + +#: rocky/templates/admin/delete_confirmation.html +#: rocky/templates/admin/delete_selected_confirmation.html +msgid "Yes, I’m sure" +msgstr "" + +#: rocky/templates/admin/delete_confirmation.html +#: rocky/templates/admin/delete_selected_confirmation.html +msgid "No, take me back" +msgstr "" + +#: rocky/templates/admin/delete_selected_confirmation.html +msgid "Delete multiple objects" +msgstr "" + +#: rocky/templates/admin/delete_selected_confirmation.html +#, python-format +msgid "" +"Deleting the selected %(objects_name)s would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" + +#: rocky/templates/admin/delete_selected_confirmation.html +#, python-format +msgid "" +"Deleting the selected %(objects_name)s would require deleting the following " +"protected related objects:" +msgstr "" + +#: rocky/templates/admin/delete_selected_confirmation.html +#, python-format +msgid "" +"Are you sure you want to delete the selected %(objects_name)s? All of the " +"following objects and their related items will be deleted:" +msgstr "" + +#: rocky/templates/admin/popup_response.html +msgid "Popup closing…" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room.html +msgid "" +"An overview of all (critical) findings OpenKAT found. Check the detail " +"section for additional severity information." +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +msgid "Total findings" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +msgid "Total Findings" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Close details" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Open details" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +msgid " Finding Details" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +#: rocky/templates/oois/ooi_detail_findings_overview.html +#: rocky/templates/partials/ooi_report_findings_block_table.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Occurrences" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +#: rocky/templates/organizations/organization_list.html +msgid "There were no organizations found for your user account" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +msgid "Top critical organizations" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +msgid "Critical findings" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +msgid "Critical Findings" +msgstr "" + +#: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html +#: rocky/templates/header.html +msgid "Close menu" +msgstr "" + +#: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html +#: rocky/templates/header.html +msgid "Main navigation" +msgstr "" + +#: rocky/templates/dashboard_client.html +msgid "Indemnifications" +msgstr "" + +#: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/secondary-menu.html +msgid "Logout" +msgstr "" + +#: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html +msgid "Welcome" +msgstr "" + +#: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html +msgid "User overview:" +msgstr "" + +#: rocky/templates/dashboard_redteam.html +msgid "Organization code missing" +msgstr "" + +#: rocky/templates/finding_type_add.html +#: rocky/templates/partials/findings_list_toolbar.html +#: rocky/views/finding_type_add.py +msgid "Add finding type" +msgstr "" + +#: rocky/templates/finding_type_add.html +msgid "Finding Type" +msgstr "" + +#: rocky/templates/findings/finding_add.html +#: rocky/templates/oois/ooi_detail_findings_list.html +#: rocky/templates/oois/ooi_findings.html +#: rocky/templates/partials/findings_list_toolbar.html +msgid "Add finding" +msgstr "" + +#: rocky/templates/findings/finding_add.html +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Finding" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "Findings @ " +msgstr "" + +#: rocky/templates/findings/finding_list.html +#, python-format +msgid "" +"An overview of all findings OpenKAT found for organization " +"%(organization_name)s. Each finding relates to an object. " +"Click a finding for additional information." +msgstr "" + +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +msgid "Showing " +msgstr "" + +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/pagination.html +msgid "of" +msgstr "" + +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +msgid "findings" +msgstr "" + +#: rocky/templates/findings/finding_list.html +#: rocky/templates/oois/ooi_page_tabs.html +#: rocky/templates/partials/elements/ooi_tree_condensed_table.html +#: rocky/templates/partials/elements/ooi_tree_condensed_table_row.html +msgid "Tree" +msgstr "" + +#: rocky/templates/findings/finding_list.html +#: rocky/templates/oois/ooi_page_tabs.html +#: rocky/templates/partials/elements/ooi_tree_condensed_table.html +#: rocky/templates/partials/elements/ooi_tree_condensed_table_row.html +msgid "Graph" +msgstr "" + +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#, python-format +msgid "Show details for %(finding)s" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "Finding type:" +msgstr "" + +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#, python-format +msgid "Show details for %(finding_type)s" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "OOI type:" +msgstr "" + +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#, python-format +msgid "Show %(ooi_type)s objects" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "Source OOI:" +msgstr "" + +#: rocky/templates/findings/finding_list.html +#, python-format +msgid "Show details for %(ooi)s" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "Risk score:" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "Mute findings" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "Reason" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "Unmute Findings" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "Mute Findings" +msgstr "" + +#: rocky/templates/findings/findings_filter.html +#: rocky/templates/partials/elements/ooi_list_settings_form.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "Set filters" +msgstr "" + +#: rocky/templates/findings/findings_filter.html +#: rocky/templates/partials/elements/ooi_list_settings_form.html +msgid "Clear filters" +msgstr "" + +#: rocky/templates/footer.html rocky/views/privacy_statement.py +msgid "Privacy Statement" +msgstr "" + +#: rocky/templates/footer.html rocky/views/health.py +msgid "Health" +msgstr "" + +#: rocky/templates/forms/widgets/checkbox_group_table.html +msgid "this field is required" +msgstr "" + +#: rocky/templates/graph-d3.html +msgid "" +"Click a circle to collapse / expand the tree, click the text to view the " +"tree from that OOI and hover over the text to see details." +msgstr "" + +#: rocky/templates/graph-d3.html +msgid "Tree graph" +msgstr "" + +#: rocky/templates/header.html +msgid "Menu" +msgstr "" + +#: rocky/templates/header.html +msgid "OpenKAT logo, go to the homepage of OpenKAT" +msgstr "" + +#: rocky/templates/header.html +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/views/finding_list.py +msgid "Crisis room" +msgstr "" + +#: rocky/templates/header.html rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +#: rocky/views/task_detail.py rocky/views/tasks.py +msgid "Tasks" +msgstr "" + +#: rocky/templates/health.html +msgid "Health Checks" +msgstr "" + +#: rocky/templates/health.html +msgid "Healthy" +msgstr "" + +#: rocky/templates/health.html +msgid "Additional" +msgstr "" + +#: rocky/templates/indemnification_present.html +msgid "Indemnification" +msgstr "" + +#: rocky/templates/indemnification_present.html +msgid "" +"Indemnification on the organization present. You may now add objects and " +"start scans." +msgstr "" + +#: rocky/templates/indemnification_present.html +msgid "Go to" +msgstr "" + +#: rocky/templates/landing_page.html +msgid "Kwetsbaarheden Analyse Tool" +msgstr "" + +#: rocky/templates/landing_page.html +msgid "What is OpenKAT?" +msgstr "" + +#: rocky/templates/landing_page.html +msgid "" +"OpenKAT is a vulnerability analysis tool. An Open Source-project developed " +"by the Ministry of Health, Welfare and Sport to make your and our world " +"safer." +msgstr "" + +#: rocky/templates/landing_page.html +msgid "OpenKAT sees" +msgstr "" + +#: rocky/templates/landing_page.html +msgid "" +"Dozens of tools are integrated in OpenKAT to view the world (digital and " +"analog).
    Our motto is therefore: I see, I see, what you do not see." +msgstr "" + +#: rocky/templates/landing_page.html +msgid "OpenKAT knows" +msgstr "" + +#: rocky/templates/landing_page.html +msgid "" +"OpenKAT does not forget (just like that), and can be queried without " +"scanning again. Also about a historical situation." +msgstr "" + +#: rocky/templates/landing_page.html +msgid "OpenKAT is secure" +msgstr "" + +#: rocky/templates/landing_page.html +msgid "" +"Forensically secured storage of evidence is one of the basic ingredients of " +"OpenKAT." +msgstr "" + +#: rocky/templates/landing_page.html +msgid "OpenKAT is sweet" +msgstr "" + +#: rocky/templates/landing_page.html +msgid "" +"OpenKAT thinks about privacy, and stores what is necessary, within the rules " +"of your organization and the law." +msgstr "" + +#: rocky/templates/landing_page.html +msgid "A wide playing field" +msgstr "" + +#: rocky/templates/landing_page.html +msgid "" +"OpenKAT makes a copy of the actual reality by means of the integrated tools. " +"Within this copy you can search for answers to countless security and policy " +"questions. Expected and unexpected changes in the world are made visible, " +"and where necessary reported or made known directly to the right people." +msgstr "" + +#: rocky/templates/legal/privacy_statement.html +msgid "OpenKAT Privacy Statement" +msgstr "" + +#: rocky/templates/legal/privacy_statement.html +msgid "" +"OpenKAT is dedicated to protecting the confidentiality and privacy of " +"information entrusted to it. As part of this fundamental obligation, OpenKAT " +"is committed to the appropriate protection and use of personal information " +"(sometimes referred to as \"personal data\", \"personally identifiable " +"information\" or \"PII\") that has been collected online." +msgstr "" + +#: rocky/templates/oois/error.html +msgid "Object List" +msgstr "" + +#: rocky/templates/oois/error.html +msgid "An error occurred. Please contact a system administrator." +msgstr "" + +#: rocky/templates/oois/ooi_add.html +#, python-format +msgid "Add a %(display_type)s" +msgstr "" + +#: rocky/templates/oois/ooi_add.html +msgid "" +"Here you can add the asset of the client. Findings can be added to these in " +"the findings page." +msgstr "" + +#: rocky/templates/oois/ooi_add.html +#, python-format +msgid "Add %(display_type)s" +msgstr "" + +#: rocky/templates/oois/ooi_add_type_select.html +msgid "Manual creation" +msgstr "" + +#: rocky/templates/oois/ooi_add_type_select.html +msgid "Select the type of object you want to create." +msgstr "" + +#: rocky/templates/oois/ooi_delete.html +#, python-format +msgid "Delete %(primary_key)s" +msgstr "" + +#: rocky/templates/oois/ooi_delete.html +#: rocky/templates/scan_profiles/scan_profile_reset.html +msgid "Are you sure?" +msgstr "" + +#: rocky/templates/oois/ooi_delete.html +#, python-format +msgid "Here you can delete the %(display_type)s." +msgstr "" + +#: rocky/templates/oois/ooi_delete.html +#: rocky/templates/partials/elements/ooi_tree_condensed_table.html +msgid "Key" +msgstr "" + +#: rocky/templates/oois/ooi_delete.html +#: rocky/templates/partials/ooi_detail_toolbar.html +#, python-format +msgid "Delete %(display_type)s" +msgstr "" + +#: rocky/templates/oois/ooi_delete.html +msgid "Deletion not possible for types: KATFindingType and CVEFindingType" +msgstr "" + +#: rocky/templates/oois/ooi_detail.html +msgid "using boefjes" +msgstr "" + +#: rocky/templates/oois/ooi_detail.html +#: rocky/templates/oois/ooi_detail_origins_observations.html +#: rocky/templates/scan.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Boefje" +msgstr "" + +#: rocky/templates/oois/ooi_detail.html rocky/templates/scan.html +msgid "Scan profile" +msgstr "" + +#: rocky/templates/oois/ooi_detail.html +msgid "There are no boefjes enabled to scan an OOI of type" +msgstr "" + +#: rocky/templates/oois/ooi_detail.html +#: rocky/templates/partials/ooi_report_severity_totals.html +msgid "See" +msgstr "" + +#: rocky/templates/oois/ooi_detail.html +msgid "to find and enable boefjes that can scan within the current level." +msgstr "" + +#: rocky/templates/oois/ooi_detail.html +msgid "There are no boefjes available within the current clearance level of" +msgstr "" + +#: rocky/templates/oois/ooi_detail.html +msgid "Or if you have the authorization, upgrade the clearance level of" +msgstr "" + +#: rocky/templates/oois/ooi_detail_add_related_object.html +msgid "Add related object" +msgstr "" + +#: rocky/templates/oois/ooi_detail_add_related_object.html +#: rocky/templates/oois/ooi_detail_object.html +#: rocky/templates/partials/elements/ooi_add_type_select_form.html +msgid "Object details" +msgstr "" + +#: rocky/templates/oois/ooi_detail_add_related_object.html +#: rocky/templates/partials/elements/ooi_add_type_select_form.html +msgid "Object type" +msgstr "" + +#: rocky/templates/oois/ooi_detail_add_related_object.html +#: rocky/templates/partials/elements/ooi_add_type_select_form.html +msgid "Choose an object type to add" +msgstr "" + +#: rocky/templates/oois/ooi_detail_add_related_object.html +#: rocky/templates/partials/elements/ooi_add_type_select_form.html +msgid "Select an object type to add." +msgstr "" + +#: rocky/templates/oois/ooi_detail_add_related_object.html +#: rocky/templates/partials/elements/ooi_add_type_select_form.html +#: rocky/templates/partials/ooi_list_toolbar.html rocky/views/ooi_add.py +msgid "Add object" +msgstr "" + +#: rocky/templates/oois/ooi_detail_findings_list.html +msgid "Overview of findings for " +msgstr "" + +#: rocky/templates/oois/ooi_detail_findings_list.html +msgid "Score" +msgstr "" + +#: rocky/templates/oois/ooi_detail_findings_list.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Finding details" +msgstr "" + +#: rocky/templates/oois/ooi_detail_findings_overview.html +msgid "Overview of the number of findings and their severity found on" +msgstr "" + +#: rocky/templates/oois/ooi_detail_findings_overview.html +msgid "" +"Findings can occur multiple times. To give better insight the following " +"table shows the number of unique findings found as well as the number of " +"occurrences." +msgstr "" + +#: rocky/templates/oois/ooi_detail_findings_overview.html +msgid "See finding details" +msgstr "" + +#: rocky/templates/oois/ooi_detail_findings_overview.html +msgid "Total findings:" +msgstr "" + +#: rocky/templates/oois/ooi_detail_origins_declarations.html +msgid "Declarations" +msgstr "" + +#: rocky/templates/oois/ooi_detail_origins_inference.html +msgid "Inferred by" +msgstr "" + +#: rocky/templates/oois/ooi_detail_origins_inference.html +msgid "Bit" +msgstr "" + +#: rocky/templates/oois/ooi_detail_origins_inference.html +#: rocky/templates/oois/ooi_detail_origins_observations.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Source" +msgstr "" + +#: rocky/templates/oois/ooi_detail_origins_inference.html +msgid "Parameters" +msgstr "" + +#: rocky/templates/oois/ooi_detail_origins_observations.html +msgid "Observed by" +msgstr "" + +#: rocky/templates/oois/ooi_detail_origins_observations.html +msgid "Task ID" +msgstr "" + +#: rocky/templates/oois/ooi_edit.html +#, python-format +msgid "Edit %(type)s: %(ooi_human_readable)s" +msgstr "" + +#: rocky/templates/oois/ooi_edit.html +msgid "Primary key fields cannot be edited." +msgstr "" + +#: rocky/templates/oois/ooi_edit.html +#, python-format +msgid "Save %(display_type)s" +msgstr "" + +#: rocky/templates/oois/ooi_findings.html +msgid "Currently there are no findings for OOI" +msgstr "" + +#: rocky/templates/oois/ooi_list.html +#, python-format +msgid "" +"An overview of objects found for organization %(organization_name)s. Objects can be added manually or by running Boefjes. Click an " +"object for additional information." +msgstr "" + +#: rocky/templates/oois/ooi_list.html +msgid "Currently filtered on:" +msgstr "" + +#: rocky/templates/oois/ooi_list.html +#, python-format +msgid "Showing %(length)s of %(total)s objects" +msgstr "" + +#: rocky/templates/oois/ooi_list.html +msgid "Delete object(s)" +msgstr "" + +#: rocky/templates/oois/ooi_mute_finding.html +msgid "Mute finding" +msgstr "" + +#: rocky/templates/oois/ooi_mute_finding.html +msgid "Give a reason below why you want to mute this finding." +msgstr "" + +#: rocky/templates/oois/ooi_mute_finding.html +msgid "Mute" +msgstr "" + +#: rocky/templates/oois/ooi_page_tabs.html +msgid "List of views for OOI" +msgstr "" + +#: rocky/templates/oois/ooi_page_tabs.html +msgid "Overview" +msgstr "" + +#: rocky/templates/oois/ooi_past_due_warning.html +msgid "This object is past due" +msgstr "" + +#: rocky/templates/oois/ooi_past_due_warning.html +msgid "This object is past due and has been deleted" +msgstr "" + +#: rocky/templates/oois/ooi_past_due_warning.html +msgid "" +"This object is past due. You are viewing the object state in a past state." +msgstr "" + +#: rocky/templates/oois/ooi_past_due_warning.html +msgid "" +"You will not be able to add Findings or other OOI's to past due objects." +msgstr "" + +#: rocky/templates/oois/ooi_past_due_warning.html +#: rocky/templates/partials/hyperlink_ooi_id.html +#, python-format +msgid "Show details for %(name)s" +msgstr "" + +#: rocky/templates/oois/ooi_past_due_warning.html +msgid "View the current state" +msgstr "" + +#: rocky/templates/oois/ooi_past_due_warning.html +msgid "" +"You will not be able to add Findings or other OOI's, this object has been " +"deleted and is no longer available." +msgstr "" + +#: rocky/templates/oois/ooi_report.html +#: rocky/templates/partials/findings_list_toolbar.html +msgid "Download PDF" +msgstr "" + +#: rocky/templates/oois/ooi_report.html +#, python-format +msgid "Findings report for %(name)s" +msgstr "" + +#: rocky/templates/oois/ooi_report.html +#, python-format +msgid "" +"These are the findings of a OpenKAT-analysis on %(observed_at)s. Click a " +"finding for more detailed information about the issue, its origin, severity " +"and possible solutions." +msgstr "" + +#: rocky/templates/oois/ooi_report_404.html +#, python-format +msgid "A report for %(name)s wasn't found." +msgstr "" + +#: rocky/templates/oois/ooi_report_404.html +#, python-format +msgid "" +"Perhaps it never was, perhaps it just didn't exist on %(observed_at)s
    " +"Try some other dates!" +msgstr "" + +#: rocky/templates/oois/ooi_summary.html +msgid "Summary for" +msgstr "" + +#: rocky/templates/oois/ooi_summary.html +msgid "Below you can see findings that were found for" +msgstr "" + +#: rocky/templates/oois/ooi_summary.html +msgid "and direct children of this" +msgstr "" + +#: rocky/templates/oois/ooi_summary.html +msgid "This" +msgstr "" + +#: rocky/templates/oois/ooi_summary.html +msgid "tree view" +msgstr "" + +#: rocky/templates/oois/ooi_summary.html +msgid "of the" +msgstr "" + +#: rocky/templates/oois/ooi_summary.html +msgid "shows the same objects." +msgstr "" + +#: rocky/templates/oois/ooi_tree.html +msgid "Object tree" +msgstr "" + +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/organizations/organization_settings.html +msgid "indemnification warning" +msgstr "" + +#: rocky/templates/organizations/organization_crisis_room.html +#, python-format +msgid "" +"\n" +" Warning:\n" +" Indemnification is not set for this " +"organization.\n" +" Go to the organization settings page to add " +"one.\n" +" " +msgstr "" + +#: rocky/templates/organizations/organization_crisis_room.html +msgid "" +"An overview of the top 10 most severe findings OpenKAT found. Check the " +"detail section for additional severity information." +msgstr "" + +#: rocky/templates/organizations/organization_crisis_room.html +msgid "Top 10 most severe Findings" +msgstr "" + +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/ooi_report_findings_block_table.html +msgid "Finding type" +msgstr "" + +#: rocky/templates/organizations/organization_crisis_room.html +msgid "OOI type" +msgstr "" + +#: rocky/templates/organizations/organization_crisis_room.html +msgid "Source OOI" +msgstr "" + +#: rocky/templates/organizations/organization_edit.html +msgid "Edit organization" +msgstr "" + +#: rocky/templates/organizations/organization_edit.html +msgid "Save organization" +msgstr "" + +#: rocky/templates/organizations/organization_list.html +msgid "Add new organization" +msgstr "" + +#: rocky/templates/organizations/organization_list.html +msgid "Organization overview:" +msgstr "" + +#: rocky/templates/organizations/organization_list.html +#: rocky/templates/organizations/organization_settings.html +msgid "Tags" +msgstr "" + +#: rocky/templates/organizations/organization_member_add.html +msgid " member account setup" +msgstr "" + +#: rocky/templates/organizations/organization_member_add.html +msgid "Member details" +msgstr "" + +#: rocky/templates/organizations/organization_member_add_account_type.html +msgid "Member account type setup" +msgstr "" + +#: rocky/templates/organizations/organization_member_add_account_type.html +msgid "Choose an account type for this new member." +msgstr "" + +#: rocky/templates/organizations/organization_member_add_account_type.html +msgid "Account type details" +msgstr "" + +#: rocky/templates/organizations/organization_member_edit.html +#: rocky/views/organization_member_edit.py +msgid "Edit member" +msgstr "" + +#: rocky/templates/organizations/organization_member_edit.html +msgid "Save member" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +#, python-format +msgid "" +"\n" +" An overview of \"%(organization_name)s\" its members.\n" +" " +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "Add member(s)" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "Manually" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "Upload a CSV" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "Member overview:" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "E-mail" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "Role" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "Assigned clearance level" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "Super user" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "Active" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "New" +msgstr "" + +#: rocky/templates/organizations/organization_member_upload.html +msgid "Upload a csv file with members for organisation" +msgstr "" + +#: rocky/templates/organizations/organization_member_upload.html +msgid "Download the template" +msgstr "" + +#: rocky/templates/organizations/organization_member_upload.html +msgid "or create a csv file with the following criteria" +msgstr "" + +#: rocky/templates/organizations/organization_member_upload.html +#: rocky/templates/upload_csv.html +msgid "These are the criteria for CSV upload:" +msgstr "" + +#: rocky/templates/organizations/organization_member_upload.html +msgid "Upload" +msgstr "" + +#: rocky/templates/organizations/organization_settings.html +#, python-format +msgid "" +"\n" +" An overview of \"%(organization_name)s\". This shows general " +"information and its settings.\n" +" " +msgstr "" + +#: rocky/templates/organizations/organization_settings.html +msgid "" +"\n" +" Warning:\n" +" Indemnification is not set for this organization.\n" +" " +msgstr "" + +#: rocky/templates/organizations/organization_settings.html +#: rocky/views/indemnification_add.py +msgid "Add indemnification" +msgstr "" + +#: rocky/templates/organizations/organization_settings.html +msgid "Rerun all bits" +msgstr "" + +#: rocky/templates/partials/elements/ooi_detail_settings.html +msgid "Observed at" +msgstr "" + +#: rocky/templates/partials/elements/ooi_detail_settings.html +#: rocky/templates/partials/elements/ooi_report_settings.html +msgid "Show settings" +msgstr "" + +#: rocky/templates/partials/elements/ooi_detail_settings.html +#: rocky/templates/partials/elements/ooi_report_settings.html +msgid "Hide settings" +msgstr "" + +#: rocky/templates/partials/elements/ooi_list_settings_form.html +msgid "Toggle all OOI types" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_condensed_table.html +msgid "Children" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_condensed_table_row.html +#, python-format +msgid "Show details for %(object_id)s, with %(child_count)s children." +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_condensed_table_row.html +#, python-format +msgid "" +"Show tree for %(object_id)s with only children of type %(object_ooi_type)s" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_condensed_table_row.html +#, python-format +msgid "Unfold %(object_id)s with %(child_count)s children" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_table.html +msgid "go to:" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_table.html +msgid "Go to detailpage" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_table.html +msgid "detail" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_table.html +msgid "Go to tree view" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_table.html +msgid "tree" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_table.html +msgid "Go to graph view" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_table.html +msgid "graph" +msgstr "" + +#: rocky/templates/partials/explanations.html +msgid "Clearance level inheritance" +msgstr "" + +#: rocky/templates/partials/explanations.html +msgid "Origin" +msgstr "" + +#: rocky/templates/partials/explanations.html +msgid "Show clearance level inheritance" +msgstr "" + +#: rocky/templates/partials/finding_occurrence_definition_list.html +msgid "Reproduction" +msgstr "" + +#: rocky/templates/partials/form/checkbox_group_table_form.html +msgid "Please enable plugin to start scanning." +msgstr "" + +#: rocky/templates/partials/form/field_input.html +#: rocky/templates/partials/form/field_input_checkbox.html +#: rocky/templates/partials/form/field_input_radio.html +msgid "This field is required" +msgstr "" + +#: rocky/templates/partials/form/field_input.html +msgid "Not set" +msgstr "" + +#: rocky/templates/partials/form/field_input.html +msgid "Forgot email" +msgstr "" + +#: rocky/templates/partials/form/field_input.html +msgid "Forgot password" +msgstr "" + +#: rocky/templates/partials/form/field_input_errors.html +#: rocky/templates/partials/form/form_errors.html +#: rocky/templates/partials/notifications_block.html +msgid "error" +msgstr "" + +#: rocky/templates/partials/form/field_input_errors.html +#: rocky/templates/partials/form/form_errors.html +#: rocky/templates/partials/notifications_block.html +msgid "Error" +msgstr "" + +#: rocky/templates/partials/form/field_input_help_text.html +msgid "Open explanation" +msgstr "" + +#: rocky/templates/partials/form/field_input_help_text.html +msgid "Close explanation" +msgstr "" + +#: rocky/templates/partials/form/field_input_help_text.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/two_factor/core/login.html +msgid "explanation" +msgstr "" + +#: rocky/templates/partials/form/field_input_help_text.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/two_factor/core/login.html +msgid "Explanation" +msgstr "" + +#: rocky/templates/partials/form/indemnification_add_form.html +msgid "Here, an indemnification can be given on behalf of your organization" +msgstr "" + +#: rocky/templates/partials/form/indemnification_add_form.html +msgid "" +"Before you're able to add assets to OpenKAT and to assign clearance levels, " +"you have to give indemnification on the organization and declare that you as " +"a person can be held accountable." +msgstr "" + +#: rocky/templates/partials/form/indemnification_add_form.html +msgid "Register an indemnification" +msgstr "" + +#: rocky/templates/partials/hyperlink_ooi_type.html +#, python-format +msgid "Only show objects of type %(type)s" +msgstr "" + +#: rocky/templates/partials/language-switcher.html +msgid "Select your language" +msgstr "" + +#: rocky/templates/partials/language-switcher.html +#, python-format +msgid "" +"Current language is %(current_language)s. Choose your preferred language." +msgstr "" + +#: rocky/templates/partials/list_filters.html +msgid "Hide filter options" +msgstr "" + +#: rocky/templates/partials/list_filters.html +msgid "Show filter options" +msgstr "" + +#: rocky/templates/partials/list_paginator.html +msgid "List pagination" +msgstr "" + +#: rocky/templates/partials/list_paginator.html +msgid "Previous Page" +msgstr "" + +#: rocky/templates/partials/list_paginator.html +msgid "Previous" +msgstr "" + +#: rocky/templates/partials/list_paginator.html +msgid "Five Pages Back" +msgstr "" + +#: rocky/templates/partials/list_paginator.html +#: rocky/templates/partials/pagination.html +msgid "Page" +msgstr "" + +#: rocky/templates/partials/list_paginator.html +msgid "Five Pages Forward" +msgstr "" + +#: rocky/templates/partials/list_paginator.html +msgid "Next Page" +msgstr "" + +#: rocky/templates/partials/list_paginator.html +msgid "Next" +msgstr "" + +#: rocky/templates/partials/notifications_block.html +msgid "confirmation" +msgstr "" + +#: rocky/templates/partials/notifications_block.html +msgid "Confirmation" +msgstr "" + +#: rocky/templates/partials/ooi_detail_related_object.html +msgid "Related objects" +msgstr "" + +#: rocky/templates/partials/ooi_detail_related_object.html +msgid "No related objects added to " +msgstr "" + +#: rocky/templates/partials/ooi_detail_related_object.html +msgid "Use the button below to add a related object. " +msgstr "" + +#: rocky/templates/partials/ooi_detail_toolbar.html +msgid "Mute Finding" +msgstr "" + +#: rocky/templates/partials/ooi_detail_toolbar.html +#, python-format +msgid "Edit %(display_type)s" +msgstr "" + +#: rocky/templates/partials/ooi_head.html +msgid "An overview of" +msgstr "" + +#: rocky/templates/partials/ooi_head.html +msgid "object type" +msgstr "" + +#: rocky/templates/partials/ooi_head.html +msgid "" +"This shows general information and its related objects. It also gives the " +"possibility to add additional related objects, or to scan for them." +msgstr "" + +#: rocky/templates/partials/ooi_list_toolbar.html +msgid "Scan for objects" +msgstr "" + +#: rocky/templates/partials/ooi_list_toolbar.html +#: rocky/templates/upload_csv.html rocky/views/upload_csv.py +msgid "Upload CSV" +msgstr "" + +#: rocky/templates/partials/ooi_list_toolbar.html +msgid "Export" +msgstr "" + +#: rocky/templates/partials/ooi_list_toolbar.html +msgid "Download as JSON" +msgstr "" + +#: rocky/templates/partials/ooi_list_toolbar.html +msgid "Download as CSV" +msgstr "" + +#: rocky/templates/partials/ooi_report_findings_block.html +#, python-format +msgid "%(total)s findings on %(name)s" +msgstr "" + +#: rocky/templates/partials/ooi_report_findings_block_table.html +#, python-format +msgid "Findings for %(type)s %(name)s on %(observed_at)s:" +msgstr "" + +#: rocky/templates/partials/ooi_report_findings_block_table.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Risk level" +msgstr "" + +#: rocky/templates/partials/ooi_report_findings_block_table.html +msgid "Open finding details" +msgstr "" + +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +#, python-format +msgid "Details of %(object_id)s" +msgstr "" + +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "" +"The severity of this findingtype has not (yet) been determined by the data " +"source. This situation requires manual investigation of the severity." +msgstr "" + +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +#: rocky/templates/partials/ooi_report_severity_totals_table.html +msgid "Total occurrences" +msgstr "" + +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Occurrence" +msgstr "" + +#: rocky/templates/partials/ooi_report_severity_totals_table.html +msgid "Unique" +msgstr "" + +#: rocky/templates/partials/ooi_tree_toolbar_bottom.html +msgid "Tree - dense view" +msgstr "" + +#: rocky/templates/partials/ooi_tree_toolbar_bottom.html +msgid "Tree - table view" +msgstr "" + +#: rocky/templates/partials/organization_member_list_filters.html +msgid "Shown status types" +msgstr "" + +#: rocky/templates/partials/organization_member_list_filters.html +msgid "Blocked status" +msgstr "" + +#: rocky/templates/partials/organization_member_list_filters.html +msgid "Update List" +msgstr "" + +#: rocky/templates/partials/organization_properties_table.html +msgid "Organization name" +msgstr "" + +#: rocky/templates/partials/organization_properties_table.html +msgid "Organization code" +msgstr "" + +#: rocky/templates/partials/organizations_menu_dropdown.html +msgid "Select organization" +msgstr "" + +#: rocky/templates/partials/organizations_menu_dropdown.html +msgid "All organizations" +msgstr "" + +#: rocky/templates/partials/page-meta.html +msgid "Logged in as" +msgstr "" + +#: rocky/templates/partials/pagination.html +msgid "first" +msgstr "" + +#: rocky/templates/partials/pagination.html +msgid "previous" +msgstr "" + +#: rocky/templates/partials/pagination.html +msgid "next" +msgstr "" + +#: rocky/templates/partials/pagination.html +msgid "last" +msgstr "" + +#: rocky/templates/partials/secondary-menu.html +msgid "User navigation" +msgstr "" + +#: rocky/templates/partials/secondary-menu.html +msgid "Close user navigation" +msgstr "" + +#: rocky/templates/partials/secondary-menu.html +msgid "My organizations" +msgstr "" + +#: rocky/templates/partials/secondary-menu.html +msgid "Profile" +msgstr "" + +#: rocky/templates/partials/skip-to-content.html +msgid "Go to content" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "Hide filters" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "Show filters" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "From" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "To" +msgstr "" + +#: rocky/templates/partials/task_history.html +msgid "Select status" +msgstr "" + +#: rocky/templates/partials/task_history.html +msgid "Success" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "Failure" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "Search" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "Search by object name" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "No tasks found for this object." +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Created date" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Yielded objects" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/boefje_task_detail.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Download meta and raw data" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Reschedule" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Download task data" +msgstr "" + +#: rocky/templates/scan.html +msgid "Boefjes overview:" +msgstr "" + +#: rocky/templates/scan_profiles/scan_profile_detail.html +#, python-format +msgid "" +"\n" +" This means that this object will be scanned by Boefjes with " +"scan level\n" +" %(scan_level)s and lower. Setting the clearance level from " +"“declared”\n" +" to “inherit” means that this object will inherit its level " +"from neighbouring\n" +" objects. This means that the clearance level might stay the " +"same, increase,\n" +" or decrease depending on other declared clearance levels. " +"Clearance levels\n" +" of objects that inherit from this clearance level will also be " +"recalculated.\n" +" " +msgstr "" + +#: rocky/templates/scan_profiles/scan_profile_detail.html +msgid "Set clearance level to inherit" +msgstr "" + +#: rocky/templates/scan_profiles/scan_profile_detail.html +msgid "" +"\n" +" This object has a clearance level of \"L0\". This means that " +"this object will not be scanned by any Boefje until that\n" +" Boefje is run manually for this object again. Objects with a " +"clearance level higher than \"L0\" will be scanned automatically by Boefjes " +"with\n" +" corresponding scan levels.\n" +" " +msgstr "" + +#: rocky/templates/scan_profiles/scan_profile_reset.html +msgid "Set clearance level for:" +msgstr "" + +#: rocky/templates/scan_profiles/scan_profile_reset.html +msgid "Setting the scan level from \\" +msgstr "" + +#: rocky/templates/scan_profiles/scan_profile_reset.html +msgid "You are about to set the clearance level from \\" +msgstr "" + +#: rocky/templates/scan_profiles/scan_profile_reset.html +msgid "Yes, set to inherit" +msgstr "" + +#: rocky/templates/tasks/boefje_task_detail.html +msgid "" +"An overview of the boefje task, the input OOI and the RAW data it generated." +msgstr "" + +#: rocky/templates/tasks/boefje_task_detail.html +msgid "Download meta data" +msgstr "" + +#: rocky/templates/tasks/boefje_task_detail.html +msgid "Input object" +msgstr "" + +#: rocky/templates/tasks/boefjes.html +msgid "There are no tasks for boefjes" +msgstr "" + +#: rocky/templates/tasks/boefjes.html +msgid "List of tasks for boefjes" +msgstr "" + +#: rocky/templates/tasks/normalizers.html +msgid "There are no tasks for normalizers" +msgstr "" + +#: rocky/templates/tasks/normalizers.html +msgid "List of tasks for normalizers" +msgstr "" + +#: rocky/templates/tasks/partials/boefje_task_history.html +msgid "No scans found for this object." +msgstr "" + +#: rocky/templates/tasks/partials/boefje_task_history.html +msgid "Input Object" +msgstr "" + +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Normalizer" +msgstr "" + +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Boefje input OOI" +msgstr "" + +#: rocky/templates/tasks/partials/tab_navigation.html +msgid "List of tasks" +msgstr "" + +#: rocky/templates/tasks/partials/task_filter.html +msgid "all" +msgstr "" + +#: rocky/templates/tasks/partials/task_filter.html +msgid "Pending" +msgstr "" + +#: rocky/templates/tasks/partials/task_filter.html +msgid "Queued" +msgstr "" + +#: rocky/templates/tasks/partials/task_filter.html +msgid "Dispatched" +msgstr "" + +#: rocky/templates/tasks/partials/task_filter.html +msgid "Completed" +msgstr "" + +#: rocky/templates/two_factor/_wizard_actions.html +msgid "Log in" +msgstr "" + +#: rocky/templates/two_factor/_wizard_actions.html +msgid "Authenticate" +msgstr "" + +#: rocky/templates/two_factor/core/backup_tokens.html +#: rocky/templates/two_factor/profile/profile.html +msgid "Backup Tokens" +msgstr "" + +#: rocky/templates/two_factor/core/backup_tokens.html +msgid "" +"Backup tokens can be used when your primary and backup phone numbers aren't " +"available. The backup tokens below can be used for login verification. If " +"you've used up all your backup tokens, you can generate a new set of backup " +"tokens. Only the backup tokens shown below will be valid." +msgstr "" + +#: rocky/templates/two_factor/core/backup_tokens.html +msgid "Print these tokens and keep them somewhere safe." +msgstr "" + +#: rocky/templates/two_factor/core/backup_tokens.html +msgid "You don't have any backup codes yet." +msgstr "" + +#: rocky/templates/two_factor/core/backup_tokens.html +#: rocky/templates/two_factor/core/setup_complete.html +msgid "Back to Account Security" +msgstr "" + +#: rocky/templates/two_factor/core/backup_tokens.html +msgid "Generate Tokens" +msgstr "" + +#: rocky/templates/two_factor/core/login.html +msgid "You are logged in." +msgstr "" + +#: rocky/templates/two_factor/core/login.html +msgid "Two factor authentication is enabled for your account." +msgstr "" + +#: rocky/templates/two_factor/core/login.html +msgid "" +"Two factor authentication is not enabled for your account. Enable it to " +"continue." +msgstr "" + +#: rocky/templates/two_factor/core/login.html +msgid "Setup two factor authentication" +msgstr "" + +#: rocky/templates/two_factor/core/login.html +msgid "Credentials" +msgstr "" + +#: rocky/templates/two_factor/core/login.html +msgid "" +"Use this form for entering backup tokens for logging in. These tokens have " +"been generated for you to print and keep safe. Please enter one of these " +"backup tokens to login to your account." +msgstr "" + +#: rocky/templates/two_factor/core/login.html +msgid "As a last resort, you can use a backup token:" +msgstr "" + +#: rocky/templates/two_factor/core/login.html +msgid "Use Backup Token" +msgstr "" + +#: rocky/templates/two_factor/core/otp_required.html +msgid "Permission Denied" +msgstr "" + +#: rocky/templates/two_factor/core/otp_required.html +msgid "" +"The page you requested, enforces users to verify using two-factor " +"authentication for security reasons. You need to enable these security " +"features in order to access this page." +msgstr "" + +#: rocky/templates/two_factor/core/otp_required.html +#: rocky/templates/two_factor/profile/profile.html +msgid "" +"Two-factor authentication is not enabled for your account. Enable two-factor " +"authentication for enhanced account security." +msgstr "" + +#: rocky/templates/two_factor/core/otp_required.html +#: rocky/templates/two_factor/core/setup.html +#: rocky/templates/two_factor/core/setup_complete.html +#: rocky/templates/two_factor/profile/profile.html +msgid "Enable Two-Factor Authentication" +msgstr "" + +#: rocky/templates/two_factor/core/phone_register.html +msgid "Add Backup Phone" +msgstr "" + +#: rocky/templates/two_factor/core/phone_register.html +msgid "" +"You'll be adding a backup phone number to your account. This number will be " +"used if your primary method of registration is not available." +msgstr "" + +#: rocky/templates/two_factor/core/phone_register.html +msgid "" +"We've sent a token to your phone number. Please enter the token you've " +"received." +msgstr "" + +#: rocky/templates/two_factor/core/setup.html +msgid "" +"To start using a token generator, please use your smartphone to scan the QR " +"code below or use the setup key. For example, use GoogleAuthenticator. Then, " +"enter the token generated by the app." +msgstr "" + +#: rocky/templates/two_factor/core/setup.html +msgid "QR code" +msgstr "" + +#: rocky/templates/two_factor/core/setup.html +msgid "Setup key" +msgstr "" + +#: rocky/templates/two_factor/core/setup.html +msgid "" +"The secret key is a 32 characters representation of the QR code. There are 2 " +"options to setup the two factor authtentication. You can scan the QR code " +"above or you can insert this key using the secret key option of the " +"authenticator app." +msgstr "" + +#: rocky/templates/two_factor/core/setup_complete.html +msgid "Congratulations, you've successfully enabled two-factor authentication." +msgstr "" + +#: rocky/templates/two_factor/core/setup_complete.html +msgid "Start using OpenKAT" +msgstr "" + +#: rocky/templates/two_factor/core/setup_complete.html +msgid "" +"However, it might happen that you don't have access to your primary token " +"device. To enable account recovery, add a phone number." +msgstr "" + +#: rocky/templates/two_factor/core/setup_complete.html +#: rocky/templates/two_factor/profile/profile.html +msgid "Add Phone Number" +msgstr "" + +#: rocky/templates/two_factor/profile/disable.html +msgid "Disable Two-factor Authentication" +msgstr "" + +#: rocky/templates/two_factor/profile/disable.html +msgid "" +"You are about to disable two-factor authentication. This weakens your " +"account security, are you sure?" +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "Account Security" +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "Tokens will be generated by your token generator." +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +#, python-format +msgid "Primary method: %(primary)s" +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "Tokens will be generated by your YubiKey." +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "Backup Phone Numbers" +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "" +"If your primary method is not available, we are able to send backup tokens " +"to the phone numbers listed below." +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "Unregister" +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "" +"If you don't have any device with you, you can access your account using " +"backup tokens." +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +#, python-format +msgid "You have only one backup token remaining." +msgid_plural "You have %(counter)s backup tokens remaining." +msgstr[0] "" +msgstr[1] "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "Show Codes" +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "Disable Two-Factor Authentication" +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "" +"However we strongly discourage you to do so, you can also disable two-factor " +"authentication for your account." +msgstr "" + +#: rocky/templates/two_factor/twilio/sms_message.html +#, python-format +msgid "Your OTP token is %(token)s" +msgstr "" + +#: rocky/templates/upload_csv.html +msgid "Automate the creation of multiple objects by uploading a CSV file." +msgstr "" + +#: rocky/templates/upload_raw.html +msgid "Automate the creation of multiple objects by uploading a raw file." +msgstr "" + +#: rocky/templates/upload_raw.html rocky/views/upload_raw.py +msgid "Upload raw" +msgstr "" + +#: rocky/views/bytes_raw.py +msgid "Getting raw data failed." +msgstr "" + +#: rocky/views/finding_add.py +msgid "Add Finding" +msgstr "" + +#: rocky/views/health.py +msgid "Could not connect to Bytes. Service is possibly down" +msgstr "" + +#: rocky/views/health.py +msgid "Could not connect to Octopoes. Service is possibly down" +msgstr "" + +#: rocky/views/health.py +msgid "Could not connect to Scheduler. Service is possibly down" +msgstr "" + +#: rocky/views/health.py +msgid "Rocky will not function properly. Not all services are healthy." +msgstr "" + +#: rocky/views/health.py +msgid "Beautified" +msgstr "" + +#: rocky/views/indemnification_add.py +msgid "Indemnification successfully set." +msgstr "" + +#: rocky/views/mixins.py +msgid "Can not parse date, falling back to show current date." +msgstr "" + +#: rocky/views/ooi_add.py +msgid "Type select" +msgstr "" + +#: rocky/views/ooi_add.py +#, python-format +msgid "Add %(ooi_type)s" +msgstr "" + +#: rocky/views/ooi_detail.py +msgid "Only Question OOIs can be answered." +msgstr "" + +#: rocky/views/ooi_detail_related_object.py +msgid " (as " +msgstr "" + +#: rocky/views/ooi_findings.py +msgid "Object findings" +msgstr "" + +#: rocky/views/ooi_list.py +msgid "No OOIs selected." +msgstr "" + +#: rocky/views/ooi_list.py +msgid "Unknown action." +msgstr "" + +#: rocky/views/ooi_list.py +#, python-format +msgid "" +"Could not raise clearance levels to L%s. Indemnification not present at " +"organization %s." +msgstr "" + +#: rocky/views/ooi_list.py +#, python-format +msgid "" +"Could not raise clearance level to L%s. You were trusted a clearance level " +"of L%s. Contact your administrator to receive a higher clearance." +msgstr "" + +#: rocky/views/ooi_list.py +#, python-format +msgid "" +"Could not raise clearance level to L%s. You acknowledged a clearance level " +"of L%s. Please accept the clearance level below to proceed." +msgstr "" + +#: rocky/views/ooi_list.py +msgid "An error occurred while saving clearance levels." +msgstr "" + +#: rocky/views/ooi_list.py +msgid "One of the OOI's doesn't exist" +msgstr "" + +#: rocky/views/ooi_list.py +#, python-format +msgid "Successfully set scan profile to %s for %d oois." +msgstr "" + +#: rocky/views/ooi_list.py +msgid "An error occurred while setting clearance levels to inherit." +msgstr "" + +#: rocky/views/ooi_list.py +msgid "" +"An error occurred while setting clearance levels to inherit: one of the OOIs " +"doesn't exist." +msgstr "" + +#: rocky/views/ooi_list.py +#, python-format +msgid "Successfully set %d ooi(s) clearance level to inherit." +msgstr "" + +#: rocky/views/ooi_list.py +msgid "An error occurred while deleting oois." +msgstr "" + +#: rocky/views/ooi_list.py +msgid "An error occurred while deleting oois: one of the OOIs doesn't exist." +msgstr "" + +#: rocky/views/ooi_list.py +#, python-format +msgid "" +"Successfully deleted %d ooi(s). Note: Bits can recreate objects " +"automatically." +msgstr "" + +#: rocky/views/ooi_mute.py +msgid "Please select at least one finding." +msgstr "" + +#: rocky/views/ooi_mute.py +msgid "Finding(s) successfully unmuted." +msgstr "" + +#: rocky/views/ooi_mute.py +msgid "Finding(s) successfully muted." +msgstr "" + +#: rocky/views/ooi_report.py +msgid "You can't generate a report for an OOI on a date in the future." +msgstr "" + +#: rocky/views/ooi_report.py +msgid "Findings report" +msgstr "" + +#: rocky/views/ooi_report.py +msgid "Generating report failed. See Keiko logs for more information." +msgstr "" + +#: rocky/views/ooi_report.py +msgid "Timeout reached generating report. See Keiko logs for more information." +msgstr "" + +#: rocky/views/ooi_tree.py +msgid "Tree Visualisation" +msgstr "" + +#: rocky/views/ooi_tree.py +msgid "Graph Visualisation" +msgstr "" + +#: rocky/views/ooi_view.py +msgid "OOI types: " +msgstr "" + +#: rocky/views/ooi_view.py +msgid "Clearance level: " +msgstr "" + +#: rocky/views/ooi_view.py +msgid "Clearance type: " +msgstr "" + +#: rocky/views/organization_add.py +msgid "Organization added successfully." +msgstr "" + +#: rocky/views/organization_add.py +msgid "You are not allowed to add organizations." +msgstr "" + +#: rocky/views/organization_edit.py +#, python-format +msgid "Organization %s successfully updated." +msgstr "" + +#: rocky/views/organization_member_add.py rocky/views/upload_csv.py +msgid "Add column titles. Followed by each object on a new line." +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "The columns are: " +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "Clearance levels should be between -1 and 4." +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "Account type can be one of: " +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "Add Account Type" +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "Member added successfully." +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "Add Member" +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "The csv file is missing required columns" +msgstr "" + +#: rocky/views/organization_member_add.py +#, python-brace-format +msgid "Invalid account type: '{account_type}'" +msgstr "" + +#: rocky/views/organization_member_add.py +#, python-brace-format +msgid "Invalid data for: '{email}'" +msgstr "" + +#: rocky/views/organization_member_add.py +#, python-brace-format +msgid "Invalid email address: '{email}'" +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "Successfully processed users from csv." +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "Error parsing the csv file. Please verify its contents." +msgstr "" + +#: rocky/views/organization_member_edit.py +#, python-format +msgid "Member %s successfully updated." +msgstr "" + +#: rocky/views/organization_member_edit.py +#, python-format +msgid "" +"The updated trusted clearance level of L%s is lower then the member's " +"acknowledged clearance level of L%s. This member only has clearance for " +"level L%s. For this reason the acknowledged clearance level has been set at " +"the same level as trusted clearance level." +msgstr "" + +#: rocky/views/organization_member_edit.py +msgid "" +"You have trusted this member with a higher trusted level than member " +"acknowledged. Member must first accept this level to use it." +msgstr "" + +#: rocky/views/organization_member_list.py +msgid "Not blocked" +msgstr "" + +#: rocky/views/organization_member_list.py +#, python-format +msgid "Blocked member %s successfully." +msgstr "" + +#: rocky/views/organization_member_list.py +#, python-format +msgid "Unblocked member %s successfully." +msgstr "" + +#: rocky/views/organization_settings.py +#, python-brace-format +msgid "Recalculated {number_of_bits} bits. Duration: {duration}" +msgstr "" + +#: rocky/views/scan_profile.py +#, python-format +msgid "" +"Could not raise clearance level of %s to L%s. " +"Indemnification not present at organization %s." +msgstr "" + +#: rocky/views/scan_profile.py +#, python-format +msgid "" +"Could not raise clearance level of %s to L%s. You acknowledged a clearance " +"level of L%s. Please accept the clearance level below to proceed." +msgstr "" + +#: rocky/views/scan_profile.py +msgid "Choose a valid level" +msgstr "" + +#: rocky/views/scan_profile.py +#, python-brace-format +msgid "Can not reset scan level. Scan level of {ooi_name} not declared" +msgstr "" + +#: rocky/views/scan_profile.py +msgid "Reset" +msgstr "" + +#: rocky/views/tasks.py +msgid "Task details not found." +msgstr "" + +#: rocky/views/tasks.py +msgid "Fetching tasks failed: no connection with scheduler" +msgstr "" + +#: rocky/views/upload_csv.py +msgid "" +"For URL object type, a column 'raw' with URL values is required, starting " +"with http:// or https://, optionally a second column 'network' is supported " +msgstr "" + +#: rocky/views/upload_csv.py +msgid "" +"For Hostname object type, a column with 'name' values is required, " +"optionally a second column 'network' is supported " +msgstr "" + +#: rocky/views/upload_csv.py +msgid "" +"For IPAddressV4 and IPAddressV6 object types, a column of 'address' is " +"required, optionally a second column 'network' is supported " +msgstr "" + +#: rocky/views/upload_csv.py +msgid "Object(s) could not be created for row number(s): " +msgstr "" + +#: rocky/views/upload_csv.py +msgid "Object(s) successfully added." +msgstr "" + +#: rocky/views/upload_raw.py +#, python-format +msgid "Raw file could not be uploaded to Bytes: status code %s" +msgstr "" + +#: rocky/views/upload_raw.py +msgid "Raw file successfully added." +msgstr "" diff --git a/rocky/rocky/locale/fy/LC_MESSAGES/django.po b/rocky/rocky/locale/fy/LC_MESSAGES/django.po new file mode 100644 index 00000000000..e0b4376e59d --- /dev/null +++ b/rocky/rocky/locale/fy/LC_MESSAGES/django.po @@ -0,0 +1,5690 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# jan klopper , 2023. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-11-09 14:01+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: fy\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: account/admin.py +msgid "Permissions" +msgstr "" + +#: account/admin.py +msgid "Important dates" +msgstr "" + +#: account/forms/account_setup.py katalogus/templates/katalogus_settings.html +#: katalogus/templates/plugin_settings_list.html +#: reports/report_types/tls_report/report.html +#: rocky/templates/organizations/organization_list.html +#: rocky/templates/organizations/organization_settings.html +#: rocky/templates/partials/ooi_detail_related_object.html +msgid "Name" +msgstr "" + +#: account/forms/account_setup.py +msgid "This name we will use to communicate with you." +msgstr "" + +#: account/forms/account_setup.py +msgid "What do we call you?" +msgstr "" + +#: account/forms/account_setup.py +msgid "Email" +msgstr "" + +#: account/forms/account_setup.py +msgid "Enter your email address." +msgstr "" + +#: account/forms/account_setup.py +msgid "Password" +msgstr "" + +#: account/forms/account_setup.py +msgid "Choose your super secret password" +msgstr "" + +#: account/forms/account_setup.py +msgid "Choose another email." +msgstr "" + +#: account/forms/account_setup.py tools/forms/settings.py +msgid "--- Please select one of the available options ----" +msgstr "" + +#: account/forms/account_setup.py +msgid "Account Type" +msgstr "" + +#: account/forms/account_setup.py +msgid "Every member of OpenKAT must be part of an account type." +msgstr "" + +#: account/forms/account_setup.py +msgid "Please select an account type to proceed." +msgstr "" + +#: account/forms/account_setup.py +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +msgid "Trusted clearance level" +msgstr "" + +#: account/forms/account_setup.py +msgid "Select a clearance level you trust this member with." +msgstr "" + +#: account/forms/account_setup.py onboarding/forms.py tools/forms/ooi.py +msgid "Please select a clearance level to proceed." +msgstr "" + +#: account/forms/account_setup.py +msgid "The name of the organization." +msgstr "" + +#: account/forms/account_setup.py +msgid "explanation-organization-name" +msgstr "" + +#: account/forms/account_setup.py +#, python-brace-format +msgid "A unique code of {code_length} characters." +msgstr "" + +#: account/forms/account_setup.py +msgid "explanation-organization-code" +msgstr "" + +#: account/forms/account_setup.py +msgid "Organization name is required to proceed." +msgstr "" + +#: account/forms/account_setup.py +msgid "Choose another organization." +msgstr "" + +#: account/forms/account_setup.py +msgid "Organization code is required to proceed." +msgstr "" + +#: account/forms/account_setup.py +msgid "Choose another code for your organization." +msgstr "" + +#: account/forms/account_setup.py +msgid "" +"I declare that OpenKAT may scan the assets of my organization and that I " +"have permission to scan these assets. I am aware of the implications a scan " +"with a higher scan level brings on my systems." +msgstr "" + +#: account/forms/account_setup.py +msgid "" +"I declare that I am authorized to give this indemnification within my " +"organization. I have the experience and knowledge to know what the " +"consequences might be and can be held responsible for them." +msgstr "" + +#: account/forms/account_setup.py +msgid "Trusted to change Clearance Levels." +msgstr "" + +#: account/forms/account_setup.py +msgid "Acknowledged to change Clearance Levels." +msgstr "" + +#: account/forms/account_setup.py +#: rocky/templates/organizations/organization_member_list.html +#: rocky/views/organization_member_list.py +msgid "Blocked" +msgstr "" + +#: account/forms/account_setup.py +msgid "" +"Set the members status to blocked, so they don't have access to the " +"organization anymore." +msgstr "" + +#: account/forms/account_setup.py +#: rocky/templates/organizations/organization_member_list.html +msgid "Accepted clearance level" +msgstr "" + +#: account/forms/account_setup.py +msgid "Enter tags separated by comma." +msgstr "" + +#: account/forms/account_setup.py +msgid "The two password fields didn’t match." +msgstr "" + +#: account/forms/account_setup.py +msgid "New password" +msgstr "" + +#: account/forms/account_setup.py +msgid "Enter your new password" +msgstr "" + +#: account/forms/account_setup.py +msgid "New password confirmation" +msgstr "" + +#: account/forms/account_setup.py +msgid "Repeat your new password" +msgstr "" + +#: account/forms/account_setup.py +msgid "Confirm your new password" +msgstr "" + +#: account/forms/login.py +msgid "Please enter a correct email address and password." +msgstr "" + +#: account/forms/login.py +msgid "This account is inactive." +msgstr "" + +#: account/forms/login.py +msgid "Insert the email you registered with or got at OpenKAT installation." +msgstr "" + +#: account/forms/organization.py +msgid "Organization is required." +msgstr "" + +#: account/forms/organization.py tools/view_helpers.py +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/organizations/organization_list.html +#: rocky/views/organization_add.py +msgid "Organizations" +msgstr "" + +#: account/forms/organization.py +msgid "The organization from which to clone settings." +msgstr "" + +#: account/forms/password_reset.py +msgid "Email address" +msgstr "" + +#: account/forms/password_reset.py +msgid "A reset link will be sent to this email" +msgstr "" + +#: account/forms/password_reset.py +msgid "The email address connected to your OpenKAT-account" +msgstr "" + +#: account/forms/token.py +msgid "" +"Insert the token generated by the authenticator app to setup the two factor " +"authentication." +msgstr "" + +#: account/forms/token.py +msgid "Insert the token generated by your token authenticator app." +msgstr "" + +#: account/forms/token.py +msgid "Backup token" +msgstr "" + +#: account/models.py +msgid "The Email must be set" +msgstr "" + +#: account/models.py +msgid "Superuser must have is_staff=True." +msgstr "" + +#: account/models.py +msgid "Superuser must have is_superuser=True." +msgstr "" + +#: account/models.py +msgid "full name" +msgstr "" + +#: account/models.py +msgid "email" +msgstr "" + +#: account/models.py +msgid "staff status" +msgstr "" + +#: account/models.py +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: account/models.py tools/models.py +msgid "active" +msgstr "" + +#: account/models.py +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: account/models.py +msgid "date joined" +msgstr "" + +#: account/templates/account_detail.html account/views/account.py +msgid "Account details" +msgstr "" + +#: account/templates/account_detail.html account/templates/password_reset.html +#: account/views/password_reset.py +msgid "Reset password" +msgstr "" + +#: account/templates/account_detail.html +msgid "Full name" +msgstr "" + +#: account/templates/account_detail.html +msgid "E-mail address" +msgstr "" + +#: account/templates/account_detail.html +msgid "Member type" +msgstr "" + +#: account/templates/account_detail.html +#: onboarding/templates/account/step_2a_organization_setup.html +#: onboarding/templates/account/step_2a_organization_update.html +#: rocky/templates/crisis_room/crisis_room_findings_block.html +#: rocky/templates/organizations/organization_member_list.html +#: rocky/templates/organizations/organization_settings.html +msgid "Organization" +msgstr "" + +#: account/templates/account_detail.html +msgid "Permission to set OOI clearance levels " +msgstr "" + +#: account/templates/account_detail.html +msgid "OOI clearance" +msgstr "" + +#: account/templates/account_detail.html +msgid "" +"\n" +" You don't have any clearance to scan objects." +"
    \n" +" Get in contact with the admin to give you the " +"necessary clearance level.\n" +" " +msgstr "" + +#: account/templates/account_detail.html +msgid "You have currently accepted clearance up to level " +msgstr "" + +#: account/templates/account_detail.html +msgid "Explanation OOI Clearance" +msgstr "" + +#: account/templates/account_detail.html +msgid "" +"You can withdraw this at anytime you like, but know that you won't be able " +"to change clearance levels anymore when you do." +msgstr "" + +#: account/templates/account_detail.html +#, python-format +msgid "" +"\n" +" \"Withdraw acceptance of level L%(acl)s " +"clearance and responsibility\"\n" +" " +msgstr "" + +#: account/templates/account_detail.html +msgid "Explanation OOI clearance" +msgstr "" + +#: account/templates/account_detail.html +#, python-format +msgid "" +"You are granted clearance for level L%(tcl)s by your admin. Before you can " +"change OOI clearance levels up to this level, you need to accept this " +"permission. Remember: with great power comes great responsibility." +msgstr "" + +#: account/templates/account_detail.html +#, python-format +msgid "" +"\n" +" \"Accept level L%(tcl)s clearance and " +"responsibility\"\n" +" " +msgstr "" + +#: account/templates/password_reset.html +msgid "Use the form below to reset your password." +msgstr "" + +#: account/templates/password_reset.html +#: account/templates/password_reset_confirm.html +msgid "Back" +msgstr "" + +#: account/templates/password_reset.html +#: account/templates/password_reset_confirm.html +msgid "Send" +msgstr "" + +#: account/templates/password_reset_confirm.html +msgid "Confirm reset password" +msgstr "" + +#: account/templates/password_reset_confirm.html +msgid "Use the form below to confirm resetting your password" +msgstr "" + +#: account/templates/password_reset_confirm.html +msgid "Confirm password" +msgstr "" + +#: account/templates/password_reset_confirm.html +msgid "The link is invalid" +msgstr "" + +#: account/templates/password_reset_confirm.html +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" + +#: account/templates/password_reset_email.html +#, python-format +msgid "" +"You're receiving this email because you requested a password reset for your " +"user account at %(site_name)s." +msgstr "" + +#: account/templates/password_reset_email.html +#: account/templates/registration_email.html +msgid "Please go to the following page and choose a new password:" +msgstr "" + +#: account/templates/password_reset_email.html +#: account/templates/registration_email.html +msgid "Sincerely," +msgstr "" + +#: account/templates/password_reset_email.html +#: account/templates/registration_email.html +msgid "The OpenKAT team" +msgstr "" + +#: account/templates/password_reset_subject.txt +#, python-format +msgid "Password reset on %(site_name)s" +msgstr "" + +#: account/templates/recover_email.html account/views/recover_email.py +msgid "Recover email address" +msgstr "" + +#: account/templates/recover_email.html +msgid "Information on how to recover your connected email address" +msgstr "" + +#: account/templates/recover_email.html +msgid "Forgotten email address?" +msgstr "" + +#: account/templates/recover_email.html +msgid "" +"If you don’t remember the email address connected to your account, contact: " +msgstr "" + +#: account/templates/recover_email.html +msgid "Please contact the system administrator." +msgstr "" + +#: account/templates/recover_email.html +msgid "Back to Home" +msgstr "" + +#: account/templates/recover_email.html +msgid "Back to login" +msgstr "" + +#: account/templates/registration_email.html +#, python-format +msgid "" +"Welcome to OpenKAT. You're receiving this email because you have been added " +"to organization \"%(organization)s\" at %(site_name)s." +msgstr "" + +#: account/templates/registration_subject.txt +#, python-format +msgid "Verify OpenKAT account on %(site_name)s" +msgstr "" + +#: account/validators.py +msgid "Your password must contain at least the following:" +msgstr "" + +#: account/validators.py +msgid " characters" +msgstr "" + +#: account/validators.py +msgid " digits" +msgstr "" + +#: account/validators.py +msgid " letters" +msgstr "" + +#: account/validators.py +msgid " special characters such as: " +msgstr "" + +#: account/validators.py +msgid " lower case letters" +msgstr "" + +#: account/validators.py +msgid " upper case letters" +msgstr "" + +#: account/views/login.py +msgid "Your session has timed out. Please login again." +msgstr "" + +#: account/views/login.py reports/templates/partials/report_header.html +#: rocky/templates/header.html +msgid "OpenKAT" +msgstr "" + +#: account/views/login.py account/views/password_reset.py +#: account/views/recover_email.py rocky/templates/partials/secondary-menu.html +#: rocky/templates/two_factor/core/login.html +msgid "Login" +msgstr "" + +#: account/views/login.py +msgid "Two factor authentication" +msgstr "" + +#: account/views/password_reset.py +msgid "We couldn't send a password reset link. Contact " +msgstr "" + +#: account/views/password_reset.py +msgid "" +"We couldn't send a password reset link. Contact your system administrator." +msgstr "" + +#: crisis_room/views.py +msgid "" +"Failed to get list of findings for organization {}, check server logs for " +"more details." +msgstr "" + +#: fmea/forms.py +#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html +#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html +#: fmea/templates/fmea/fmea_failure_mode_detail.html +msgid "Failure mode" +msgstr "" + +#: fmea/forms.py fmea/templates/fmea/fmea_failure_mode_detail.html +#: katalogus/templates/boefje_detail.html +#: katalogus/templates/normalizer_detail.html +#: reports/templates/summary/report_summary.html tools/forms/finding_type.py +#: rocky/templates/oois/ooi_detail.html +#: rocky/templates/oois/ooi_detail_findings_list.html rocky/templates/scan.html +msgid "Description" +msgstr "" + +#: fmea/forms.py +msgid "Frequency Level" +msgstr "" + +#: fmea/forms.py +msgid "Detectability Level" +msgstr "" + +#: fmea/forms.py +msgid "Effect(s)" +msgstr "" + +#: fmea/forms.py +msgid "Describe in one sentence what type of failure mode you are creating." +msgstr "" + +#: fmea/forms.py +msgid "Describe the failure mode in details." +msgstr "" + +#: fmea/forms.py +msgid "" +"From 1 to 5, how often does this failure mode occurs. 1: Almost unthinkable " +"and 5: occurs daily." +msgstr "" + +#: fmea/forms.py +msgid "" +"Is this failure mode easy detectable? Give it a score from 1 to 5. 1: always " +"detectable and 5: almost undetectable." +msgstr "" + +#: fmea/forms.py +msgid "Describe the type of failure mode" +msgstr "" + +#: fmea/forms.py +msgid "explanation-failure-mode" +msgstr "" + +#: fmea/forms.py +msgid "Describe in more detail what the failure mode is about." +msgstr "" + +#: fmea/forms.py +msgid "explanation-description" +msgstr "" + +#: fmea/forms.py +msgid "explanation-frequency-level" +msgstr "" + +#: fmea/forms.py +msgid "explanation-detectability_level" +msgstr "" + +#: fmea/forms.py +msgid "You must at least set a failure mode." +msgstr "" + +#: fmea/forms.py +msgid "Choose a frequency level." +msgstr "" + +#: fmea/forms.py +msgid "Choose a detectability level." +msgstr "" + +#: fmea/forms.py +msgid "Choose at least one effect." +msgstr "" + +#: fmea/forms.py +#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html +#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html +msgid "Affected Department" +msgstr "" + +#: fmea/forms.py +msgid "Affected Objects" +msgstr "" + +#: fmea/forms.py +msgid "Choose a failure mode which applies to " +msgstr "" + +#: fmea/forms.py +msgid "When this failure mode occurs, which department is affected?" +msgstr "" + +#: fmea/forms.py +msgid "Which objects does this failure mode affect when it occurs?" +msgstr "" + +#: fmea/forms.py +msgid "explanation-affected-ooi-type" +msgstr "" + +#: fmea/forms.py fmea/templates/fmea/fmea_failure_mode_effect_detail.html +msgid "Effect" +msgstr "" + +#: fmea/forms.py +msgid "Severity Level" +msgstr "" + +#: fmea/forms.py +msgid "Name a possible effect of any type of failure mode that can occur." +msgstr "" + +#: fmea/forms.py +msgid "" +"Describe the severity of this effect ex. 1: not severe and 5: catastrophic" +msgstr "" + +#: fmea/forms.py +msgid "Describe a possible effect for FMEA" +msgstr "" + +#: fmea/forms.py +msgid "explanation-effect" +msgstr "" + +#: fmea/forms.py +msgid "explanation-severity-level" +msgstr "" + +#: fmea/forms.py +msgid "The effect is required." +msgstr "" + +#: fmea/forms.py +msgid "This effect already exists." +msgstr "" + +#: fmea/forms.py +msgid "Choose a severity level." +msgstr "" + +#: fmea/models.py +msgid "Finances" +msgstr "" + +#: fmea/models.py +msgid "Marketing" +msgstr "" + +#: fmea/models.py +msgid "Human Resources" +msgstr "" + +#: fmea/models.py +msgid "Research & Development" +msgstr "" + +#: fmea/models.py +msgid "Administration" +msgstr "" + +#: fmea/models.py reports/templates/summary/service_health.html +#: rocky/templates/footer.html rocky/templates/health.html +msgid "Service" +msgstr "" + +#: fmea/models.py +msgid "Level 1: Not Severe" +msgstr "" + +#: fmea/models.py +msgid "Level 2: Harmful" +msgstr "" + +#: fmea/models.py +msgid "Level 3: Severe" +msgstr "" + +#: fmea/models.py +msgid "Level 4: Very Harmful" +msgstr "" + +#: fmea/models.py +msgid "Level 5: Catastrophic" +msgstr "" + +#: fmea/models.py +msgid "Level 1: Very Rare. Incident (almost) never occurs, almost unthinkable." +msgstr "" + +#: fmea/models.py +msgid "Level 2: Rare. Incidents occur less than once a year (3-5)." +msgstr "" + +#: fmea/models.py +msgid "Level 3: Occurs. Incidents occur several times a year." +msgstr "" + +#: fmea/models.py +msgid "Level 4: Regularly. Incidents occur weekly." +msgstr "" + +#: fmea/models.py +msgid "Level 5: Frequent. Incidents occur daily." +msgstr "" + +#: fmea/models.py +msgid "" +"Level 1: Always Detectable. Incident (almost) never occurs, almost " +"unthinkable." +msgstr "" + +#: fmea/models.py +msgid "" +"Level 2: Usually Detectable. Incidents occur less than once a year (3-5)." +msgstr "" + +#: fmea/models.py +msgid "Level 3: Detectable. Failure mode is detectable with effort." +msgstr "" + +#: fmea/models.py +msgid "Level 4: Poorly Detectable. Detecting the failure mode is difficult." +msgstr "" + +#: fmea/models.py +msgid "" +"Level 5: Almost Undetectable. Failure mode detection is very difficult or " +"nearly impossible." +msgstr "" + +#: fmea/models.py fmea/templates/fmea/fmea_failure_mode_list.html +#: fmea/views/view_helpers.py +msgid "Failure modes" +msgstr "" + +#: fmea/models.py fmea/views/view_helpers.py +msgid "Failure Mode Affected Objects" +msgstr "" + +#: fmea/templates/fmea/fmea_department_heatmap.html +msgid "FMEA Departments Heatmap:" +msgstr "" + +#: fmea/templates/fmea/fmea_department_heatmap.html +msgid "No data to build heatmap" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html +msgid "Failure mode affected object table:" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html +#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html +msgid "Affected Object" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html +#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html +#: fmea/templates/fmea/fmea_failure_mode_detail.html +#: fmea/templates/fmea/fmea_failure_mode_effect_detail.html +#: fmea/templates/fmea/fmea_failure_mode_effect_list.html +#: fmea/templates/fmea/fmea_failure_mode_list.html +#: fmea/views/fmea_affected_objects.py fmea/views/fmea_failure_mode.py +#: fmea/views/fmea_failure_mode_effect.py +#: katalogus/templates/plugin_settings_list.html +#: rocky/templates/organizations/organization_member_list.html +#: rocky/templates/organizations/organization_settings.html +#: rocky/views/ooi_edit.py rocky/views/organization_edit.py +msgid "Edit" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html +msgid "Failure mode affected objects cannot be found." +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html +msgid "Define which objects are affected for a failure mode" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html +msgid "Failure mode affected objects" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html +#: fmea/templates/fmea/fmea_failure_mode_effect_form.html +#: fmea/templates/fmea/fmea_failure_mode_form.html +msgid "Save" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html +#: fmea/templates/fmea/fmea_failure_mode_effect_form.html +#: fmea/templates/fmea/fmea_failure_mode_form.html +#: onboarding/templates/account/step_2a_organization_setup.html +#: onboarding/templates/account/step_4_account_setup_admin.html +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +#: onboarding/templates/account/step_6_account_setup_client.html +#: rocky/templates/forms/json_schema_form.html +#: rocky/templates/organizations/organization_add.html +#: rocky/templates/organizations/organization_member_add.html +#: rocky/templates/organizations/organization_member_add_account_type.html +#: rocky/templates/partials/elements/ooi_detail_settings.html +#: rocky/templates/partials/elements/ooi_report_settings.html +#: rocky/templates/partials/form/indemnification_add_form.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/two_factor/_wizard_actions.html +msgid "Submit" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "No failure mode yet defined." +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html +msgid "To add affected objects to a failure mode, first create one." +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "Create failure mode" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html +msgid "Failure mode affected objects table:" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html +msgid "No failure mode affected objects yet defined." +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html +msgid "Create failure mode Affected Objects" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_departments.html +msgid "Departments failure modes" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_departments.html +msgid "Failure modes and affected departments table:" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_departments.html +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "Failure Mode" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_departments.html +msgid "Affected Departments" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_departments.html +msgid "Nothing found." +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_detail.html +msgid "Failure mode properties" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_detail.html +#: fmea/templates/fmea/fmea_failure_mode_effect_detail.html +msgid "Properties" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_detail.html +msgid "Risk class" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_detail.html +msgid "Frequency level" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_detail.html +msgid "Detectability level" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_detail.html +msgid "" +"\n" +" Effect and severity level\n" +" " +msgid_plural "" +"\n" +" Effects and severity levels\n" +" " +msgstr[0] "" +msgstr[1] "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_detail.html +#: fmea/templates/fmea/fmea_failure_mode_effect_list.html +msgid "Failure mode effect" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_detail.html +msgid "Failure mode effect properties" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_detail.html +#: rocky/templates/crisis_room/crisis_room_findings_block.html +#: rocky/templates/findings/finding_list.html +#: rocky/templates/oois/ooi_detail_findings_list.html +#: rocky/templates/oois/ooi_detail_findings_overview.html +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/ooi_report_severity_totals_table.html +msgid "Severity" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_form.html +msgid "FMEA effect and severity" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_form.html +msgid "FMEA effect" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_list.html +msgid "Failure mode effects table:" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_list.html +msgid "Severity level" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_list.html +msgid "No failure mode effect yet defined." +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_effect_list.html +msgid "Create a failure mode effect" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_form.html +#: fmea/templates/fmea/fmea_index.html +msgid "Create a new failure mode" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_form.html +msgid "Failure mode and effects" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_form.html +msgid "No failure mode effects created." +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_form.html +msgid "" +"First create failure mode effects which can be added later to a failure mode." +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_form.html +#: fmea/templates/fmea/fmea_index.html +msgid "Create failure mode effects" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "Failure mode table:" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "Risk Class" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_list.html +#: rocky/templates/crisis_room/crisis_room_findings_block.html +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/ooi_report_findings_block_table.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Details" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "Sluit details" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "Description:" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "Frequency level:" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "Detectability level:" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_list.html +msgid "" +"\n" +"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tEffect and severity level\n" +"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t" +msgid_plural "" +"\n" +"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tEffects and severity levels\n" +"\t\t\t\t\t\t\t\t\t\t\t\t\t\t" +msgstr[0] "" +msgstr[1] "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Failure mode report" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +#: reports/templates/summary/report_summary.html +#: rocky/templates/partials/ooi_report_severity_totals.html +#: rocky/views/ooi_tree.py +msgid "Summary" +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Failure mode: " +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Severity: " +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Detectability: " +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Frequency: " +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Effect: " +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Description: " +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Affected Departments: " +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Affected OOI's: " +msgstr "" + +#: fmea/templates/fmea/fmea_failure_mode_report.html +msgid "Report cannot be viewed, failure mode not found." +msgstr "" + +#: fmea/templates/fmea/fmea_index.html +msgid "FMEA introduction" +msgstr "" + +#: fmea/templates/fmea/fmea_index.html +msgid "" +"FMEA (failure mode and effective analysis) is a step-by-step approach for " +"collecting knowledge about possible points of failure in a design, " +"manufacturing process, product or service." +msgstr "" + +#: fmea/templates/fmea/fmea_index.html +msgid "" +"Failure mode (FM) refers to the way in which something might break down and " +"includes potential errors that may occur, especially errors that may affect " +"a system. Effective analysis (EA) involves deciphering the consequences of " +"those break downs by making sure that all failures can be detected, " +"determining how frequently a failure might occur and identifying which " +"potential failures should be prioritized." +msgstr "" + +#: fmea/templates/fmea/fmea_index.html +msgid "Create affected objects of a failure mode" +msgstr "" + +#: fmea/templates/fmea/fmea_index.html +msgid "View all failure modes" +msgstr "" + +#: fmea/templates/fmea/fmea_index.html +msgid "View all failure mode effects" +msgstr "" + +#: fmea/templates/fmea/fmea_index.html +msgid "View all affected objects for a failure modes" +msgstr "" + +#: fmea/templates/fmea/fmea_index.html fmea/views/fmea_analytics.py +msgid "Heatmap" +msgstr "" + +#: fmea/tools.py +msgid "--- Select an option ----" +msgstr "" + +#: fmea/views/fmea_affected_objects.py +msgid "Failure mode affected objects successfully created." +msgstr "" + +#: fmea/views/fmea_affected_objects.py fmea/views/fmea_failure_mode.py +#: fmea/views/fmea_failure_mode_effect.py +msgid "Create" +msgstr "" + +#: fmea/views/fmea_affected_objects.py +msgid "Treeobjects successfully added." +msgstr "" + +#: fmea/views/fmea_affected_objects.py +msgid "Please select a department or ooi." +msgstr "" + +#: fmea/views/fmea_analytics.py onboarding/templates/step_4_report.html +msgid "Report" +msgstr "" + +#: fmea/views/fmea_failure_mode.py +msgid "Failure mode successfully created." +msgstr "" + +#: fmea/views/fmea_failure_mode_effect.py +msgid "Failure mode effect successfully created." +msgstr "" + +#: fmea/views/view_helpers.py rocky/templates/dashboard_redteam.html +msgid "FMEA" +msgstr "" + +#: fmea/views/view_helpers.py +msgid "Failure mode effects" +msgstr "" + +#: katalogus/forms/katalogus_filter.py +msgid "Show all" +msgstr "" + +#: katalogus/forms/katalogus_filter.py +#: reports/report_types/dns_report/report.html +msgid "Enabled" +msgstr "" + +#: katalogus/forms/katalogus_filter.py +msgid "Disabled" +msgstr "" + +#: katalogus/forms/katalogus_filter.py +msgid "Enabled-Disabled" +msgstr "" + +#: katalogus/forms/katalogus_filter.py +msgid "Disabled-Enabled" +msgstr "" + +#: katalogus/forms/katalogus_filter.py +msgid "Filter options" +msgstr "" + +#: katalogus/forms/katalogus_filter.py +msgid "Sorting options" +msgstr "" + +#: katalogus/forms/plugin_settings.py +msgid "This field is required." +msgstr "" + +#: katalogus/templates/about_plugins.html +#: katalogus/templates/partials/plugins_navigation.html +msgid "About plugins" +msgstr "" + +#: katalogus/templates/about_plugins.html katalogus/templates/katalogus.html +msgid "" +"Plugins gather data, objects and insight. Each plugin has its own focus area " +"and strengths and may be able to work with other plugins to gain even more " +"insights." +msgstr "" + +#: katalogus/templates/about_plugins.html katalogus/templates/boefjes.html +msgid "" +"Boefjes gather factual information, such as by calling an external scanning " +"tool like nmap or using a database like shodan." +msgstr "" + +#: katalogus/templates/about_plugins.html katalogus/templates/normalizers.html +msgid "" +"Normalizers analyze the information and turn it into objects for the data " +"model in Octopoes." +msgstr "" + +#: katalogus/templates/about_plugins.html +msgid "" +"Bits are business rules that look for insight within the current dataset and " +"search for specific insight and draw conclusions." +msgstr "" + +#: katalogus/templates/boefje_detail.html +msgid "Scan level" +msgstr "" + +#: katalogus/templates/boefje_detail.html +#: katalogus/templates/normalizer_detail.html +msgid "Consumes" +msgstr "" + +#: katalogus/templates/boefje_detail.html +#, python-format +msgid "%(plugin_name)s is able to scan the following object types:" +msgstr "" + +#: katalogus/templates/boefje_detail.html +#: katalogus/templates/normalizer_detail.html +#, python-format +msgid "%(plugin_name)s does not need any input objects." +msgstr "" + +#: katalogus/templates/boefje_detail.html +#: katalogus/templates/normalizer_detail.html +msgid "Produces" +msgstr "" + +#: katalogus/templates/boefje_detail.html +#: katalogus/templates/normalizer_detail.html +#, python-format +msgid "%(plugin_name)s can produce the following output:" +msgstr "" + +#: katalogus/templates/boefjes.html katalogus/templates/normalizers.html +msgid "available" +msgstr "" + +#: katalogus/templates/change_clearance_level.html +#: katalogus/templates/partials/objects_to_scan.html +msgid "scan level warning" +msgstr "" + +#: katalogus/templates/change_clearance_level.html +#, python-format +msgid "" +"%(plugin_name)s will only scan objects with a corresponding clearance level " +"of L%(scan_level)s or higher." +msgstr "" + +#: katalogus/templates/change_clearance_level.html +msgid "Scan OOI" +msgstr "" + +#: katalogus/templates/change_clearance_level.html +#, python-format +msgid "" +"The following objects are not yet cleared for level %(scan_level)s, please " +"be advised that by continuing you will declare a level %(scan_level)s on " +"these objects." +msgstr "" + +#: katalogus/templates/change_clearance_level.html +msgid "Selected OOIs:" +msgstr "" + +#: katalogus/templates/change_clearance_level.html +#: rocky/templates/partials/explanations.html +msgid "OOI" +msgstr "" + +#: katalogus/templates/change_clearance_level.html onboarding/forms.py +#: reports/templates/report_oois_selection.html +#: reports/templates/summary/ooi_selection.html tools/forms/ooi.py +#: rocky/templates/oois/ooi_page_tabs.html +#: rocky/templates/partials/explanations.html +#: rocky/templates/scan_profiles/scan_profile_detail.html +msgid "Clearance level" +msgstr "" + +#: katalogus/templates/change_clearance_level.html +msgid "Are you sure you want to scan anyways?" +msgstr "" + +#: katalogus/templates/change_clearance_level.html +#: rocky/templates/oois/ooi_detail.html +msgid "Scan" +msgstr "" + +#: katalogus/templates/change_clearance_level.html +#: katalogus/templates/confirmation_clone_settings.html +#: katalogus/templates/plugin_settings_delete.html +#: rocky/templates/oois/ooi_delete.html +#: rocky/templates/oois/ooi_mute_finding.html +#: rocky/templates/organizations/organization_edit.html +#: rocky/templates/organizations/organization_member_edit.html +#: rocky/templates/two_factor/_wizard_actions.html +msgid "Cancel" +msgstr "" + +#: katalogus/templates/clone_settings.html +#: katalogus/templates/confirmation_clone_settings.html +msgid "Clone settings" +msgstr "" + +#: katalogus/templates/clone_settings.html +#, python-format +msgid "" +"\n" +" Use the form below to clone the settings from " +"%(current_organization)s to the selected organization.\n" +" This includes both the KAT-alogus settings as well as enabled and " +"disabled plugins.\n" +" " +msgstr "" + +#: katalogus/templates/confirmation_clone_settings.html +msgid "Clone" +msgstr "" + +#: katalogus/templates/katalogus.html +msgid "All plugins" +msgstr "" + +#: katalogus/templates/katalogus.html +msgid "" +"\n" +" Plugin available\n" +" " +msgid_plural "" +"\n" +" Plugins available\n" +" " +msgstr[0] "" +msgstr[1] "" + +#: katalogus/templates/katalogus_settings.html +msgid "KAT-alogus Settings" +msgstr "" + +#: katalogus/templates/katalogus_settings.html +msgid "" +"There are currently no settings defined. Add settings at plugin detail page." +msgstr "" + +#: katalogus/templates/katalogus_settings.html +#: reports/templates/report_setup_scan.html +#: reports/templates/report_types_selection.html +#: rocky/templates/two_factor/core/otp_required.html +msgid "Go back" +msgstr "" + +#: katalogus/templates/katalogus_settings.html +msgid "This is an overview of the latest settings of all plugins." +msgstr "" + +#: katalogus/templates/katalogus_settings.html +msgid "Latest plugin settings:" +msgstr "" + +#: katalogus/templates/katalogus_settings.html +#: rocky/templates/partials/task_history.html +msgid "Plugin" +msgstr "" + +#: katalogus/templates/katalogus_settings.html +#: katalogus/templates/plugin_settings_list.html +#: reports/report_types/dns_report/report.html +#: rocky/templates/oois/ooi_delete.html +msgid "Value" +msgstr "" + +#: katalogus/templates/normalizer_detail.html +#, python-format +msgid "%(plugin_name)s is able to process the following mime types:" +msgstr "" + +#: katalogus/templates/partials/boefje_tile.html +msgid "Scan level:" +msgstr "" + +#: katalogus/templates/partials/boefje_tile.html +msgid "Publisher" +msgstr "" + +#: katalogus/templates/partials/boefje_tile.html +#: katalogus/templates/partials/plugin_tile.html +#: katalogus/templates/partials/plugins.html +msgid "See details" +msgstr "" + +#: katalogus/templates/partials/enable_disable_plugin.html +msgid "Enable" +msgstr "" + +#: katalogus/templates/partials/enable_disable_plugin.html +#: rocky/templates/two_factor/profile/disable.html +msgid "Disable" +msgstr "" + +#: katalogus/templates/partials/enable_disable_plugin.html +msgid "You don't have permission to enable " +msgstr "" + +#: katalogus/templates/partials/katalogus_filter.html +msgid "Filter plugins" +msgstr "" + +#: katalogus/templates/partials/katalogus_filter.html +msgid "Clear filter" +msgstr "" + +#: katalogus/templates/partials/katalogus_header.html +#: katalogus/views/change_clearance_level.py katalogus/views/katalogus.py +#: katalogus/views/katalogus_settings.py katalogus/views/plugin_detail.py +#: katalogus/views/plugin_settings_add.py +#: katalogus/views/plugin_settings_delete.py +#: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html +#: rocky/templates/header.html +msgid "KAT-alogus" +msgstr "" + +#: katalogus/templates/partials/katalogus_header.html +msgid "An overview of all available plugins." +msgstr "" + +#: katalogus/templates/partials/katalogus_header.html +#: katalogus/templates/plugin_settings_list.html +#: katalogus/views/katalogus_settings.py tools/view_helpers.py +#: rocky/templates/header.html +#: rocky/templates/organizations/organization_settings.html +msgid "Settings" +msgstr "" + +#: katalogus/templates/partials/katalogus_toolbar.html +msgid "Gridview" +msgstr "" + +#: katalogus/templates/partials/katalogus_toolbar.html +msgid "Tableview" +msgstr "" + +#: katalogus/templates/partials/objects_to_scan.html +#: rocky/templates/findings/finding_list.html +#: rocky/templates/oois/ooi_list.html +#: rocky/templates/organizations/organization_crisis_room.html +msgid "Object list" +msgstr "" + +#: katalogus/templates/partials/objects_to_scan.html +#, python-format +msgid "" +"This Boefje will only scan objects with a corresponding clearance level of " +"L%(scan_level)s or higher. There is no indemnification for " +"this Boefje to scan an OOI with a lower clearance level than " +"L%(scan_level)s. Use the filter to show OOI's with a lower " +"clearance level." +msgstr "" + +#: katalogus/templates/partials/objects_to_scan.html +msgid "" +"Warning scan level: Scanning OOI's with a lower clearance level " +"will result in OpenKAT increasing the clearance level on that OOI, not only " +"for this scan but from now on out, until it manually gets set to something " +"else again. This means that all other enabled Boefjes will use this higher " +"clearance level aswel." +msgstr "" + +#: katalogus/templates/partials/objects_to_scan.html +#, python-format +msgid "" +"You currently don't have any objects that meet the scan level of %(name)s. " +"Add objects with a complying clearance level, or alter the clearance level " +"of existing objects." +msgstr "" + +#: katalogus/templates/partials/objects_to_scan.html +#, python-format +msgid "" +"You currently don't have scannable objects for %(name)s. Add objects to use " +"this Boefje. This Boefje is able to scan objects of the following types:" +msgstr "" + +#: katalogus/templates/partials/plugin_settings_required.html +msgid "The form could not be initialized." +msgstr "" + +#: katalogus/templates/partials/plugin_settings_required.html +msgid "Required settings" +msgstr "" + +#: katalogus/templates/partials/plugin_settings_required.html +#: katalogus/templates/plugin_settings_list.html +#: rocky/templates/findings/finding_add.html +#: rocky/templates/partials/ooi_list_toolbar.html +msgid "Add" +msgstr "" + +#: katalogus/templates/partials/plugins.html +msgid "Plugins overview:" +msgstr "" + +#: katalogus/templates/partials/plugins.html +#: reports/templates/summary/report_summary.html +msgid "Plugin name" +msgstr "" + +#: katalogus/templates/partials/plugins.html +#: reports/templates/summary/report_summary.html +msgid "Plugin type" +msgstr "" + +#: katalogus/templates/partials/plugins.html +#: reports/templates/summary/report_summary.html +msgid "Plugin description" +msgstr "" + +#: katalogus/templates/partials/plugins.html +#: rocky/templates/organizations/organization_settings.html +msgid "Actions" +msgstr "" + +#: katalogus/templates/partials/plugins_navigation.html +msgid "Plugins Navigation" +msgstr "" + +#: katalogus/templates/partials/plugins_navigation.html +msgid "All" +msgstr "" + +#: katalogus/templates/partials/plugins_navigation.html +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +#: tools/forms/boefje.py rocky/templates/scan.html +#: rocky/templates/tasks/boefjes.html +#: rocky/templates/tasks/partials/tab_navigation.html +msgid "Boefjes" +msgstr "" + +#: katalogus/templates/partials/plugins_navigation.html +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +#: rocky/templates/tasks/normalizers.html +#: rocky/templates/tasks/partials/tab_navigation.html +msgid "Normalizers" +msgstr "" + +#: katalogus/templates/plugin_settings_add.html +msgid "" +"\n" +" Add setting\n" +" " +msgid_plural "" +"\n" +" Add settings\n" +" " +msgstr[0] "" +msgstr[1] "" + +#: katalogus/templates/plugin_settings_add.html +msgid "" +"\n" +" Setting\n" +" " +msgid_plural "" +"\n" +" Settings\n" +" " +msgstr[0] "" +msgstr[1] "" + +#: katalogus/templates/plugin_settings_add.html +msgid "" +"\n" +" Add setting\n" +" " +msgid_plural "" +"\n" +" Add settings\n" +" " +msgstr[0] "" +msgstr[1] "" + +#: katalogus/templates/plugin_settings_add.html +msgid "" +"\n" +" Add setting and enable boefje\n" +" " +msgid_plural "" +"\n" +" Add settings and enable boefje\n" +" " +msgstr[0] "" +msgstr[1] "" + +#: katalogus/templates/plugin_settings_delete.html +msgid "Delete settings" +msgstr "" + +#: katalogus/templates/plugin_settings_delete.html +#, python-format +msgid "" +"Are you sure you want to delete all settings for the plugin %(plugin_name)s?" +msgstr "" + +#: katalogus/templates/plugin_settings_delete.html +#: katalogus/templates/plugin_settings_list.html +#: katalogus/views/plugin_settings_delete.py +#: rocky/templates/admin/delete_confirmation.html rocky/views/ooi_delete.py +msgid "Delete" +msgstr "" + +#: katalogus/templates/plugin_settings_list.html +msgid " Details" +msgstr "" + +#: katalogus/templates/plugin_settings_list.html +msgid "Overview of settings:" +msgstr "" + +#: katalogus/templates/plugin_settings_list.html +msgid "Required" +msgstr "" + +#: katalogus/templates/plugin_settings_list.html +msgid "Action" +msgstr "" + +#: katalogus/templates/plugin_settings_list.html +msgid "Unset" +msgstr "" + +#: katalogus/templates/plugin_settings_list.html +#: reports/report_types/dns_report/report.html +msgid "Yes" +msgstr "" + +#: katalogus/templates/plugin_settings_list.html +#: reports/report_types/dns_report/report.html +msgid "No" +msgstr "" + +#: katalogus/views/change_clearance_level.py +msgid "Session has terminated, please select OOIs again." +msgstr "" + +#: katalogus/views/change_clearance_level.py +msgid "Change clearance level" +msgstr "" + +#: katalogus/views/katalogus_settings.py +msgid "Settings from {} to {} successfully cloned." +msgstr "" + +#: katalogus/views/katalogus_settings.py +#: katalogus/views/plugin_settings_list.py +msgid "Failed getting settings for boefje {}" +msgstr "" + +#: katalogus/views/mixins.py +msgid "" +"Getting information for plugin {} failed. Please check the KATalogus logs." +msgstr "" + +#: katalogus/views/mixins.py +#, python-format +msgid "" +"Could not raise clearance level of %s to L%s. " +"Indemnification not present at organization %s." +msgstr "" + +#: katalogus/views/mixins.py onboarding/views.py rocky/views/scan_profile.py +#, python-format +msgid "" +"Could not raise clearance level of %s to L%s. You were trusted a clearance " +"level of L%s. Contact your administrator to receive a higher clearance." +msgstr "" + +#: katalogus/views/mixins.py onboarding/views.py +#, python-format +msgid "" +"Could not raise clearance level of %s to L%s. You acknowledged a clearance " +"level of L%s. Please accept the clearance level first on your profile page " +"to proceed." +msgstr "" + +#: katalogus/views/plugin_detail.py +msgid "" +"Some selected OOIs needs an increase of clearance level to perform scans. " +"You do not have the permission to change clearance level." +msgstr "" + +#: katalogus/views/plugin_detail.py +msgid "Please select an OOI to start scan." +msgstr "" + +#: katalogus/views/plugin_enable_disable.py +msgid "{} '{}' disabled." +msgstr "" + +#: katalogus/views/plugin_enable_disable.py +msgid "Failed fetching settings for {}. Is the Katalogus up?" +msgstr "" + +#: katalogus/views/plugin_enable_disable.py +msgid "Before enabling, please set the required settings for '{}'." +msgstr "" + +#: katalogus/views/plugin_enable_disable.py +msgid "{} '{}' enabled." +msgstr "" + +#: katalogus/views/plugin_enable_disable.py +msgid "" +"Your clearance level is not set. Go to your profile page to see your " +"clearance or contact the administrator to set a clearance level." +msgstr "" + +#: katalogus/views/plugin_enable_disable.py +msgid "To enable {} you need at least a clearance level of L{}. " +msgstr "" + +#: katalogus/views/plugin_settings_add.py +msgid "Trying to add settings to boefje without schema" +msgstr "" + +#: katalogus/views/plugin_settings_add.py +msgid "No changes to the settings added: no form data present" +msgstr "" + +#: katalogus/views/plugin_settings_add.py +msgid "Added settings for '{}'" +msgstr "" + +#: katalogus/views/plugin_settings_add.py +msgid "Failed adding settings" +msgstr "" + +#: katalogus/views/plugin_settings_add.py +msgid "Enabling {} failed" +msgstr "" + +#: katalogus/views/plugin_settings_add.py +msgid "Boefje '{}' enabled." +msgstr "" + +#: katalogus/views/plugin_settings_add.py +msgid "Add settings" +msgstr "" + +#: katalogus/views/plugin_settings_delete.py +msgid "Settings for plugin {} successfully deleted." +msgstr "" + +#: katalogus/views/plugin_settings_delete.py +msgid "Plugin {} has no settings." +msgstr "" + +#: katalogus/views/plugin_settings_delete.py +msgid "" +"Failed deleting Settings for plugin {}. Check the Katalogus logs for more " +"info." +msgstr "" + +#: onboarding/forms.py tools/forms/ooi.py +msgid "" +"Boefjes that has a scan level below or equal to the clearance level, is " +"permitted to scan an object." +msgstr "" + +#: onboarding/forms.py tools/forms/ooi.py +msgid "explanation-clearance-level" +msgstr "" + +#: onboarding/templates/account/step_1_registration_intro.html +msgid "Register" +msgstr "" + +#: onboarding/templates/account/step_1_registration_intro.html +msgid "Create a new account for your organization" +msgstr "" + +#: onboarding/templates/account/step_1_registration_intro.html +msgid "" +"All user accounts are part of an organization. So if you’re new and your " +"company is also new to OpenKAT you can register here to create a OpenKAT " +"account for your company including an admin account for you. If you like a " +"user account that is connected to an already existing organization within " +"OpenKAT you can ask the admin to create an account for you." +msgstr "" + +#: onboarding/templates/account/step_1_registration_intro.html +#: onboarding/templates/step_1_introduction.html +msgid "Let's get started" +msgstr "" + +#: onboarding/templates/account/step_1_registration_intro.html +#: onboarding/templates/step_1_introduction.html +msgid "How does OpenKAT work" +msgstr "" + +#: onboarding/templates/account/step_1_registration_intro.html +msgid "" +"OpenKAT is able to give insight into security risks on your online objects. " +"For example, your websites, mailservers or online data. OpenKAT uses scans " +"to find and assess the area's that might be at risk and reports these back " +"to you. As a user you decide which insight you would like and OpenKAT guides " +"you to through the process. During this introduction you will be guided " +"through the steps to create a report." +msgstr "" + +#: onboarding/templates/account/step_2a_organization_setup.html +#: onboarding/templates/account/step_2a_organization_update.html +#: onboarding/templates/account/step_2b_indemnification_setup.html +#: onboarding/templates/account/step_2c_account_setup_intro.html +#: onboarding/templates/account/step_3_account_user_type.html +#: onboarding/templates/account/step_4_account_setup_admin.html +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "OpenKAT setup" +msgstr "" + +#: onboarding/templates/account/step_2a_organization_setup.html +#: onboarding/templates/account/step_2a_organization_update.html +#: rocky/templates/organizations/organization_add.html +msgid "Organization setup" +msgstr "" + +#: onboarding/templates/account/step_2a_organization_setup.html +msgid "" +"Please enter the following organization details. These details can be edited " +"within the organization page within OpenKAT when necessary. Adding a new " +"organization requires a new database." +msgstr "" + +#: onboarding/templates/account/step_2a_organization_setup.html +#: onboarding/templates/account/step_2a_organization_update.html +#: rocky/templates/organizations/organization_add.html +#: rocky/templates/organizations/organization_settings.html +msgid "Organization details" +msgstr "" + +#: onboarding/templates/account/step_2a_organization_update.html +#: rocky/templates/organizations/organization_add.html +msgid "" +"Please enter the following organization details. These details can be edited " +"within the organization page within OpenKAT when necessary." +msgstr "" + +#: onboarding/templates/account/step_2a_organization_update.html +msgid "Submit changes" +msgstr "" + +#: onboarding/templates/account/step_2a_organization_update.html +#: onboarding/templates/account/step_2b_indemnification_setup.html +#: onboarding/templates/step_3d_clearance_level_introduction.html +msgid "Continue" +msgstr "" + +#: onboarding/templates/account/step_2b_indemnification_setup.html +msgid "Indemnification setup" +msgstr "" + +#: onboarding/templates/account/step_2b_indemnification_setup.html +msgid "Indemnification on the organization is already present." +msgstr "" + +#: onboarding/templates/account/step_2c_account_setup_intro.html +#: onboarding/templates/account/step_3_account_user_type.html +msgid "Account setup" +msgstr "" + +#: onboarding/templates/account/step_2c_account_setup_intro.html +msgid "Accounts" +msgstr "" + +#: onboarding/templates/account/step_2c_account_setup_intro.html +msgid "Organization setup with separate accounts:" +msgstr "" + +#: onboarding/templates/account/step_2c_account_setup_intro.html +msgid "" +"Within OpenKAT it is possible to create separate user accounts with the " +"specific roles. Each with their own functionalities and permissions. This is " +"useful when multiple people will be working with the same OpenKAT-setup. You " +"can choose to create the separate accounts during this introduction or when " +"you’re ready from the OpenKAT users page." +msgstr "" + +#: onboarding/templates/account/step_2c_account_setup_intro.html +msgid "Single account setup:" +msgstr "" + +#: onboarding/templates/account/step_2c_account_setup_intro.html +msgid "" +"Alternatively it is also an option to run OpenKAT from a single user " +"account. Which is useful when you are the only user in the account. You will " +"be able to access the functionality of the different roles from your " +"account. You can always add additional user accounts If you’re team expands " +"in the future." +msgstr "" + +#: onboarding/templates/account/step_2c_account_setup_intro.html +msgid "Create separate accounts" +msgstr "" + +#: onboarding/templates/account/step_2c_account_setup_intro.html +msgid "Continue with this account, onboard me!" +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +msgid "Users" +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +msgid "" +"Within OpenKAT there are three types of user accounts. Each has its own " +"functions." +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +#: onboarding/templates/account/step_4_account_setup_admin.html +msgid "Admin" +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +#: onboarding/templates/account/step_4_account_setup_admin.html +msgid "" +"Each organization must have an admin. The admin can create and manage user " +"accounts as well as organization details." +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +msgid "Red teamer" +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +msgid "A red teamer account can run scans and generate reports." +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "Client account" +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +msgid "A client account can access reports." +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +msgid "" +"Each organization requires at least one admin and one red teamer account to " +"function. This introduction will guide you through the setup of both. After " +"that you can choose to add a client account as well." +msgstr "" + +#: onboarding/templates/account/step_3_account_user_type.html +msgid "Let's add accounts" +msgstr "" + +#: onboarding/templates/account/step_4_account_setup_admin.html +msgid "Admin account setup" +msgstr "" + +#: onboarding/templates/account/step_4_account_setup_admin.html +msgid "Admin details" +msgstr "" + +#: onboarding/templates/account/step_4_account_setup_admin.html +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "Go back to previous step" +msgstr "" + +#: onboarding/templates/account/step_4_account_setup_admin.html +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +msgid "Skip this step" +msgstr "" + +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +msgid "Red teamer account setup" +msgstr "" + +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +msgid "Red teamer details" +msgstr "" + +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "Client account setup (optional)" +msgstr "" + +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "" +"A client account can access reports. Adding a client account to the " +"organization is optional." +msgstr "" + +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "User details" +msgstr "" + +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "Finish organization setup" +msgstr "" + +#: onboarding/templates/dns_report.html +#: onboarding/templates/step_2a_choose_report_info.html +#: onboarding/templates/step_2b_choose_report_type.html +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +#: onboarding/templates/step_4_report.html onboarding/views.py +msgid "OpenKAT introduction" +msgstr "" + +#: onboarding/templates/dns_report.html +#: reports/report_types/dns_report/report.py +msgid "DNS Report" +msgstr "" + +#: onboarding/templates/dns_report.html +#, python-format +msgid "" +"These are the findings of a OpenKAT-analysis (%(observed_at)s). Click a " +"finding for more detailed information about the issue, its origin, severity " +"and possible solutions." +msgstr "" + +#: onboarding/templates/dns_report.html +msgid "DNS Tree" +msgstr "" + +#: onboarding/templates/step_1_introduction.html +#: rocky/templates/landing_page.html +msgid "Welcome to OpenKAT" +msgstr "" + +#: onboarding/templates/step_1_introduction.html +msgid "" +"OpenKAT is the \"Kwetsbaarheden Analyse Tool\" (Vulnerabilities Analysis " +"Tool). An Open-Source-project developed by the Ministry of Health, Welfare " +"and Sport to make your and our world a safer place." +msgstr "" + +#: onboarding/templates/step_1_introduction.html +msgid "" +"OpenKAT is able to give insight into security risks on your online objects. " +"For example, your websites, mailservers or online data." +msgstr "" + +#: onboarding/templates/step_1_introduction.html +msgid "" +"OpenKAT uses plugins to find and assess the area's that might be at risk and " +"reports these back to you. Each plugin has its own skillset which could be " +"scanning, normalizing or analyzing data. As a user you decide which areas " +"you would like to monitor or scan and which insight you would like to " +"receive." +msgstr "" + +#: onboarding/templates/step_1_introduction.html +msgid "" +"Within OpenKAT you can view the insights as well as all the data OpenKAT has " +"found. You can choose to browse through the data or view reports." +msgstr "" + +#: onboarding/templates/step_1_introduction.html +msgid "" +"During this introduction you will be guided through the steps to create a " +"report." +msgstr "" + +#: onboarding/templates/step_1_introduction.html +#: onboarding/templates/step_2a_choose_report_info.html +#: onboarding/templates/step_2b_choose_report_type.html +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +#: onboarding/templates/step_3d_clearance_level_introduction.html +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +#: onboarding/templates/step_3f_set_clearance_level.html +#: rocky/templates/partials/form/boefje_tiles_form.html +msgid "Skip onboarding" +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "Choose a report - Introduction" +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +#: reports/templates/report_oois_selection.html reports/views.py +#: rocky/templates/header.html +msgid "Reports" +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "" +"Reports within OpenKAT contain an overview of the scanned objects, issues " +"found within them and known security risks that the object might be " +"vulnerable to. Each report gives a high overview of the state of the object " +"as well as detailed information on what OpenKAT found and possible solutions." +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "Data" +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "" +"OpenKAT can scan and analyze by using plugins. Each plugin has it's unique " +"skillset and will collect specific data or give specific insights. You " +"manage the plugins within your account which let's OpenKAT know which " +"plugins to run and on which objects or areas." +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "Generating a report" +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "" +"When you choose a report type OpenKAT will guide you through the setup. " +"OpenKAT will ask the necessary questions based on the input the report " +"needs, as well as asks for permission to run plugins that you haven’t " +"enabled yet but are needed to collect or analyze the data." +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "" +"You can also choose to look at the collected data directly or generate your " +"own report by selecting and running plugins on objects of your choice. " +"OpenKAT will present the results." +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "Permission" +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "" +"Plugins can be provided by OpenKAT but they can also come from the " +"community. Before a plugin can run, you need to give it permission by " +"enabling it." +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "" +"When you generate a report. OpenKAT will let you know which plugins it " +"requires or suggests so you can choose to enable them." +msgstr "" + +#: onboarding/templates/step_2a_choose_report_info.html +msgid "Let's choose a report" +msgstr "" + +#: onboarding/templates/step_2b_choose_report_type.html +msgid "Choose a report - Type" +msgstr "" + +#: onboarding/templates/step_2b_choose_report_type.html +msgid "" +"Within OpenKAT you can view reports for each of your current objects. For " +"specific reports you can choose one of the available report types and " +"generate a report. Such as a pen-test, a DNS-report or a mail report to give " +"some examples." +msgstr "" + +#: onboarding/templates/step_2b_choose_report_type.html +msgid "For this tutorial we suggest a DNS-report to get you started." +msgstr "" + +#: onboarding/templates/step_2b_choose_report_type.html +msgid "" +"When you start to generate this report. OpenKAT will guide you through the " +"necessary steps." +msgstr "" + +#: onboarding/templates/step_2b_choose_report_type.html +msgid "DNS report" +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "Setup scan" +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +msgid "Let OpenKAT know what object to scan" +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +msgid "" +"Plugins scan and analyze objects. OpenKAT needs to know which object(s) you " +"would like to scan and analyze for the DNS-report. So it can tell you which " +"plugins are available for the chosen object." +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +msgid "Understanding objects" +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +msgid "" +"A lot of things can be an object within the scope of OpenKAT. For example a " +"mailserver, an ip-address, a URL, a DNS record, a hostname or a network to " +"name a few. While these objects can be related to each other they are all " +"objects within OpenKAT that can be scanned to gain valuable insight." +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +msgid "Creating, adding and editing objects" +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +msgid "" +"Within OpenKAT you can view, add and edit objects from the organization’s " +"object page." +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +msgid "" +"Let’s add an object to scan for the DNS-Report. For this introduction we " +"suggest adding a URL." +msgstr "" + +#: onboarding/templates/step_3a_setup_scan_ooi_info.html +msgid "Add URL" +msgstr "" + +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html onboarding/views.py +msgid "Creating an object" +msgstr "" + +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +msgid "Create your first object, a URL by filling out the form below." +msgstr "" + +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +msgid "" +"Additional details and examples can be found by pressing on the help button " +"next to the input field." +msgstr "" + +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +msgid "Dependencies" +msgstr "" + +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +msgid "" +"Most objects have dependencies on the existence of other objects. For " +"example a URL needs to be connected to a network, hostname, fqdn (fully " +"qualified domain name) and ip-address. OpenKAT collects these additional " +"object automatically when possible. By running plugins to collect or extract " +"this data." +msgstr "" + +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +msgid "" +"The additional objects that OpenKAT created will be added to your object " +"list as separate objects. If OpenKAT can’t add them automatically it will " +"guide you through the process of creating them manually." +msgstr "" + +#: onboarding/templates/step_3b_setup_scan_ooi_add.html +#: reports/templates/report_oois_selection.html +msgid "Create object" +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "" +"Based on the url you provided OpenKAT added the necessary additional objects " +"to create a url object." +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "URL" +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +#: reports/report_types/dns_report/report.html +#: reports/templates/report_oois_selection.html +#: reports/templates/summary/ooi_selection.html tools/forms/ooi.py +#: rocky/templates/partials/elements/ooi_tree_condensed_table.html +#: rocky/templates/partials/explanations.html +#: rocky/templates/partials/ooi_detail_related_object.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Type" +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "Path" +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "Hostname" +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "scheme" +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "DNS Zone" +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "Network" +msgstr "" + +#: onboarding/templates/step_3c_setup_scan_ooi_detail.html +msgid "Start scanning" +msgstr "" + +#: onboarding/templates/step_3d_clearance_level_introduction.html +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +#: onboarding/templates/step_3f_set_clearance_level.html +msgid "OpenKAT Introduction" +msgstr "" + +#: onboarding/templates/step_3d_clearance_level_introduction.html +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +msgid "Setup scan - OOI clearance for" +msgstr "" + +#: onboarding/templates/step_3d_clearance_level_introduction.html +#: reports/templates/partials/report_introduction.html +msgid "Introduction" +msgstr "" + +#: onboarding/templates/step_3d_clearance_level_introduction.html +#: rocky/templates/partials/form/indemnification_add_form.html +msgid "" +"Some scans are lightweight while others might be a bit more aggressive with " +"their scanning. OpenKAT requires you to set a clearance level for each " +"object to prevent you from unintentionally running aggressive scans. For " +"example you might have the right to run any type of scan on your own server " +"but you probably don’t have the right to do so for objects owned by other " +"people of companies." +msgstr "" + +#: onboarding/templates/step_3d_clearance_level_introduction.html +msgid "How to know required clearance level" +msgstr "" + +#: onboarding/templates/step_3d_clearance_level_introduction.html +msgid "" +"Each plugin that scans will have a scan intensity score. The intensity of " +"the scan must be equal to or below the clearance level you set for your " +"object. If the scan has an intensity level that is too high, OpenKAT will " +"notify you before running it. Visually clearance levels and intensity scores " +"are indicated with little cat paws." +msgstr "" + +#: onboarding/templates/step_3d_clearance_level_introduction.html +msgid "" +"This scan has a scan intensity score of 1, requiring a level 1 clearance " +"level to be run. This means that the scan does not touch the object itself, " +"but only searches for information about the object." +msgstr "" + +#: onboarding/templates/step_3d_clearance_level_introduction.html +msgid "" +"An example of a more aggressive scan. Which has a scan intensity score of 3. " +"Meaning it requires at least a level 3 clearance level to be set on your " +"object." +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +msgid "" +"\n" +" OpenKAT has a permission system that allows " +"administrators to\n" +" configure which users can set a certain clearance level. " +"The will make sure\n" +" that only users that are trusted can start the more " +"aggressive scans.\n" +" " +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +msgid "Acknowledge clearance level" +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +msgid "" +"\n" +" Before a member is granted the ability to set clearance " +"levels on an object,\n" +" they must first acknowledge and accept the clearance " +"level set by the administrators.\n" +" The maximum scanning level permitted for a member is " +"aligned with the trusted clearance level.\n" +" By acknowledging the trusted clearance level, this " +"member formally agrees to abide by\n" +" this permission and gains the capability to perform " +"scans only up to this trusted clearance level.\n" +" This two-step process ensures that the member operates " +"within authorized boundaries.\n" +" " +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +msgid "What is my clearance level?" +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +#, python-format +msgid "" +"\n" +" Unfortunately you cannot continue the " +"onboarding.
    \n" +" Your administrator has trusted you with a " +"clearance level of L%(tcl)s.
    \n" +" You need at least a clearance level of " +"L%(dns_report_least_clearance_level)s to scan " +"%(ooi)s
    \n" +" Contact your administrator to receive a " +"higher clearance.\n" +" " +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +#, python-format +msgid "" +"\n" +" Your administrator has trusted you with a " +"clearance level of L%(tcl)s.
    \n" +" You must first accept this clearance level to " +"continue.\n" +" " +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +#, python-format +msgid "" +"\n" +" Accept level L%(tcl)s clearance and " +"responsibility\n" +" " +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +#, python-format +msgid "" +"\n" +" Your administrator has trusted " +"you with a clearance level of L%(tcl)s.
    \n" +" You have also acknowledged to " +"use this clearance level of L%(acl)s.\n" +" " +msgstr "" + +#: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +#: onboarding/templates/step_3f_set_clearance_level.html +#: rocky/templates/oois/ooi_list.html +#: rocky/templates/scan_profiles/scan_profile_detail.html +#: rocky/templates/scan_profiles/scan_profile_reset.html +msgid "Set clearance level" +msgstr "" + +#: onboarding/templates/step_3f_set_clearance_level.html +msgid "Setup scan - Set clearance level for" +msgstr "" + +#: onboarding/templates/step_3f_set_clearance_level.html +#, python-format +msgid "" +"After creating a new object OpenKAT will ask you to set a clearance level. " +"On the object detail page you can always change the clearance level. For the " +"onboarding we will suggest to set the clearance level to " +"L%(dns_report_least_clearance_level)s." +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +msgid "Setup scan - Enable plugins" +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +msgid "Plugins introduction" +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +msgid "" +"OpenKAT uses plugins to scan, check and analyze. Each plugin will bring a " +"specific skillset that will help to generate your report. There are three " +"types of plugins." +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +msgid "" +"Scan objects for data. Each boefje has a scan intensity score to prevent " +"invasive scanning on objects where you don’t have the clearance to do so." +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +msgid "" +"Check the data for specific objects and add these object to your object list." +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +#: reports/report_types/tls_report/report.html +msgid "Bits" +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +msgid "Analyze the available data to come to insights and conclusions." +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +msgid "" +"OpenKAT will be able to generate a full report when all the required and " +"suggested plugins are enabled. If you choose not to give a plugin permission " +"to run, the data that plugin would collect or produce will be left out of " +"the report which will then be generated based on the available data " +"collected by the enabled plugins. Below are the suggested and required " +"plugins for this report." +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +msgid "Let’s setup your scan by enabling the plugins of your choice below." +msgstr "" + +#: onboarding/templates/step_3g_setup_scan_select_plugins.html +#: reports/templates/report_setup_scan.html +msgid "Suggested plugins" +msgstr "" + +#: onboarding/templates/step_4_report.html +msgid "Boefjes are scanning" +msgstr "" + +#: onboarding/templates/step_4_report.html +msgid "" +"The enabled boefjes are collecting the data needed to generate the DNS-" +"report. This may take some time based on the type of scans and the number of " +"objects found. For the current scan we expect boefjes to take about 3 " +"minutes." +msgstr "" + +#: onboarding/templates/step_4_report.html +msgid "" +"During this introduction we ask you to wait till the scan is ready. After " +"which you can view the report." +msgstr "" + +#: onboarding/templates/step_4_report.html +msgid "" +"After the onboarding, boefjes run in the background. This enables you to use " +"OpenKAT in the meantime without waiting for scans to finish. When you would " +"like to see the status of a scan you can open the \"tasks\" page." +msgstr "" + +#: onboarding/templates/step_4_report.html +msgid "Open my DNS-report" +msgstr "" + +#: onboarding/view_helpers.py +msgid "1: Introduction" +msgstr "" + +#: onboarding/view_helpers.py +msgid "2: Choose a report" +msgstr "" + +#: onboarding/view_helpers.py +msgid "3: Setup scan" +msgstr "" + +#: onboarding/view_helpers.py +msgid "4: Open report" +msgstr "" + +#: onboarding/view_helpers.py +msgid "2: Organization setup" +msgstr "" + +#: onboarding/view_helpers.py +msgid "3: Indemnification" +msgstr "" + +#: onboarding/view_helpers.py +msgid "4: Account setup" +msgstr "" + +#: onboarding/views.py +msgid "" +"OpenKAT added the following required object to your object list to complete " +"your request: {}" +msgstr "" + +#: onboarding/views.py +#, python-format +msgid "" +"Could not raise clearance level of %s to L%s. " +"Indemnification not present at organization %s." +msgstr "" + +#: onboarding/views.py +msgid "Clearance level has been set" +msgstr "" + +#: onboarding/views.py +msgid "OpenKAT Setup" +msgstr "" + +#: onboarding/views.py +#, python-brace-format +msgid "{org_name} successfully created." +msgstr "" + +#: onboarding/views.py +#, python-brace-format +msgid "{org_name} successfully updated." +msgstr "" + +#: onboarding/views.py +#, python-brace-format +msgid "{name} successfully created." +msgstr "" + +#: reports/forms.py tools/forms/ooi_form.py +msgid "Filter by OOI types" +msgstr "" + +#: reports/forms.py +msgid "Report types" +msgstr "" + +#: reports/report_types/dns_report/report.html +msgid "IP address lookup" +msgstr "" + +#: reports/report_types/dns_report/report.html +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "warning" +msgstr "" + +#: reports/report_types/dns_report/report.html +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Warning" +msgstr "" + +#: reports/report_types/dns_report/report.html +msgid "" +"You have less than one webserver that is reachable over IPv6, which is " +"not in compliance to internet.nl standards." +msgstr "" + +#: reports/report_types/dns_report/report.html +msgid "Other records found" +msgstr "" + +#: reports/report_types/dns_report/report.html +msgid "Record" +msgstr "" + +#: reports/report_types/dns_report/report.html +msgid "Found by" +msgstr "" + +#: reports/report_types/dns_report/report.html +msgid "Security measures" +msgstr "" + +#: reports/report_types/dns_report/report.py +msgid "" +"DNS reports focus on domain name system configuration and potential " +"weaknesses." +msgstr "" + +#: reports/report_types/tls_report/report.html +#: rocky/templates/organizations/organization_member_list.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "Status" +msgstr "" + +#: reports/report_types/tls_report/report.html +msgid "Protocol" +msgstr "" + +#: reports/report_types/tls_report/report.html +msgid "Encryption Algorithm" +msgstr "" + +#: reports/report_types/tls_report/report.html +msgid "Key Size" +msgstr "" + +#: reports/report_types/tls_report/report.html +#: rocky/templates/organizations/organization_list.html +#: rocky/templates/organizations/organization_settings.html +msgid "Code" +msgstr "" + +#: reports/report_types/tls_report/report.html +msgid "Phase out" +msgstr "" + +#: reports/report_types/tls_report/report.html +msgid "Good" +msgstr "" + +#: reports/report_types/tls_report/report.html +msgid "No ciphers found for this IPService" +msgstr "" + +#: reports/report_types/tls_report/report.html +#: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html +#: rocky/templates/header.html +#: rocky/templates/oois/ooi_detail_findings_list.html +#: rocky/templates/oois/ooi_detail_findings_overview.html +#: rocky/templates/oois/ooi_page_tabs.html +#: rocky/templates/partials/ooi_report_findings_block.html +#: rocky/views/finding_list.py rocky/views/finding_type_add.py +#: rocky/views/ooi_view.py +msgid "Findings" +msgstr "" + +#: reports/report_types/tls_report/report.py +msgid "TLS Report" +msgstr "" + +#: reports/report_types/tls_report/report.py +msgid "" +"TLS reports assess the security of data encryption and transmission " +"protocols." +msgstr "" + +#: reports/templates/partials/report_header.html +msgid "Report for organization" +msgstr "" + +#: reports/templates/partials/report_header.html +msgid "Observed at:" +msgstr "" + +#: reports/templates/partials/report_header.html +msgid "Created by:" +msgstr "" + +#: reports/templates/partials/report_introduction.html +msgid "" +"Through a systematic examination of the network's infrastructure, the scan " +"has identified potential security weaknesses and points of exposure. " +"Additionally, the report offers actionable recommendations and prioritizes " +"remediation steps to fortify the network's defenses against potential " +"threats. This invaluable assessment serves as a roadmap for enhancing " +"network security, ensuring the confidentiality, integrity, and availability " +"of critical data and resources." +msgstr "" + +#: reports/templates/report.html +msgid "for" +msgstr "" + +#: reports/templates/report_oois_selection.html +msgid "Overview of reports" +msgstr "" + +#: reports/templates/report_oois_selection.html +msgid "Select OOI" +msgid_plural "Select OOIs" +msgstr[0] "" +msgstr[1] "" + +#: reports/templates/report_oois_selection.html +msgid "Select which objects you want to include in your report." +msgstr "" + +#: reports/templates/report_oois_selection.html +#: rocky/templates/admin/change_list.html rocky/templates/oois/ooi_list.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "Filter" +msgstr "" + +#: reports/templates/report_oois_selection.html +msgid "No OOIs found." +msgstr "" + +#: reports/templates/report_oois_selection.html +msgid "Go to the object page" +msgstr "" + +#: reports/templates/report_oois_selection.html +#: reports/templates/summary/ooi_selection.html +#: rocky/templates/partials/task_history.html +msgid "Object" +msgstr "" + +#: reports/templates/report_oois_selection.html +msgid "Setup report" +msgstr "" + +#: reports/templates/report_setup_scan.html rocky/views/organization_add.py +msgid "Setup" +msgstr "" + +#: reports/templates/report_setup_scan.html +msgid "Set up the required plugins for this report." +msgstr "" + +#: reports/templates/report_setup_scan.html +#: reports/templates/report_types_selection.html +msgid "Change selection" +msgstr "" + +#: reports/templates/report_setup_scan.html reports/views.py +msgid "Set up scan" +msgstr "" + +#: reports/templates/report_setup_scan.html +msgid "" +"KAT will be able to generate a full report when all the required and " +"suggested boefjes are enabled." +msgstr "" + +#: reports/templates/report_setup_scan.html +msgid "" +"If you choose not to give a plugin permission to run, the data that plugin " +"would collect or produce will be left out of the report which will then be " +"generated based on the available data collected by the enabled plugins." +msgstr "" + +#: reports/templates/report_setup_scan.html +msgid "Required plugins" +msgstr "" + +#: reports/templates/report_setup_scan.html +msgid "This report type requires the following plugins to be enabled:" +msgstr "" + +#: reports/templates/report_setup_scan.html +msgid "" +"This report requires at least one of the following plugins to be enabled to " +"generate the report:" +msgstr "" + +#: reports/templates/report_setup_scan.html +#: rocky/templates/partials/ooi_detail_toolbar.html +msgid "Generate report" +msgstr "" + +#: reports/templates/report_types_selection.html reports/views.py +msgid "Choose report types" +msgstr "" + +#: reports/templates/report_types_selection.html +msgid "" +"Various types of reports, such as DNS reports and TLS reports, are essential " +"for identifying vulnerabilities in different aspects of a system's security. " +"DNS reports focus on domain name system configuration and potential " +"weaknesses, while TLS reports assess the security of data encryption and " +"transmission protocols, helping organizations pinpoint areas where security " +"improvements are needed." +msgstr "" + +#: reports/templates/report_types_selection.html +msgid "Selected object" +msgid_plural "Selected objects" +msgstr[0] "" +msgstr[1] "" + +#: reports/templates/report_types_selection.html +msgid "Available report types" +msgstr "" + +#: reports/templates/report_types_selection.html +msgid "All report types that are available for your selection." +msgstr "" + +#: reports/templates/report_types_selection.html +msgid "Toggle all report types" +msgstr "" + +#: reports/templates/report_types_selection.html +msgid "Continue with selection" +msgstr "" + +#: reports/templates/summary/report_summary.html +msgid "Selected OOIs" +msgstr "" + +#: reports/templates/summary/report_summary.html +msgid "Selected Report Types" +msgstr "" + +#: reports/templates/summary/report_summary.html +msgid "Report type" +msgstr "" + +#: reports/templates/summary/report_summary.html +msgid "Selected Plugins for scans" +msgstr "" + +#: reports/templates/summary/report_summary.html +msgid "Plugin options" +msgstr "" + +#: reports/templates/summary/report_summary.html +msgid "Plugin scan level" +msgstr "" + +#: reports/templates/summary/service_health.html rocky/templates/health.html +msgid "Version" +msgstr "" + +#: reports/views.py +msgid "View Report" +msgstr "" + +#: reports/views.py +msgid "Select at least one OOI to proceed." +msgstr "" + +#: reports/views.py +msgid "Select at least one report type to proceed." +msgstr "" + +#: reports/views.py +msgid "This report may not show all the data as some plugins are not enabled." +msgstr "" + +#: tools/forms/base.py +msgid "Date" +msgstr "" + +#: tools/forms/boefje.py +msgid "" +"Not all required boefjes are selected. Please select all required boefjes." +msgstr "" + +#: tools/forms/finding_type.py +msgid "KAT-ID" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Unique ID within OpenKAT, for this type" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Title" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Give the finding type a fitting title" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Describe the finding type" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Risk" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Solution" +msgstr "" + +#: tools/forms/finding_type.py +msgid "How can this be solved?" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Describe how this type of finding can be solved" +msgstr "" + +#: tools/forms/finding_type.py +msgid "References" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Please give some references on the solution" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Please give sources and references on the suggested solution" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Impact description" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Describe the solutions impact" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Solution chance" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Solution impact" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Solution effort" +msgstr "" + +#: tools/forms/finding_type.py +msgid "ID should start with " +msgstr "" + +#: tools/forms/finding_type.py +msgid "Finding type already exists" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Click to select one of the available options" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Finding types" +msgstr "" + +#: tools/forms/finding_type.py +#: rocky/templates/partials/finding_occurrence_definition_list.html +msgid "Proof" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Provide evidence of your finding" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Describe your finding" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Reproduce finding" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Please explain how to reproduce your finding" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Date/Time (UTC)" +msgstr "" + +#: tools/forms/finding_type.py +msgid "Doc! I'm from the future, I'm here to take you back!" +msgstr "" + +#: tools/forms/finding_type.py +msgid "OOI doesn't exist" +msgstr "" + +#: tools/forms/findings.py +msgid "Show non-muted findings" +msgstr "" + +#: tools/forms/findings.py +msgid "Show muted findings" +msgstr "" + +#: tools/forms/findings.py +msgid "Show muted and non-muted findings" +msgstr "" + +#: tools/forms/findings.py +msgid "Filter by severity" +msgstr "" + +#: tools/forms/findings.py +msgid "Filter by muted findings" +msgstr "" + +#: tools/forms/ooi.py +msgid "Filter types" +msgstr "" + +#: tools/forms/ooi.py tools/view_helpers.py +#: rocky/templates/admin/delete_confirmation.html +#: rocky/templates/admin/delete_selected_confirmation.html +#: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html +#: rocky/templates/header.html rocky/templates/indemnification_present.html +#: rocky/views/ooi_add.py rocky/views/ooi_list.py rocky/views/ooi_view.py +#: rocky/views/upload_csv.py rocky/views/upload_raw.py +msgid "Objects" +msgstr "" + +#: tools/forms/ooi.py +msgid "Clearance Level" +msgstr "" + +#: tools/forms/ooi.py +msgid "Show objects that don't meet the Boefjes scan level." +msgstr "" + +#: tools/forms/ooi.py +msgid "Show Boefjes that exceed the objects clearance level." +msgstr "" + +#: tools/forms/ooi_form.py +msgid "option" +msgstr "" + +#: tools/forms/ooi_form.py +#, python-brace-format +msgid "Optionally choose a {option_label}" +msgstr "" + +#: tools/forms/ooi_form.py +#, python-brace-format +msgid "Please choose a {option_label}" +msgstr "" + +#: tools/forms/ooi_form.py +msgid "Filter by clearance level" +msgstr "" + +#: tools/forms/ooi_form.py +msgid "Filter by clearance type" +msgstr "" + +#: tools/forms/settings.py +msgid "--- Show all ----" +msgstr "" + +#: tools/forms/settings.py +msgid "recommendation" +msgstr "" + +#: tools/forms/settings.py +msgid "low" +msgstr "" + +#: tools/forms/settings.py +msgid "medium" +msgstr "" + +#: tools/forms/settings.py +msgid "high" +msgstr "" + +#: tools/forms/settings.py +msgid "very high" +msgstr "" + +#: tools/forms/settings.py +msgid "critical" +msgstr "" + +#: tools/forms/settings.py +msgid "quickfix" +msgstr "" + +#: tools/forms/settings.py +#: rocky/templates/scan_profiles/scan_profile_detail.html +msgid "Declared" +msgstr "" + +#: tools/forms/settings.py +#: rocky/templates/scan_profiles/scan_profile_detail.html +msgid "Inherited" +msgstr "" + +#: tools/forms/settings.py +#: rocky/templates/scan_profiles/scan_profile_detail.html +msgid "Empty" +msgstr "" + +#: tools/forms/settings.py +msgid "Add one finding type ID per line." +msgstr "" + +#: tools/forms/settings.py +msgid "Add the date and time of your finding (UTC)" +msgstr "" + +#: tools/forms/settings.py +msgid "" +"OpenKAT stores a time indication with every observation, so it is possible " +"to see the status of your network through time. Select a datetime to change " +"the view to represent that moment in time." +msgstr "" + +#: tools/forms/settings.py +msgid "Depth of the tree." +msgstr "" + +#: tools/forms/upload_csv.py +msgid "Only CSV file supported" +msgstr "" + +#: tools/forms/upload_csv.py tools/forms/upload_raw.py +msgid "File could not be decoded" +msgstr "" + +#: tools/forms/upload_csv.py +msgid "No file selected" +msgstr "" + +#: tools/forms/upload_csv.py +msgid "The uploaded file is empty." +msgstr "" + +#: tools/forms/upload_csv.py +msgid "The number of columns do not meet the requirements." +msgstr "" + +#: tools/forms/upload_csv.py +msgid "OOI Type in CSV does not meet the criteria." +msgstr "" + +#: tools/forms/upload_csv.py +msgid "An error has occurred during the parsing of the csv file:" +msgstr "" + +#: tools/forms/upload_csv.py +msgid "Upload CSV file" +msgstr "" + +#: tools/forms/upload_csv.py +msgid "Only accepts CSV file." +msgstr "" + +#: tools/forms/upload_oois.py rocky/templates/partials/explanations.html +msgid "Object Type" +msgstr "" + +#: tools/forms/upload_oois.py +msgid "Choose a type of which objects are added." +msgstr "" + +#: tools/forms/upload_raw.py +msgid "Organization code(s) for raw does not exist in our database" +msgstr "" + +#: tools/forms/upload_raw.py +msgid "Mime types" +msgstr "" + +#: tools/forms/upload_raw.py +msgid "" +"

    Add a set of mime types, separated by commas, for example:

    \"text/html, image/jpeg\" or \"boefje/dns-records\".

    Mime types are used to match the correct normalizer to a raw file. When " +"the mime type \"boefje/dns-records\" is added, the normalizer expects the " +"raw file to contain dns scan information.

    " +msgstr "" + +#: tools/forms/upload_raw.py rocky/templates/partials/ooi_list_toolbar.html +#: rocky/templates/upload_raw.html +msgid "Upload raw file" +msgstr "" + +#: tools/models.py +msgid "The name of the organisation" +msgstr "" + +#: tools/models.py +msgid "" +"A slug containing only lower-case unicode letters, numbers, hyphens or " +"underscores that will be used in URLs and paths" +msgstr "" + +#: tools/models.py +msgid "" +"This organization code is reserved by OpenKAT and cannot be used. Choose " +"another organization code." +msgstr "" + +#: tools/models.py +msgid "new" +msgstr "" + +#: tools/view_helpers.py rocky/templates/header.html +#: rocky/templates/organizations/organization_list.html +#: rocky/templates/organizations/organization_member_list.html +#: rocky/templates/partials/organization_member_list_filters.html +#: rocky/views/organization_member_edit.py +msgid "Members" +msgstr "" + +#: tools/view_helpers.py +msgid "" +"Your task is scheduled and will soon be started in the background. Results " +"will be added to the object list when they are in. It may take some time, a " +"refresh of the page may be needed to show the results." +msgstr "" + +#: rocky/messaging.py +msgid "" +"You have trusted this member with a clearance level of L{}. This member " +"needs at least a clearance level of L{} in order to do a proper onboarding. " +"Edit this member and change the clearance level if necessary." +msgstr "" + +#: rocky/scheduler.py +msgid "Connectivity issues with Mula." +msgstr "" + +#: rocky/scheduler.py +msgid "Task queue is full, please try again later." +msgstr "" + +#: rocky/scheduler.py +msgid "Task is invalid." +msgstr "" + +#: rocky/scheduler.py +msgid "Task already queued." +msgstr "" + +#: rocky/settings.py +msgid "Blue light" +msgstr "" + +#: rocky/settings.py +msgid "Blue medium" +msgstr "" + +#: rocky/settings.py +msgid "Blue dark" +msgstr "" + +#: rocky/settings.py +msgid "Green light" +msgstr "" + +#: rocky/settings.py +msgid "Green medium" +msgstr "" + +#: rocky/settings.py +msgid "Green dark" +msgstr "" + +#: rocky/settings.py +msgid "Yellow light" +msgstr "" + +#: rocky/settings.py +msgid "Yellow medium" +msgstr "" + +#: rocky/settings.py +msgid "Yellow dark" +msgstr "" + +#: rocky/settings.py +msgid "Orange light" +msgstr "" + +#: rocky/settings.py +msgid "Orange medium" +msgstr "" + +#: rocky/settings.py +msgid "Orange dark" +msgstr "" + +#: rocky/settings.py +msgid "Red light" +msgstr "" + +#: rocky/settings.py +msgid "Red medium" +msgstr "" + +#: rocky/settings.py +msgid "Red dark" +msgstr "" + +#: rocky/settings.py +msgid "Violet light" +msgstr "" + +#: rocky/settings.py +msgid "Violet medium" +msgstr "" + +#: rocky/settings.py +msgid "Violet dark" +msgstr "" + +#: rocky/settings.py +msgid "Plain" +msgstr "" + +#: rocky/settings.py +msgid "Solid" +msgstr "" + +#: rocky/settings.py +msgid "Dashed" +msgstr "" + +#: rocky/settings.py +msgid "Dotted" +msgstr "" + +#: rocky/templates/403.html +msgid "Error code 403: Unauthorized" +msgstr "" + +#: rocky/templates/403.html +msgid "Your account is not authorized to access this page or organization." +msgstr "" + +#: rocky/templates/403.html +msgid "Please contact your system administrator." +msgstr "" + +#: rocky/templates/403.html rocky/templates/404.html +msgid "You may want to go back to the" +msgstr "" + +#: rocky/templates/403.html rocky/templates/404.html +#: rocky/templates/crisis_room/crisis_room.html +msgid "Crisis Room" +msgstr "" + +#: rocky/templates/404.html +msgid "Error code 404: Page not found" +msgstr "" + +#: rocky/templates/404.html +msgid "" +"The page you wanted to see or the file you wanted to view was not found." +msgstr "" + +#: rocky/templates/admin/base.html +msgid "Skip to main content" +msgstr "" + +#: rocky/templates/admin/base.html +msgid "Welcome," +msgstr "" + +#: rocky/templates/admin/base.html +msgid "View site" +msgstr "" + +#: rocky/templates/admin/base.html +msgid "Documentation" +msgstr "" + +#: rocky/templates/admin/base.html +msgid "Change password" +msgstr "" + +#: rocky/templates/admin/base.html +msgid "Log out" +msgstr "" + +#: rocky/templates/admin/base.html rocky/templates/header.html +msgid "Breadcrumbs" +msgstr "" + +#: rocky/templates/admin/base.html rocky/templates/admin/change_form.html +#: rocky/templates/admin/change_list.html +#: rocky/templates/admin/delete_confirmation.html +#: rocky/templates/admin/delete_selected_confirmation.html +msgid "Home" +msgstr "" + +#: rocky/templates/admin/change_form.html +#, python-format +msgid "Add %(name)s" +msgstr "" + +#: rocky/templates/admin/change_form.html +#: rocky/templates/admin/change_list.html +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: rocky/templates/admin/change_list.html +msgid "Clear all filters" +msgstr "" + +#: rocky/templates/admin/delete_confirmation.html +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" + +#: rocky/templates/admin/delete_confirmation.html +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the " +"following protected related objects:" +msgstr "" + +#: rocky/templates/admin/delete_confirmation.html +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" + +#: rocky/templates/admin/delete_confirmation.html +#: rocky/templates/admin/delete_selected_confirmation.html +msgid "Yes, I’m sure" +msgstr "" + +#: rocky/templates/admin/delete_confirmation.html +#: rocky/templates/admin/delete_selected_confirmation.html +msgid "No, take me back" +msgstr "" + +#: rocky/templates/admin/delete_selected_confirmation.html +msgid "Delete multiple objects" +msgstr "" + +#: rocky/templates/admin/delete_selected_confirmation.html +#, python-format +msgid "" +"Deleting the selected %(objects_name)s would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" + +#: rocky/templates/admin/delete_selected_confirmation.html +#, python-format +msgid "" +"Deleting the selected %(objects_name)s would require deleting the following " +"protected related objects:" +msgstr "" + +#: rocky/templates/admin/delete_selected_confirmation.html +#, python-format +msgid "" +"Are you sure you want to delete the selected %(objects_name)s? All of the " +"following objects and their related items will be deleted:" +msgstr "" + +#: rocky/templates/admin/popup_response.html +msgid "Popup closing…" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room.html +msgid "" +"An overview of all (critical) findings OpenKAT found. Check the detail " +"section for additional severity information." +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +msgid "Total findings" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +msgid "Total Findings" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Close details" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Open details" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +msgid " Finding Details" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +#: rocky/templates/oois/ooi_detail_findings_overview.html +#: rocky/templates/partials/ooi_report_findings_block_table.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Occurrences" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +#: rocky/templates/organizations/organization_list.html +msgid "There were no organizations found for your user account" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +msgid "Top critical organizations" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +msgid "Critical findings" +msgstr "" + +#: rocky/templates/crisis_room/crisis_room_findings_block.html +msgid "Critical Findings" +msgstr "" + +#: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html +#: rocky/templates/header.html +msgid "Close menu" +msgstr "" + +#: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html +#: rocky/templates/header.html +msgid "Main navigation" +msgstr "" + +#: rocky/templates/dashboard_client.html +msgid "Indemnifications" +msgstr "" + +#: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/secondary-menu.html +msgid "Logout" +msgstr "" + +#: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html +msgid "Welcome" +msgstr "" + +#: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html +msgid "User overview:" +msgstr "" + +#: rocky/templates/dashboard_redteam.html +msgid "Organization code missing" +msgstr "" + +#: rocky/templates/finding_type_add.html +#: rocky/templates/partials/findings_list_toolbar.html +#: rocky/views/finding_type_add.py +msgid "Add finding type" +msgstr "" + +#: rocky/templates/finding_type_add.html +msgid "Finding Type" +msgstr "" + +#: rocky/templates/findings/finding_add.html +#: rocky/templates/oois/ooi_detail_findings_list.html +#: rocky/templates/oois/ooi_findings.html +#: rocky/templates/partials/findings_list_toolbar.html +msgid "Add finding" +msgstr "" + +#: rocky/templates/findings/finding_add.html +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Finding" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "Findings @ " +msgstr "" + +#: rocky/templates/findings/finding_list.html +#, python-format +msgid "" +"An overview of all findings OpenKAT found for organization " +"%(organization_name)s. Each finding relates to an object. " +"Click a finding for additional information." +msgstr "" + +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +msgid "Showing " +msgstr "" + +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/pagination.html +msgid "of" +msgstr "" + +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +msgid "findings" +msgstr "" + +#: rocky/templates/findings/finding_list.html +#: rocky/templates/oois/ooi_page_tabs.html +#: rocky/templates/partials/elements/ooi_tree_condensed_table.html +#: rocky/templates/partials/elements/ooi_tree_condensed_table_row.html +msgid "Tree" +msgstr "" + +#: rocky/templates/findings/finding_list.html +#: rocky/templates/oois/ooi_page_tabs.html +#: rocky/templates/partials/elements/ooi_tree_condensed_table.html +#: rocky/templates/partials/elements/ooi_tree_condensed_table_row.html +msgid "Graph" +msgstr "" + +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#, python-format +msgid "Show details for %(finding)s" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "Finding type:" +msgstr "" + +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#, python-format +msgid "Show details for %(finding_type)s" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "OOI type:" +msgstr "" + +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#, python-format +msgid "Show %(ooi_type)s objects" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "Source OOI:" +msgstr "" + +#: rocky/templates/findings/finding_list.html +#, python-format +msgid "Show details for %(ooi)s" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "Risk score:" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "Mute findings" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "Reason" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "Unmute Findings" +msgstr "" + +#: rocky/templates/findings/finding_list.html +msgid "Mute Findings" +msgstr "" + +#: rocky/templates/findings/findings_filter.html +#: rocky/templates/partials/elements/ooi_list_settings_form.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "Set filters" +msgstr "" + +#: rocky/templates/findings/findings_filter.html +#: rocky/templates/partials/elements/ooi_list_settings_form.html +msgid "Clear filters" +msgstr "" + +#: rocky/templates/footer.html rocky/views/privacy_statement.py +msgid "Privacy Statement" +msgstr "" + +#: rocky/templates/footer.html rocky/views/health.py +msgid "Health" +msgstr "" + +#: rocky/templates/forms/widgets/checkbox_group_table.html +msgid "this field is required" +msgstr "" + +#: rocky/templates/graph-d3.html +msgid "" +"Click a circle to collapse / expand the tree, click the text to view the " +"tree from that OOI and hover over the text to see details." +msgstr "" + +#: rocky/templates/graph-d3.html +msgid "Tree graph" +msgstr "" + +#: rocky/templates/header.html +msgid "Menu" +msgstr "" + +#: rocky/templates/header.html +msgid "OpenKAT logo, go to the homepage of OpenKAT" +msgstr "" + +#: rocky/templates/header.html +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/views/finding_list.py +msgid "Crisis room" +msgstr "" + +#: rocky/templates/header.html rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +#: rocky/views/task_detail.py rocky/views/tasks.py +msgid "Tasks" +msgstr "" + +#: rocky/templates/health.html +msgid "Health Checks" +msgstr "" + +#: rocky/templates/health.html +msgid "Healthy" +msgstr "" + +#: rocky/templates/health.html +msgid "Additional" +msgstr "" + +#: rocky/templates/indemnification_present.html +msgid "Indemnification" +msgstr "" + +#: rocky/templates/indemnification_present.html +msgid "" +"Indemnification on the organization present. You may now add objects and " +"start scans." +msgstr "" + +#: rocky/templates/indemnification_present.html +msgid "Go to" +msgstr "" + +#: rocky/templates/landing_page.html +msgid "Kwetsbaarheden Analyse Tool" +msgstr "" + +#: rocky/templates/landing_page.html +msgid "What is OpenKAT?" +msgstr "" + +#: rocky/templates/landing_page.html +msgid "" +"OpenKAT is a vulnerability analysis tool. An Open Source-project developed " +"by the Ministry of Health, Welfare and Sport to make your and our world " +"safer." +msgstr "" + +#: rocky/templates/landing_page.html +msgid "OpenKAT sees" +msgstr "" + +#: rocky/templates/landing_page.html +msgid "" +"Dozens of tools are integrated in OpenKAT to view the world (digital and " +"analog).
    Our motto is therefore: I see, I see, what you do not see." +msgstr "" + +#: rocky/templates/landing_page.html +msgid "OpenKAT knows" +msgstr "" + +#: rocky/templates/landing_page.html +msgid "" +"OpenKAT does not forget (just like that), and can be queried without " +"scanning again. Also about a historical situation." +msgstr "" + +#: rocky/templates/landing_page.html +msgid "OpenKAT is secure" +msgstr "" + +#: rocky/templates/landing_page.html +msgid "" +"Forensically secured storage of evidence is one of the basic ingredients of " +"OpenKAT." +msgstr "" + +#: rocky/templates/landing_page.html +msgid "OpenKAT is sweet" +msgstr "" + +#: rocky/templates/landing_page.html +msgid "" +"OpenKAT thinks about privacy, and stores what is necessary, within the rules " +"of your organization and the law." +msgstr "" + +#: rocky/templates/landing_page.html +msgid "A wide playing field" +msgstr "" + +#: rocky/templates/landing_page.html +msgid "" +"OpenKAT makes a copy of the actual reality by means of the integrated tools. " +"Within this copy you can search for answers to countless security and policy " +"questions. Expected and unexpected changes in the world are made visible, " +"and where necessary reported or made known directly to the right people." +msgstr "" + +#: rocky/templates/legal/privacy_statement.html +msgid "OpenKAT Privacy Statement" +msgstr "" + +#: rocky/templates/legal/privacy_statement.html +msgid "" +"OpenKAT is dedicated to protecting the confidentiality and privacy of " +"information entrusted to it. As part of this fundamental obligation, OpenKAT " +"is committed to the appropriate protection and use of personal information " +"(sometimes referred to as \"personal data\", \"personally identifiable " +"information\" or \"PII\") that has been collected online." +msgstr "" + +#: rocky/templates/oois/error.html +msgid "Object List" +msgstr "" + +#: rocky/templates/oois/error.html +msgid "An error occurred. Please contact a system administrator." +msgstr "" + +#: rocky/templates/oois/ooi_add.html +#, python-format +msgid "Add a %(display_type)s" +msgstr "" + +#: rocky/templates/oois/ooi_add.html +msgid "" +"Here you can add the asset of the client. Findings can be added to these in " +"the findings page." +msgstr "" + +#: rocky/templates/oois/ooi_add.html +#, python-format +msgid "Add %(display_type)s" +msgstr "" + +#: rocky/templates/oois/ooi_add_type_select.html +msgid "Manual creation" +msgstr "" + +#: rocky/templates/oois/ooi_add_type_select.html +msgid "Select the type of object you want to create." +msgstr "" + +#: rocky/templates/oois/ooi_delete.html +#, python-format +msgid "Delete %(primary_key)s" +msgstr "" + +#: rocky/templates/oois/ooi_delete.html +#: rocky/templates/scan_profiles/scan_profile_reset.html +msgid "Are you sure?" +msgstr "" + +#: rocky/templates/oois/ooi_delete.html +#, python-format +msgid "Here you can delete the %(display_type)s." +msgstr "" + +#: rocky/templates/oois/ooi_delete.html +#: rocky/templates/partials/elements/ooi_tree_condensed_table.html +msgid "Key" +msgstr "" + +#: rocky/templates/oois/ooi_delete.html +#: rocky/templates/partials/ooi_detail_toolbar.html +#, python-format +msgid "Delete %(display_type)s" +msgstr "" + +#: rocky/templates/oois/ooi_delete.html +msgid "Deletion not possible for types: KATFindingType and CVEFindingType" +msgstr "" + +#: rocky/templates/oois/ooi_detail.html +msgid "using boefjes" +msgstr "" + +#: rocky/templates/oois/ooi_detail.html +#: rocky/templates/oois/ooi_detail_origins_observations.html +#: rocky/templates/scan.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Boefje" +msgstr "" + +#: rocky/templates/oois/ooi_detail.html rocky/templates/scan.html +msgid "Scan profile" +msgstr "" + +#: rocky/templates/oois/ooi_detail.html +msgid "There are no boefjes enabled to scan an OOI of type" +msgstr "" + +#: rocky/templates/oois/ooi_detail.html +#: rocky/templates/partials/ooi_report_severity_totals.html +msgid "See" +msgstr "" + +#: rocky/templates/oois/ooi_detail.html +msgid "to find and enable boefjes that can scan within the current level." +msgstr "" + +#: rocky/templates/oois/ooi_detail.html +msgid "There are no boefjes available within the current clearance level of" +msgstr "" + +#: rocky/templates/oois/ooi_detail.html +msgid "Or if you have the authorization, upgrade the clearance level of" +msgstr "" + +#: rocky/templates/oois/ooi_detail_add_related_object.html +msgid "Add related object" +msgstr "" + +#: rocky/templates/oois/ooi_detail_add_related_object.html +#: rocky/templates/oois/ooi_detail_object.html +#: rocky/templates/partials/elements/ooi_add_type_select_form.html +msgid "Object details" +msgstr "" + +#: rocky/templates/oois/ooi_detail_add_related_object.html +#: rocky/templates/partials/elements/ooi_add_type_select_form.html +msgid "Object type" +msgstr "" + +#: rocky/templates/oois/ooi_detail_add_related_object.html +#: rocky/templates/partials/elements/ooi_add_type_select_form.html +msgid "Choose an object type to add" +msgstr "" + +#: rocky/templates/oois/ooi_detail_add_related_object.html +#: rocky/templates/partials/elements/ooi_add_type_select_form.html +msgid "Select an object type to add." +msgstr "" + +#: rocky/templates/oois/ooi_detail_add_related_object.html +#: rocky/templates/partials/elements/ooi_add_type_select_form.html +#: rocky/templates/partials/ooi_list_toolbar.html rocky/views/ooi_add.py +msgid "Add object" +msgstr "" + +#: rocky/templates/oois/ooi_detail_findings_list.html +msgid "Overview of findings for " +msgstr "" + +#: rocky/templates/oois/ooi_detail_findings_list.html +msgid "Score" +msgstr "" + +#: rocky/templates/oois/ooi_detail_findings_list.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Finding details" +msgstr "" + +#: rocky/templates/oois/ooi_detail_findings_overview.html +msgid "Overview of the number of findings and their severity found on" +msgstr "" + +#: rocky/templates/oois/ooi_detail_findings_overview.html +msgid "" +"Findings can occur multiple times. To give better insight the following " +"table shows the number of unique findings found as well as the number of " +"occurrences." +msgstr "" + +#: rocky/templates/oois/ooi_detail_findings_overview.html +msgid "See finding details" +msgstr "" + +#: rocky/templates/oois/ooi_detail_findings_overview.html +msgid "Total findings:" +msgstr "" + +#: rocky/templates/oois/ooi_detail_origins_declarations.html +msgid "Declarations" +msgstr "" + +#: rocky/templates/oois/ooi_detail_origins_inference.html +msgid "Inferred by" +msgstr "" + +#: rocky/templates/oois/ooi_detail_origins_inference.html +msgid "Bit" +msgstr "" + +#: rocky/templates/oois/ooi_detail_origins_inference.html +#: rocky/templates/oois/ooi_detail_origins_observations.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Source" +msgstr "" + +#: rocky/templates/oois/ooi_detail_origins_inference.html +msgid "Parameters" +msgstr "" + +#: rocky/templates/oois/ooi_detail_origins_observations.html +msgid "Observed by" +msgstr "" + +#: rocky/templates/oois/ooi_detail_origins_observations.html +msgid "Task ID" +msgstr "" + +#: rocky/templates/oois/ooi_edit.html +#, python-format +msgid "Edit %(type)s: %(ooi_human_readable)s" +msgstr "" + +#: rocky/templates/oois/ooi_edit.html +msgid "Primary key fields cannot be edited." +msgstr "" + +#: rocky/templates/oois/ooi_edit.html +#, python-format +msgid "Save %(display_type)s" +msgstr "" + +#: rocky/templates/oois/ooi_findings.html +msgid "Currently there are no findings for OOI" +msgstr "" + +#: rocky/templates/oois/ooi_list.html +#, python-format +msgid "" +"An overview of objects found for organization %(organization_name)s. Objects can be added manually or by running Boefjes. Click an " +"object for additional information." +msgstr "" + +#: rocky/templates/oois/ooi_list.html +msgid "Currently filtered on:" +msgstr "" + +#: rocky/templates/oois/ooi_list.html +#, python-format +msgid "Showing %(length)s of %(total)s objects" +msgstr "" + +#: rocky/templates/oois/ooi_list.html +msgid "Delete object(s)" +msgstr "" + +#: rocky/templates/oois/ooi_mute_finding.html +msgid "Mute finding" +msgstr "" + +#: rocky/templates/oois/ooi_mute_finding.html +msgid "Give a reason below why you want to mute this finding." +msgstr "" + +#: rocky/templates/oois/ooi_mute_finding.html +msgid "Mute" +msgstr "" + +#: rocky/templates/oois/ooi_page_tabs.html +msgid "List of views for OOI" +msgstr "" + +#: rocky/templates/oois/ooi_page_tabs.html +msgid "Overview" +msgstr "" + +#: rocky/templates/oois/ooi_past_due_warning.html +msgid "This object is past due" +msgstr "" + +#: rocky/templates/oois/ooi_past_due_warning.html +msgid "This object is past due and has been deleted" +msgstr "" + +#: rocky/templates/oois/ooi_past_due_warning.html +msgid "" +"This object is past due. You are viewing the object state in a past state." +msgstr "" + +#: rocky/templates/oois/ooi_past_due_warning.html +msgid "" +"You will not be able to add Findings or other OOI's to past due objects." +msgstr "" + +#: rocky/templates/oois/ooi_past_due_warning.html +#: rocky/templates/partials/hyperlink_ooi_id.html +#, python-format +msgid "Show details for %(name)s" +msgstr "" + +#: rocky/templates/oois/ooi_past_due_warning.html +msgid "View the current state" +msgstr "" + +#: rocky/templates/oois/ooi_past_due_warning.html +msgid "" +"You will not be able to add Findings or other OOI's, this object has been " +"deleted and is no longer available." +msgstr "" + +#: rocky/templates/oois/ooi_report.html +#: rocky/templates/partials/findings_list_toolbar.html +msgid "Download PDF" +msgstr "" + +#: rocky/templates/oois/ooi_report.html +#, python-format +msgid "Findings report for %(name)s" +msgstr "" + +#: rocky/templates/oois/ooi_report.html +#, python-format +msgid "" +"These are the findings of a OpenKAT-analysis on %(observed_at)s. Click a " +"finding for more detailed information about the issue, its origin, severity " +"and possible solutions." +msgstr "" + +#: rocky/templates/oois/ooi_report_404.html +#, python-format +msgid "A report for %(name)s wasn't found." +msgstr "" + +#: rocky/templates/oois/ooi_report_404.html +#, python-format +msgid "" +"Perhaps it never was, perhaps it just didn't exist on %(observed_at)s
    " +"Try some other dates!" +msgstr "" + +#: rocky/templates/oois/ooi_summary.html +msgid "Summary for" +msgstr "" + +#: rocky/templates/oois/ooi_summary.html +msgid "Below you can see findings that were found for" +msgstr "" + +#: rocky/templates/oois/ooi_summary.html +msgid "and direct children of this" +msgstr "" + +#: rocky/templates/oois/ooi_summary.html +msgid "This" +msgstr "" + +#: rocky/templates/oois/ooi_summary.html +msgid "tree view" +msgstr "" + +#: rocky/templates/oois/ooi_summary.html +msgid "of the" +msgstr "" + +#: rocky/templates/oois/ooi_summary.html +msgid "shows the same objects." +msgstr "" + +#: rocky/templates/oois/ooi_tree.html +msgid "Object tree" +msgstr "" + +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/organizations/organization_settings.html +msgid "indemnification warning" +msgstr "" + +#: rocky/templates/organizations/organization_crisis_room.html +#, python-format +msgid "" +"\n" +" Warning:\n" +" Indemnification is not set for this " +"organization.\n" +" Go to the organization settings page to add " +"one.\n" +" " +msgstr "" + +#: rocky/templates/organizations/organization_crisis_room.html +msgid "" +"An overview of the top 10 most severe findings OpenKAT found. Check the " +"detail section for additional severity information." +msgstr "" + +#: rocky/templates/organizations/organization_crisis_room.html +msgid "Top 10 most severe Findings" +msgstr "" + +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/ooi_report_findings_block_table.html +msgid "Finding type" +msgstr "" + +#: rocky/templates/organizations/organization_crisis_room.html +msgid "OOI type" +msgstr "" + +#: rocky/templates/organizations/organization_crisis_room.html +msgid "Source OOI" +msgstr "" + +#: rocky/templates/organizations/organization_edit.html +msgid "Edit organization" +msgstr "" + +#: rocky/templates/organizations/organization_edit.html +msgid "Save organization" +msgstr "" + +#: rocky/templates/organizations/organization_list.html +msgid "Add new organization" +msgstr "" + +#: rocky/templates/organizations/organization_list.html +msgid "Organization overview:" +msgstr "" + +#: rocky/templates/organizations/organization_list.html +#: rocky/templates/organizations/organization_settings.html +msgid "Tags" +msgstr "" + +#: rocky/templates/organizations/organization_member_add.html +msgid " member account setup" +msgstr "" + +#: rocky/templates/organizations/organization_member_add.html +msgid "Member details" +msgstr "" + +#: rocky/templates/organizations/organization_member_add_account_type.html +msgid "Member account type setup" +msgstr "" + +#: rocky/templates/organizations/organization_member_add_account_type.html +msgid "Choose an account type for this new member." +msgstr "" + +#: rocky/templates/organizations/organization_member_add_account_type.html +msgid "Account type details" +msgstr "" + +#: rocky/templates/organizations/organization_member_edit.html +#: rocky/views/organization_member_edit.py +msgid "Edit member" +msgstr "" + +#: rocky/templates/organizations/organization_member_edit.html +msgid "Save member" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +#, python-format +msgid "" +"\n" +" An overview of \"%(organization_name)s\" its members.\n" +" " +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "Add member(s)" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "Manually" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "Upload a CSV" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "Member overview:" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "E-mail" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "Role" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "Assigned clearance level" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "Super user" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "Active" +msgstr "" + +#: rocky/templates/organizations/organization_member_list.html +msgid "New" +msgstr "" + +#: rocky/templates/organizations/organization_member_upload.html +msgid "Upload a csv file with members for organisation" +msgstr "" + +#: rocky/templates/organizations/organization_member_upload.html +msgid "Download the template" +msgstr "" + +#: rocky/templates/organizations/organization_member_upload.html +msgid "or create a csv file with the following criteria" +msgstr "" + +#: rocky/templates/organizations/organization_member_upload.html +#: rocky/templates/upload_csv.html +msgid "These are the criteria for CSV upload:" +msgstr "" + +#: rocky/templates/organizations/organization_member_upload.html +msgid "Upload" +msgstr "" + +#: rocky/templates/organizations/organization_settings.html +#, python-format +msgid "" +"\n" +" An overview of \"%(organization_name)s\". This shows general " +"information and its settings.\n" +" " +msgstr "" + +#: rocky/templates/organizations/organization_settings.html +msgid "" +"\n" +" Warning:\n" +" Indemnification is not set for this organization.\n" +" " +msgstr "" + +#: rocky/templates/organizations/organization_settings.html +#: rocky/views/indemnification_add.py +msgid "Add indemnification" +msgstr "" + +#: rocky/templates/organizations/organization_settings.html +msgid "Rerun all bits" +msgstr "" + +#: rocky/templates/partials/elements/ooi_detail_settings.html +msgid "Observed at" +msgstr "" + +#: rocky/templates/partials/elements/ooi_detail_settings.html +#: rocky/templates/partials/elements/ooi_report_settings.html +msgid "Show settings" +msgstr "" + +#: rocky/templates/partials/elements/ooi_detail_settings.html +#: rocky/templates/partials/elements/ooi_report_settings.html +msgid "Hide settings" +msgstr "" + +#: rocky/templates/partials/elements/ooi_list_settings_form.html +msgid "Toggle all OOI types" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_condensed_table.html +msgid "Children" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_condensed_table_row.html +#, python-format +msgid "Show details for %(object_id)s, with %(child_count)s children." +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_condensed_table_row.html +#, python-format +msgid "" +"Show tree for %(object_id)s with only children of type %(object_ooi_type)s" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_condensed_table_row.html +#, python-format +msgid "Unfold %(object_id)s with %(child_count)s children" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_table.html +msgid "go to:" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_table.html +msgid "Go to detailpage" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_table.html +msgid "detail" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_table.html +msgid "Go to tree view" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_table.html +msgid "tree" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_table.html +msgid "Go to graph view" +msgstr "" + +#: rocky/templates/partials/elements/ooi_tree_table.html +msgid "graph" +msgstr "" + +#: rocky/templates/partials/explanations.html +msgid "Clearance level inheritance" +msgstr "" + +#: rocky/templates/partials/explanations.html +msgid "Origin" +msgstr "" + +#: rocky/templates/partials/explanations.html +msgid "Show clearance level inheritance" +msgstr "" + +#: rocky/templates/partials/finding_occurrence_definition_list.html +msgid "Reproduction" +msgstr "" + +#: rocky/templates/partials/form/checkbox_group_table_form.html +msgid "Please enable plugin to start scanning." +msgstr "" + +#: rocky/templates/partials/form/field_input.html +#: rocky/templates/partials/form/field_input_checkbox.html +#: rocky/templates/partials/form/field_input_radio.html +msgid "This field is required" +msgstr "" + +#: rocky/templates/partials/form/field_input.html +msgid "Not set" +msgstr "" + +#: rocky/templates/partials/form/field_input.html +msgid "Forgot email" +msgstr "" + +#: rocky/templates/partials/form/field_input.html +msgid "Forgot password" +msgstr "" + +#: rocky/templates/partials/form/field_input_errors.html +#: rocky/templates/partials/form/form_errors.html +#: rocky/templates/partials/notifications_block.html +msgid "error" +msgstr "" + +#: rocky/templates/partials/form/field_input_errors.html +#: rocky/templates/partials/form/form_errors.html +#: rocky/templates/partials/notifications_block.html +msgid "Error" +msgstr "" + +#: rocky/templates/partials/form/field_input_help_text.html +msgid "Open explanation" +msgstr "" + +#: rocky/templates/partials/form/field_input_help_text.html +msgid "Close explanation" +msgstr "" + +#: rocky/templates/partials/form/field_input_help_text.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/two_factor/core/login.html +msgid "explanation" +msgstr "" + +#: rocky/templates/partials/form/field_input_help_text.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/two_factor/core/login.html +msgid "Explanation" +msgstr "" + +#: rocky/templates/partials/form/indemnification_add_form.html +msgid "Here, an indemnification can be given on behalf of your organization" +msgstr "" + +#: rocky/templates/partials/form/indemnification_add_form.html +msgid "" +"Before you're able to add assets to OpenKAT and to assign clearance levels, " +"you have to give indemnification on the organization and declare that you as " +"a person can be held accountable." +msgstr "" + +#: rocky/templates/partials/form/indemnification_add_form.html +msgid "Register an indemnification" +msgstr "" + +#: rocky/templates/partials/hyperlink_ooi_type.html +#, python-format +msgid "Only show objects of type %(type)s" +msgstr "" + +#: rocky/templates/partials/language-switcher.html +msgid "Select your language" +msgstr "" + +#: rocky/templates/partials/language-switcher.html +#, python-format +msgid "" +"Current language is %(current_language)s. Choose your preferred language." +msgstr "" + +#: rocky/templates/partials/list_filters.html +msgid "Hide filter options" +msgstr "" + +#: rocky/templates/partials/list_filters.html +msgid "Show filter options" +msgstr "" + +#: rocky/templates/partials/list_paginator.html +msgid "List pagination" +msgstr "" + +#: rocky/templates/partials/list_paginator.html +msgid "Previous Page" +msgstr "" + +#: rocky/templates/partials/list_paginator.html +msgid "Previous" +msgstr "" + +#: rocky/templates/partials/list_paginator.html +msgid "Five Pages Back" +msgstr "" + +#: rocky/templates/partials/list_paginator.html +#: rocky/templates/partials/pagination.html +msgid "Page" +msgstr "" + +#: rocky/templates/partials/list_paginator.html +msgid "Five Pages Forward" +msgstr "" + +#: rocky/templates/partials/list_paginator.html +msgid "Next Page" +msgstr "" + +#: rocky/templates/partials/list_paginator.html +msgid "Next" +msgstr "" + +#: rocky/templates/partials/notifications_block.html +msgid "confirmation" +msgstr "" + +#: rocky/templates/partials/notifications_block.html +msgid "Confirmation" +msgstr "" + +#: rocky/templates/partials/ooi_detail_related_object.html +msgid "Related objects" +msgstr "" + +#: rocky/templates/partials/ooi_detail_related_object.html +msgid "No related objects added to " +msgstr "" + +#: rocky/templates/partials/ooi_detail_related_object.html +msgid "Use the button below to add a related object. " +msgstr "" + +#: rocky/templates/partials/ooi_detail_toolbar.html +msgid "Mute Finding" +msgstr "" + +#: rocky/templates/partials/ooi_detail_toolbar.html +#, python-format +msgid "Edit %(display_type)s" +msgstr "" + +#: rocky/templates/partials/ooi_head.html +msgid "An overview of" +msgstr "" + +#: rocky/templates/partials/ooi_head.html +msgid "object type" +msgstr "" + +#: rocky/templates/partials/ooi_head.html +msgid "" +"This shows general information and its related objects. It also gives the " +"possibility to add additional related objects, or to scan for them." +msgstr "" + +#: rocky/templates/partials/ooi_list_toolbar.html +msgid "Scan for objects" +msgstr "" + +#: rocky/templates/partials/ooi_list_toolbar.html +#: rocky/templates/upload_csv.html rocky/views/upload_csv.py +msgid "Upload CSV" +msgstr "" + +#: rocky/templates/partials/ooi_list_toolbar.html +msgid "Export" +msgstr "" + +#: rocky/templates/partials/ooi_list_toolbar.html +msgid "Download as JSON" +msgstr "" + +#: rocky/templates/partials/ooi_list_toolbar.html +msgid "Download as CSV" +msgstr "" + +#: rocky/templates/partials/ooi_report_findings_block.html +#, python-format +msgid "%(total)s findings on %(name)s" +msgstr "" + +#: rocky/templates/partials/ooi_report_findings_block_table.html +#, python-format +msgid "Findings for %(type)s %(name)s on %(observed_at)s:" +msgstr "" + +#: rocky/templates/partials/ooi_report_findings_block_table.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Risk level" +msgstr "" + +#: rocky/templates/partials/ooi_report_findings_block_table.html +msgid "Open finding details" +msgstr "" + +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +#, python-format +msgid "Details of %(object_id)s" +msgstr "" + +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "" +"The severity of this findingtype has not (yet) been determined by the data " +"source. This situation requires manual investigation of the severity." +msgstr "" + +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +#: rocky/templates/partials/ooi_report_severity_totals_table.html +msgid "Total occurrences" +msgstr "" + +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Occurrence" +msgstr "" + +#: rocky/templates/partials/ooi_report_severity_totals_table.html +msgid "Unique" +msgstr "" + +#: rocky/templates/partials/ooi_tree_toolbar_bottom.html +msgid "Tree - dense view" +msgstr "" + +#: rocky/templates/partials/ooi_tree_toolbar_bottom.html +msgid "Tree - table view" +msgstr "" + +#: rocky/templates/partials/organization_member_list_filters.html +msgid "Shown status types" +msgstr "" + +#: rocky/templates/partials/organization_member_list_filters.html +msgid "Blocked status" +msgstr "" + +#: rocky/templates/partials/organization_member_list_filters.html +msgid "Update List" +msgstr "" + +#: rocky/templates/partials/organization_properties_table.html +msgid "Organization name" +msgstr "" + +#: rocky/templates/partials/organization_properties_table.html +msgid "Organization code" +msgstr "" + +#: rocky/templates/partials/organizations_menu_dropdown.html +msgid "Select organization" +msgstr "" + +#: rocky/templates/partials/organizations_menu_dropdown.html +msgid "All organizations" +msgstr "" + +#: rocky/templates/partials/page-meta.html +msgid "Logged in as" +msgstr "" + +#: rocky/templates/partials/pagination.html +msgid "first" +msgstr "" + +#: rocky/templates/partials/pagination.html +msgid "previous" +msgstr "" + +#: rocky/templates/partials/pagination.html +msgid "next" +msgstr "" + +#: rocky/templates/partials/pagination.html +msgid "last" +msgstr "" + +#: rocky/templates/partials/secondary-menu.html +msgid "User navigation" +msgstr "" + +#: rocky/templates/partials/secondary-menu.html +msgid "Close user navigation" +msgstr "" + +#: rocky/templates/partials/secondary-menu.html +msgid "My organizations" +msgstr "" + +#: rocky/templates/partials/secondary-menu.html +msgid "Profile" +msgstr "" + +#: rocky/templates/partials/skip-to-content.html +msgid "Go to content" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "Hide filters" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "Show filters" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "From" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "To" +msgstr "" + +#: rocky/templates/partials/task_history.html +msgid "Select status" +msgstr "" + +#: rocky/templates/partials/task_history.html +msgid "Success" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "Failure" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "Search" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/task_filter.html +msgid "Search by object name" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "No tasks found for this object." +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Created date" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Yielded objects" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/boefje_task_detail.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Download meta and raw data" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Reschedule" +msgstr "" + +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Download task data" +msgstr "" + +#: rocky/templates/scan.html +msgid "Boefjes overview:" +msgstr "" + +#: rocky/templates/scan_profiles/scan_profile_detail.html +#, python-format +msgid "" +"\n" +" This means that this object will be scanned by Boefjes with " +"scan level\n" +" %(scan_level)s and lower. Setting the clearance level from " +"“declared”\n" +" to “inherit” means that this object will inherit its level " +"from neighbouring\n" +" objects. This means that the clearance level might stay the " +"same, increase,\n" +" or decrease depending on other declared clearance levels. " +"Clearance levels\n" +" of objects that inherit from this clearance level will also be " +"recalculated.\n" +" " +msgstr "" + +#: rocky/templates/scan_profiles/scan_profile_detail.html +msgid "Set clearance level to inherit" +msgstr "" + +#: rocky/templates/scan_profiles/scan_profile_detail.html +msgid "" +"\n" +" This object has a clearance level of \"L0\". This means that " +"this object will not be scanned by any Boefje until that\n" +" Boefje is run manually for this object again. Objects with a " +"clearance level higher than \"L0\" will be scanned automatically by Boefjes " +"with\n" +" corresponding scan levels.\n" +" " +msgstr "" + +#: rocky/templates/scan_profiles/scan_profile_reset.html +msgid "Set clearance level for:" +msgstr "" + +#: rocky/templates/scan_profiles/scan_profile_reset.html +msgid "Setting the scan level from \\" +msgstr "" + +#: rocky/templates/scan_profiles/scan_profile_reset.html +msgid "You are about to set the clearance level from \\" +msgstr "" + +#: rocky/templates/scan_profiles/scan_profile_reset.html +msgid "Yes, set to inherit" +msgstr "" + +#: rocky/templates/tasks/boefje_task_detail.html +msgid "" +"An overview of the boefje task, the input OOI and the RAW data it generated." +msgstr "" + +#: rocky/templates/tasks/boefje_task_detail.html +msgid "Download meta data" +msgstr "" + +#: rocky/templates/tasks/boefje_task_detail.html +msgid "Input object" +msgstr "" + +#: rocky/templates/tasks/boefjes.html +msgid "There are no tasks for boefjes" +msgstr "" + +#: rocky/templates/tasks/boefjes.html +msgid "List of tasks for boefjes" +msgstr "" + +#: rocky/templates/tasks/normalizers.html +msgid "There are no tasks for normalizers" +msgstr "" + +#: rocky/templates/tasks/normalizers.html +msgid "List of tasks for normalizers" +msgstr "" + +#: rocky/templates/tasks/partials/boefje_task_history.html +msgid "No scans found for this object." +msgstr "" + +#: rocky/templates/tasks/partials/boefje_task_history.html +msgid "Input Object" +msgstr "" + +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Normalizer" +msgstr "" + +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Boefje input OOI" +msgstr "" + +#: rocky/templates/tasks/partials/tab_navigation.html +msgid "List of tasks" +msgstr "" + +#: rocky/templates/tasks/partials/task_filter.html +msgid "all" +msgstr "" + +#: rocky/templates/tasks/partials/task_filter.html +msgid "Pending" +msgstr "" + +#: rocky/templates/tasks/partials/task_filter.html +msgid "Queued" +msgstr "" + +#: rocky/templates/tasks/partials/task_filter.html +msgid "Dispatched" +msgstr "" + +#: rocky/templates/tasks/partials/task_filter.html +msgid "Completed" +msgstr "" + +#: rocky/templates/two_factor/_wizard_actions.html +msgid "Log in" +msgstr "" + +#: rocky/templates/two_factor/_wizard_actions.html +msgid "Authenticate" +msgstr "" + +#: rocky/templates/two_factor/core/backup_tokens.html +#: rocky/templates/two_factor/profile/profile.html +msgid "Backup Tokens" +msgstr "" + +#: rocky/templates/two_factor/core/backup_tokens.html +msgid "" +"Backup tokens can be used when your primary and backup phone numbers aren't " +"available. The backup tokens below can be used for login verification. If " +"you've used up all your backup tokens, you can generate a new set of backup " +"tokens. Only the backup tokens shown below will be valid." +msgstr "" + +#: rocky/templates/two_factor/core/backup_tokens.html +msgid "Print these tokens and keep them somewhere safe." +msgstr "" + +#: rocky/templates/two_factor/core/backup_tokens.html +msgid "You don't have any backup codes yet." +msgstr "" + +#: rocky/templates/two_factor/core/backup_tokens.html +#: rocky/templates/two_factor/core/setup_complete.html +msgid "Back to Account Security" +msgstr "" + +#: rocky/templates/two_factor/core/backup_tokens.html +msgid "Generate Tokens" +msgstr "" + +#: rocky/templates/two_factor/core/login.html +msgid "You are logged in." +msgstr "" + +#: rocky/templates/two_factor/core/login.html +msgid "Two factor authentication is enabled for your account." +msgstr "" + +#: rocky/templates/two_factor/core/login.html +msgid "" +"Two factor authentication is not enabled for your account. Enable it to " +"continue." +msgstr "" + +#: rocky/templates/two_factor/core/login.html +msgid "Setup two factor authentication" +msgstr "" + +#: rocky/templates/two_factor/core/login.html +msgid "Credentials" +msgstr "" + +#: rocky/templates/two_factor/core/login.html +msgid "" +"Use this form for entering backup tokens for logging in. These tokens have " +"been generated for you to print and keep safe. Please enter one of these " +"backup tokens to login to your account." +msgstr "" + +#: rocky/templates/two_factor/core/login.html +msgid "As a last resort, you can use a backup token:" +msgstr "" + +#: rocky/templates/two_factor/core/login.html +msgid "Use Backup Token" +msgstr "" + +#: rocky/templates/two_factor/core/otp_required.html +msgid "Permission Denied" +msgstr "" + +#: rocky/templates/two_factor/core/otp_required.html +msgid "" +"The page you requested, enforces users to verify using two-factor " +"authentication for security reasons. You need to enable these security " +"features in order to access this page." +msgstr "" + +#: rocky/templates/two_factor/core/otp_required.html +#: rocky/templates/two_factor/profile/profile.html +msgid "" +"Two-factor authentication is not enabled for your account. Enable two-factor " +"authentication for enhanced account security." +msgstr "" + +#: rocky/templates/two_factor/core/otp_required.html +#: rocky/templates/two_factor/core/setup.html +#: rocky/templates/two_factor/core/setup_complete.html +#: rocky/templates/two_factor/profile/profile.html +msgid "Enable Two-Factor Authentication" +msgstr "" + +#: rocky/templates/two_factor/core/phone_register.html +msgid "Add Backup Phone" +msgstr "" + +#: rocky/templates/two_factor/core/phone_register.html +msgid "" +"You'll be adding a backup phone number to your account. This number will be " +"used if your primary method of registration is not available." +msgstr "" + +#: rocky/templates/two_factor/core/phone_register.html +msgid "" +"We've sent a token to your phone number. Please enter the token you've " +"received." +msgstr "" + +#: rocky/templates/two_factor/core/setup.html +msgid "" +"To start using a token generator, please use your smartphone to scan the QR " +"code below or use the setup key. For example, use GoogleAuthenticator. Then, " +"enter the token generated by the app." +msgstr "" + +#: rocky/templates/two_factor/core/setup.html +msgid "QR code" +msgstr "" + +#: rocky/templates/two_factor/core/setup.html +msgid "Setup key" +msgstr "" + +#: rocky/templates/two_factor/core/setup.html +msgid "" +"The secret key is a 32 characters representation of the QR code. There are 2 " +"options to setup the two factor authtentication. You can scan the QR code " +"above or you can insert this key using the secret key option of the " +"authenticator app." +msgstr "" + +#: rocky/templates/two_factor/core/setup_complete.html +msgid "Congratulations, you've successfully enabled two-factor authentication." +msgstr "" + +#: rocky/templates/two_factor/core/setup_complete.html +msgid "Start using OpenKAT" +msgstr "" + +#: rocky/templates/two_factor/core/setup_complete.html +msgid "" +"However, it might happen that you don't have access to your primary token " +"device. To enable account recovery, add a phone number." +msgstr "" + +#: rocky/templates/two_factor/core/setup_complete.html +#: rocky/templates/two_factor/profile/profile.html +msgid "Add Phone Number" +msgstr "" + +#: rocky/templates/two_factor/profile/disable.html +msgid "Disable Two-factor Authentication" +msgstr "" + +#: rocky/templates/two_factor/profile/disable.html +msgid "" +"You are about to disable two-factor authentication. This weakens your " +"account security, are you sure?" +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "Account Security" +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "Tokens will be generated by your token generator." +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +#, python-format +msgid "Primary method: %(primary)s" +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "Tokens will be generated by your YubiKey." +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "Backup Phone Numbers" +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "" +"If your primary method is not available, we are able to send backup tokens " +"to the phone numbers listed below." +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "Unregister" +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "" +"If you don't have any device with you, you can access your account using " +"backup tokens." +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +#, python-format +msgid "You have only one backup token remaining." +msgid_plural "You have %(counter)s backup tokens remaining." +msgstr[0] "" +msgstr[1] "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "Show Codes" +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "Disable Two-Factor Authentication" +msgstr "" + +#: rocky/templates/two_factor/profile/profile.html +msgid "" +"However we strongly discourage you to do so, you can also disable two-factor " +"authentication for your account." +msgstr "" + +#: rocky/templates/two_factor/twilio/sms_message.html +#, python-format +msgid "Your OTP token is %(token)s" +msgstr "" + +#: rocky/templates/upload_csv.html +msgid "Automate the creation of multiple objects by uploading a CSV file." +msgstr "" + +#: rocky/templates/upload_raw.html +msgid "Automate the creation of multiple objects by uploading a raw file." +msgstr "" + +#: rocky/templates/upload_raw.html rocky/views/upload_raw.py +msgid "Upload raw" +msgstr "" + +#: rocky/views/bytes_raw.py +msgid "Getting raw data failed." +msgstr "" + +#: rocky/views/finding_add.py +msgid "Add Finding" +msgstr "" + +#: rocky/views/health.py +msgid "Could not connect to Bytes. Service is possibly down" +msgstr "" + +#: rocky/views/health.py +msgid "Could not connect to Octopoes. Service is possibly down" +msgstr "" + +#: rocky/views/health.py +msgid "Could not connect to Scheduler. Service is possibly down" +msgstr "" + +#: rocky/views/health.py +msgid "Rocky will not function properly. Not all services are healthy." +msgstr "" + +#: rocky/views/health.py +msgid "Beautified" +msgstr "" + +#: rocky/views/indemnification_add.py +msgid "Indemnification successfully set." +msgstr "" + +#: rocky/views/mixins.py +msgid "Can not parse date, falling back to show current date." +msgstr "" + +#: rocky/views/ooi_add.py +msgid "Type select" +msgstr "" + +#: rocky/views/ooi_add.py +#, python-format +msgid "Add %(ooi_type)s" +msgstr "" + +#: rocky/views/ooi_detail.py +msgid "Only Question OOIs can be answered." +msgstr "" + +#: rocky/views/ooi_detail_related_object.py +msgid " (as " +msgstr "" + +#: rocky/views/ooi_findings.py +msgid "Object findings" +msgstr "" + +#: rocky/views/ooi_list.py +msgid "No OOIs selected." +msgstr "" + +#: rocky/views/ooi_list.py +msgid "Unknown action." +msgstr "" + +#: rocky/views/ooi_list.py +#, python-format +msgid "" +"Could not raise clearance levels to L%s. Indemnification not present at " +"organization %s." +msgstr "" + +#: rocky/views/ooi_list.py +#, python-format +msgid "" +"Could not raise clearance level to L%s. You were trusted a clearance level " +"of L%s. Contact your administrator to receive a higher clearance." +msgstr "" + +#: rocky/views/ooi_list.py +#, python-format +msgid "" +"Could not raise clearance level to L%s. You acknowledged a clearance level " +"of L%s. Please accept the clearance level below to proceed." +msgstr "" + +#: rocky/views/ooi_list.py +msgid "An error occurred while saving clearance levels." +msgstr "" + +#: rocky/views/ooi_list.py +msgid "One of the OOI's doesn't exist" +msgstr "" + +#: rocky/views/ooi_list.py +#, python-format +msgid "Successfully set scan profile to %s for %d oois." +msgstr "" + +#: rocky/views/ooi_list.py +msgid "An error occurred while setting clearance levels to inherit." +msgstr "" + +#: rocky/views/ooi_list.py +msgid "" +"An error occurred while setting clearance levels to inherit: one of the OOIs " +"doesn't exist." +msgstr "" + +#: rocky/views/ooi_list.py +#, python-format +msgid "Successfully set %d ooi(s) clearance level to inherit." +msgstr "" + +#: rocky/views/ooi_list.py +msgid "An error occurred while deleting oois." +msgstr "" + +#: rocky/views/ooi_list.py +msgid "An error occurred while deleting oois: one of the OOIs doesn't exist." +msgstr "" + +#: rocky/views/ooi_list.py +#, python-format +msgid "" +"Successfully deleted %d ooi(s). Note: Bits can recreate objects " +"automatically." +msgstr "" + +#: rocky/views/ooi_mute.py +msgid "Please select at least one finding." +msgstr "" + +#: rocky/views/ooi_mute.py +msgid "Finding(s) successfully unmuted." +msgstr "" + +#: rocky/views/ooi_mute.py +msgid "Finding(s) successfully muted." +msgstr "" + +#: rocky/views/ooi_report.py +msgid "You can't generate a report for an OOI on a date in the future." +msgstr "" + +#: rocky/views/ooi_report.py +msgid "Findings report" +msgstr "" + +#: rocky/views/ooi_report.py +msgid "Generating report failed. See Keiko logs for more information." +msgstr "" + +#: rocky/views/ooi_report.py +msgid "Timeout reached generating report. See Keiko logs for more information." +msgstr "" + +#: rocky/views/ooi_tree.py +msgid "Tree Visualisation" +msgstr "" + +#: rocky/views/ooi_tree.py +msgid "Graph Visualisation" +msgstr "" + +#: rocky/views/ooi_view.py +msgid "OOI types: " +msgstr "" + +#: rocky/views/ooi_view.py +msgid "Clearance level: " +msgstr "" + +#: rocky/views/ooi_view.py +msgid "Clearance type: " +msgstr "" + +#: rocky/views/organization_add.py +msgid "Organization added successfully." +msgstr "" + +#: rocky/views/organization_add.py +msgid "You are not allowed to add organizations." +msgstr "" + +#: rocky/views/organization_edit.py +#, python-format +msgid "Organization %s successfully updated." +msgstr "" + +#: rocky/views/organization_member_add.py rocky/views/upload_csv.py +msgid "Add column titles. Followed by each object on a new line." +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "The columns are: " +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "Clearance levels should be between -1 and 4." +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "Account type can be one of: " +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "Add Account Type" +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "Member added successfully." +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "Add Member" +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "The csv file is missing required columns" +msgstr "" + +#: rocky/views/organization_member_add.py +#, python-brace-format +msgid "Invalid account type: '{account_type}'" +msgstr "" + +#: rocky/views/organization_member_add.py +#, python-brace-format +msgid "Invalid data for: '{email}'" +msgstr "" + +#: rocky/views/organization_member_add.py +#, python-brace-format +msgid "Invalid email address: '{email}'" +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "Successfully processed users from csv." +msgstr "" + +#: rocky/views/organization_member_add.py +msgid "Error parsing the csv file. Please verify its contents." +msgstr "" + +#: rocky/views/organization_member_edit.py +#, python-format +msgid "Member %s successfully updated." +msgstr "" + +#: rocky/views/organization_member_edit.py +#, python-format +msgid "" +"The updated trusted clearance level of L%s is lower then the member's " +"acknowledged clearance level of L%s. This member only has clearance for " +"level L%s. For this reason the acknowledged clearance level has been set at " +"the same level as trusted clearance level." +msgstr "" + +#: rocky/views/organization_member_edit.py +msgid "" +"You have trusted this member with a higher trusted level than member " +"acknowledged. Member must first accept this level to use it." +msgstr "" + +#: rocky/views/organization_member_list.py +msgid "Not blocked" +msgstr "" + +#: rocky/views/organization_member_list.py +#, python-format +msgid "Blocked member %s successfully." +msgstr "" + +#: rocky/views/organization_member_list.py +#, python-format +msgid "Unblocked member %s successfully." +msgstr "" + +#: rocky/views/organization_settings.py +#, python-brace-format +msgid "Recalculated {number_of_bits} bits. Duration: {duration}" +msgstr "" + +#: rocky/views/scan_profile.py +#, python-format +msgid "" +"Could not raise clearance level of %s to L%s. " +"Indemnification not present at organization %s." +msgstr "" + +#: rocky/views/scan_profile.py +#, python-format +msgid "" +"Could not raise clearance level of %s to L%s. You acknowledged a clearance " +"level of L%s. Please accept the clearance level below to proceed." +msgstr "" + +#: rocky/views/scan_profile.py +msgid "Choose a valid level" +msgstr "" + +#: rocky/views/scan_profile.py +#, python-brace-format +msgid "Can not reset scan level. Scan level of {ooi_name} not declared" +msgstr "" + +#: rocky/views/scan_profile.py +msgid "Reset" +msgstr "" + +#: rocky/views/tasks.py +msgid "Task details not found." +msgstr "" + +#: rocky/views/tasks.py +msgid "Fetching tasks failed: no connection with scheduler" +msgstr "" + +#: rocky/views/upload_csv.py +msgid "" +"For URL object type, a column 'raw' with URL values is required, starting " +"with http:// or https://, optionally a second column 'network' is supported " +msgstr "" + +#: rocky/views/upload_csv.py +msgid "" +"For Hostname object type, a column with 'name' values is required, " +"optionally a second column 'network' is supported " +msgstr "" + +#: rocky/views/upload_csv.py +msgid "" +"For IPAddressV4 and IPAddressV6 object types, a column of 'address' is " +"required, optionally a second column 'network' is supported " +msgstr "" + +#: rocky/views/upload_csv.py +msgid "Object(s) could not be created for row number(s): " +msgstr "" + +#: rocky/views/upload_csv.py +msgid "Object(s) successfully added." +msgstr "" + +#: rocky/views/upload_raw.py +#, python-format +msgid "Raw file could not be uploaded to Bytes: status code %s" +msgstr "" + +#: rocky/views/upload_raw.py +msgid "Raw file successfully added." +msgstr "" diff --git a/rocky/rocky/locale/it/LC_MESSAGES/django.po b/rocky/rocky/locale/it/LC_MESSAGES/django.po index 73a832277e9..aad42e42822 100644 --- a/rocky/rocky/locale/it/LC_MESSAGES/django.po +++ b/rocky/rocky/locale/it/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-17 13:44+0000\n" +"POT-Creation-Date: 2023-11-09 14:01+0000\n" "PO-Revision-Date: 2023-10-11 21:00+0000\n" "Last-Translator: Brenno de Winter \n" "Language-Team: Italian , 2023. # Darwinkel , 2023. +# jan klopper , 2023. +# LibreTranslate , 2023. +# Weblate Translation Memory , 2023. +# 跨性别 , 2023. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-17 13:44+0000\n" -"PO-Revision-Date: 2023-10-11 21:00+0000\n" -"Last-Translator: Darwinkel \n" +"POT-Creation-Date: 2023-11-09 14:01+0000\n" +"PO-Revision-Date: 2023-11-12 05:03+0000\n" +"Last-Translator: 跨性别 \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -14,7 +18,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.1-dev\n" +"X-Generator: Weblate 5.2-dev\n" #: account/admin.py msgid "Permissions" @@ -22,7 +26,7 @@ msgstr "Toestemmingen" #: account/admin.py msgid "Important dates" -msgstr "Belangrijke data" +msgstr "Belangrijke datums" #: account/forms/account_setup.py katalogus/templates/katalogus_settings.html #: katalogus/templates/plugin_settings_list.html @@ -35,11 +39,11 @@ msgstr "Naam" #: account/forms/account_setup.py msgid "This name we will use to communicate with you." -msgstr "Dit naam wordt gebruikt om met u te communiceren." +msgstr "Deze naam wordt gebruikt om met u te communiceren." #: account/forms/account_setup.py msgid "What do we call you?" -msgstr "Hoe spreken we u aan?" +msgstr "Hoe noemen wij u?" #: account/forms/account_setup.py msgid "Email" @@ -55,11 +59,11 @@ msgstr "Wachtwoord" #: account/forms/account_setup.py msgid "Choose your super secret password" -msgstr "Kies uw wachtwoord" +msgstr "Kies uw supergeheime wachtwoord" #: account/forms/account_setup.py msgid "Choose another email." -msgstr "Kies een ander emailadres." +msgstr "Kies een ander e-mailadres." #: account/forms/account_setup.py tools/forms/settings.py msgid "--- Please select one of the available options ----" @@ -67,11 +71,11 @@ msgstr "--- Selecteer één van de beschikbare opties ---" #: account/forms/account_setup.py msgid "Account Type" -msgstr "Accounttype" +msgstr "Account Type" #: account/forms/account_setup.py msgid "Every member of OpenKAT must be part of an account type." -msgstr "Elke gebruiker van OpenKAT moet deel uitmaken van een acounttype." +msgstr "Elke gebruiker van OpenKAT moet deel uitmaken van een accounttype." #: account/forms/account_setup.py msgid "Please select an account type to proceed." @@ -80,15 +84,15 @@ msgstr "Selecteer een account type om door te gaan." #: account/forms/account_setup.py #: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html msgid "Trusted clearance level" -msgstr "Zet vrijwaringsniveau" +msgstr "Vertrouwd goedkeuringsniveau" #: account/forms/account_setup.py msgid "Select a clearance level you trust this member with." -msgstr "Selecteer een vrijwaring niveau waarmee u dit lid vertrouwt." +msgstr "Selecteer een toegangsniveau dat u aan dit lid toevertrouwt." #: account/forms/account_setup.py onboarding/forms.py tools/forms/ooi.py msgid "Please select a clearance level to proceed." -msgstr "Kies een vrijwaringsniveau om verder te gaan." +msgstr "Kies een toegangsniveau om verder te gaan." #: account/forms/account_setup.py msgid "The name of the organization." @@ -101,7 +105,7 @@ msgstr "explanation-organization-name" #: account/forms/account_setup.py #, python-brace-format msgid "A unique code of {code_length} characters." -msgstr "Een unieke code of {code_length} tekens." +msgstr "Een unieke code van {code_length} tekens." #: account/forms/account_setup.py msgid "explanation-organization-code" @@ -359,7 +363,7 @@ msgstr "U heeft momenteel toestemming geaccepteerd tot niveau " #: account/templates/account_detail.html msgid "Explanation OOI Clearance" -msgstr "Uitleg OOI vrijwaring" +msgstr "Uitleg OOI vrijwaringnivo" #: account/templates/account_detail.html msgid "" @@ -384,7 +388,7 @@ msgstr "" #: account/templates/account_detail.html msgid "Explanation OOI clearance" -msgstr "Uitleg OOI vrijwaring" +msgstr "Uitleg OOI vrijwaringsnivo" #: account/templates/account_detail.html #, python-format @@ -596,7 +600,7 @@ msgstr "" #: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html #: fmea/templates/fmea/fmea_failure_mode_detail.html msgid "Failure mode" -msgstr "Foutmodus" +msgstr "Faalmodus" #: fmea/forms.py fmea/templates/fmea/fmea_failure_mode_detail.html #: katalogus/templates/boefje_detail.html @@ -613,7 +617,7 @@ msgstr "Frequentieniveau" #: fmea/forms.py msgid "Detectability Level" -msgstr "Detecteerbaarheid" +msgstr "Detecteerbaarheidsnivo" #: fmea/forms.py msgid "Effect(s)" @@ -715,7 +719,7 @@ msgstr "Effect" #: fmea/forms.py msgid "Severity Level" -msgstr "Niveau" +msgstr "Beveilgingsnivo" #: fmea/forms.py msgid "Name a possible effect of any type of failure mode that can occur." @@ -748,7 +752,7 @@ msgstr "Dit effect bestaat al." #: fmea/forms.py msgid "Choose a severity level." -msgstr "Kies een scanniveau" +msgstr "Kies een ernstigheidsniveau." #: fmea/models.py msgid "Finances" @@ -768,7 +772,7 @@ msgstr "Onderzoek & Ontwikkeling" #: fmea/models.py msgid "Administration" -msgstr "Vrijwaring" +msgstr "Administratie" #: fmea/models.py reports/templates/summary/service_health.html #: rocky/templates/footer.html rocky/templates/health.html @@ -853,7 +857,7 @@ msgstr "" #: fmea/models.py fmea/templates/fmea/fmea_failure_mode_list.html #: fmea/views/view_helpers.py msgid "Failure modes" -msgstr "Foutmodus" +msgstr "Faalmodi" #: fmea/models.py fmea/views/view_helpers.py msgid "Failure Mode Affected Objects" @@ -874,7 +878,7 @@ msgstr "Faal modus getroffen objecten tabel:" #: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html #: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html msgid "Affected Object" -msgstr "Voeg object toe" +msgstr "Betrokken object" #: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html #: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html @@ -958,11 +962,11 @@ msgstr "Maak aan faal modus getroffen objecten" #: fmea/templates/fmea/fmea_failure_mode_departments.html msgid "Departments failure modes" -msgstr "Beschrijf het type van de bevinding." +msgstr "Afdeling faalmodi" #: fmea/templates/fmea/fmea_failure_mode_departments.html msgid "Failure modes and affected departments table:" -msgstr "Selecteer de objecten uit de graaf" +msgstr "Faalmodi en geraakte afdelingentabel:" #: fmea/templates/fmea/fmea_failure_mode_departments.html #: fmea/templates/fmea/fmea_failure_mode_list.html @@ -971,7 +975,7 @@ msgstr "Faal modus" #: fmea/templates/fmea/fmea_failure_mode_departments.html msgid "Affected Departments" -msgstr "Betrokken afdeling" +msgstr "Betrokken afdelingen" #: fmea/templates/fmea/fmea_failure_mode_departments.html msgid "Nothing found." @@ -996,7 +1000,7 @@ msgstr "Frequency niveau" #: fmea/templates/fmea/fmea_failure_mode_detail.html msgid "Detectability level" -msgstr "Detecteerbaarheid" +msgstr "Detecteerbaarheidsniveau" #: fmea/templates/fmea/fmea_failure_mode_detail.html msgid "" @@ -1019,11 +1023,11 @@ msgstr[1] "" #: fmea/templates/fmea/fmea_failure_mode_effect_detail.html #: fmea/templates/fmea/fmea_failure_mode_effect_list.html msgid "Failure mode effect" -msgstr "Bestand kon niet gedecodeerd worden" +msgstr "Faalmodus effect" #: fmea/templates/fmea/fmea_failure_mode_effect_detail.html msgid "Failure mode effect properties" -msgstr "Bestand kon niet gedecodeerd worden" +msgstr "Faalmodus effect eigenschappen" #: fmea/templates/fmea/fmea_failure_mode_effect_detail.html #: rocky/templates/crisis_room/crisis_room_findings_block.html @@ -1033,7 +1037,7 @@ msgstr "Bestand kon niet gedecodeerd worden" #: rocky/templates/organizations/organization_crisis_room.html #: rocky/templates/partials/ooi_report_severity_totals_table.html msgid "Severity" -msgstr "Niveau" +msgstr "Ernst" #: fmea/templates/fmea/fmea_failure_mode_effect_form.html msgid "FMEA effect and severity" @@ -1045,24 +1049,24 @@ msgstr "FMEA effect" #: fmea/templates/fmea/fmea_failure_mode_effect_list.html msgid "Failure mode effects table:" -msgstr "Bestand kon niet gedecodeerd worden" +msgstr "Faalmodus effecten tabel:" #: fmea/templates/fmea/fmea_failure_mode_effect_list.html msgid "Severity level" -msgstr "Niveau" +msgstr "Ernstnivo" #: fmea/templates/fmea/fmea_failure_mode_effect_list.html msgid "No failure mode effect yet defined." -msgstr "Bestand kon niet gedecodeerd worden" +msgstr "Nog geen faalmodus gedefinieerd." #: fmea/templates/fmea/fmea_failure_mode_effect_list.html msgid "Create a failure mode effect" -msgstr "Omschrijf uw bevinding" +msgstr "Voeg een faalmodus effect toe" #: fmea/templates/fmea/fmea_failure_mode_form.html #: fmea/templates/fmea/fmea_index.html msgid "Create a new failure mode" -msgstr "Beschrijf hoe dit type bevinding kan worden opgelost" +msgstr "Creëer een nieuwe faalmodus" #: fmea/templates/fmea/fmea_failure_mode_form.html msgid "Failure mode and effects" @@ -1070,40 +1074,42 @@ msgstr "Foutmodus en gevolgen" #: fmea/templates/fmea/fmea_failure_mode_form.html msgid "No failure mode effects created." -msgstr "Bestand kon niet gedecodeerd worden" +msgstr "Geen faalmodus effecten gecreëerd." #: fmea/templates/fmea/fmea_failure_mode_form.html msgid "" "First create failure mode effects which can be added later to a failure mode." msgstr "" -"Maak eerst foutmodus-effecten die later aan een foutmodus kunnen worden " +"Maak eerst faalmodus-effecten die later aan een faalmodus kunnen worden " "toegevoegd." #: fmea/templates/fmea/fmea_failure_mode_form.html #: fmea/templates/fmea/fmea_index.html msgid "Create failure mode effects" -msgstr "Foutmodus-effecten maken" +msgstr "Faalmodus-effecten maken" #: fmea/templates/fmea/fmea_failure_mode_list.html msgid "Failure mode table:" -msgstr "Foutmodustabel:" +msgstr "Faalmodustabel:" #: fmea/templates/fmea/fmea_failure_mode_list.html msgid "Risk Class" -msgstr "Risico klasse" +msgstr "Risicoklasse" #: fmea/templates/fmea/fmea_failure_mode_list.html #: rocky/templates/crisis_room/crisis_room_findings_block.html #: rocky/templates/findings/finding_list.html #: rocky/templates/organizations/organization_crisis_room.html #: rocky/templates/partials/ooi_report_findings_block_table.html -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html msgid "Details" msgstr "Details" #: fmea/templates/fmea/fmea_failure_mode_list.html msgid "Sluit details" -msgstr "Sluit details" +msgstr "Details sluiten" #: fmea/templates/fmea/fmea_failure_mode_list.html msgid "Description:" @@ -1347,12 +1353,12 @@ msgstr "" #: katalogus/templates/boefje_detail.html msgid "Scan level" -msgstr "Vrijwaringsniveau" +msgstr "Scannivo" #: katalogus/templates/boefje_detail.html #: katalogus/templates/normalizer_detail.html msgid "Consumes" -msgstr "Consumeren" +msgstr "Consumeert" #: katalogus/templates/boefje_detail.html #, python-format @@ -1488,12 +1494,12 @@ msgid_plural "" " " msgstr[0] "" "\n" -" Plug-in beschikbaar\n" +" Plug-in beschikbaar\n" " " msgstr[1] "" "\n" -" Plug-ins beschikbaar\n" -" " +" Plug-ins beschikbaar\n" +" " #: katalogus/templates/katalogus_settings.html msgid "KAT-alogus Settings" @@ -1536,7 +1542,7 @@ msgstr "Waarde" #: katalogus/templates/normalizer_detail.html #, python-format msgid "%(plugin_name)s is able to process the following mime types:" -msgstr "" +msgstr "%(plugin_name)s is in staat de volgende mime-types te verwerken:" #: katalogus/templates/partials/boefje_tile.html msgid "Scan level:" @@ -1563,7 +1569,7 @@ msgstr "Uitschakelen" #: katalogus/templates/partials/enable_disable_plugin.html msgid "You don't have permission to enable " -msgstr "U heeft geen toestemming om in te schakelen" +msgstr "U heeft geen toestemming om in te schakelen. " #: katalogus/templates/partials/katalogus_filter.html msgid "Filter plugins" @@ -1626,17 +1632,6 @@ msgstr "" "lagere vrijwaringssniveau." #: katalogus/templates/partials/objects_to_scan.html -#, fuzzy -#| msgid "" -#| "\n" -#| " Warning scan level:\n" -#| " Scanning OOI's with a lower clearance level will result in " -#| "OpenKAT increasing the clearance level on that OOI,\n" -#| " not only for this scan but from now on out, until it manually " -#| "gets set to something else again.\n" -#| " This means that all other enabled Boefjes will use this higher " -#| "clearance level aswel.\n" -#| " " msgid "" "Warning scan level: Scanning OOI's with a lower clearance level " "will result in OpenKAT increasing the clearance level on that OOI, not only " @@ -1644,54 +1639,34 @@ msgid "" "else again. This means that all other enabled Boefjes will use this higher " "clearance level aswel." msgstr "" -"\n" -" Waarschuwingsscanniveau:\n" +"Waarschuwing scanniveau:\n" " Het scannen van OOI's met een lager vrijgaveniveau leidt ertoe dat " "OpenKAT het vrijgaveniveau op die OOI verhoogt,\n" " niet alleen voor deze scan maar vanaf nu, totdat het handmatig " "weer op iets anders wordt ingesteld.\n" " Dit betekent dat alle andere ingeschakelde Boefjes ook dit hogere " -"vrijgaveniveau zullen gebruiken.\n" -" " +"vrijgaveniveau zullen gebruiken." #: katalogus/templates/partials/objects_to_scan.html -#, fuzzy, python-format -#| msgid "" -#| "\n" -#| " You currently don't have any objects that meet the scan level " -#| "of %(name)s.\n" -#| " Add objects with a complying clearance level, or alter the " -#| "clearance level of existing objects.\n" -#| " " +#, python-format msgid "" "You currently don't have any objects that meet the scan level of %(name)s. " "Add objects with a complying clearance level, or alter the clearance level " "of existing objects." msgstr "" -"\n" -" U heeft momenteel geen objecten die voldoen aan het scanniveau " -"van %(name)s. \n" -" Voeg objecten toe met een voldoend vrijwaringsniveau, of " -"wijzig het vrijwaringsniveau van bestaande objecten.\n" -" " +"U heeft momenteel geen objecten die voldoen aan het scanniveau van %(name)s. " +"Voeg objecten toe met een voldoend vrijwaringsniveau, of wijzig het " +"vrijwaringsniveau van bestaande objecten." #: katalogus/templates/partials/objects_to_scan.html -#, fuzzy, python-format -#| msgid "" -#| "\n" -#| " You currently don't have scannable objects for %(name)s.\n" -#| " Add objects to use this boefje. This boefje is able to scan " -#| "objects of the following types:\n" -#| " " +#, python-format msgid "" "You currently don't have scannable objects for %(name)s. Add objects to use " "this Boefje. This Boefje is able to scan objects of the following types:" msgstr "" -"\n" -" U heeft momenteel geen scanbare objecten voor %(name)s. \n" -" Voeg objecten toe om dit boefje te gebruiken. Dit boefje kan " -"objecten scannen van de volgende soorten:\n" -" " +"U heeft momenteel geen scanbare objecten voor %(name)s. Voeg objecten toe om " +"dit Boefje te gebruiken. Dit Boefje kan objecten scannen van de volgende " +"typen:" #: katalogus/templates/partials/plugin_settings_required.html msgid "The form could not be initialized." @@ -1802,12 +1777,12 @@ msgid_plural "" " " msgstr[0] "" "\n" -" Instelling toevoegen\n" -" " +" Instelling toevoegen\n" +" " msgstr[1] "" "\n" -" Insellingen toevoegen\n" -" " +" Insellingen toevoegen\n" +" " #: katalogus/templates/plugin_settings_add.html msgid "" @@ -1820,12 +1795,12 @@ msgid_plural "" " " msgstr[0] "" "\n" -" Instelling toevoegen en Boefje aanzetten\n" -" " +" Instelling toevoegen en Boefje aanzetten\n" +" " msgstr[1] "" "\n" -" Instellingen toevoegen en Boefje aanzetten\n" -" " +" Instellingen toevoegen en Boefje aanzetten\n" +" " #: katalogus/templates/plugin_settings_delete.html msgid "Delete settings" @@ -1841,7 +1816,8 @@ msgstr "" #: katalogus/templates/plugin_settings_delete.html #: katalogus/templates/plugin_settings_list.html -#: katalogus/views/plugin_settings_delete.py rocky/views/ooi_delete.py +#: katalogus/views/plugin_settings_delete.py +#: rocky/templates/admin/delete_confirmation.html rocky/views/ooi_delete.py msgid "Delete" msgstr "Verwijderen" @@ -1863,7 +1839,7 @@ msgstr "Actie" #: katalogus/templates/plugin_settings_list.html msgid "Unset" -msgstr "Leeg" +msgstr "Oningevuld" #: katalogus/templates/plugin_settings_list.html #: reports/report_types/dns_report/report.html @@ -1905,8 +1881,8 @@ msgid "" "Could not raise clearance level of %s to L%s. " "Indemnification not present at organization %s." msgstr "" -"Kon vrijwaring niveau van %s niet verhogen naar L%s.Vrijwaring niet aanwezig " -"bij organisatie %s." +"Kon vrijwaring niveau van %s niet verhogen naar L%s.Vrijwaring op " +"organisatie %s niet aanwezig." #: katalogus/views/mixins.py onboarding/views.py rocky/views/scan_profile.py #, python-format @@ -1969,7 +1945,7 @@ msgstr "" #: katalogus/views/plugin_enable_disable.py msgid "To enable {} you need at least a clearance level of L{}. " msgstr "" -"Om {} in te schakelen heeft u minimaal een vrijwaring niveau van L{} nodig." +"Om {} in te schakelen heeft u minimaal een vrijwaring niveau van L{} nodig. " #: katalogus/views/plugin_settings_add.py msgid "Trying to add settings to boefje without schema" @@ -2060,7 +2036,7 @@ msgstr "Begin hier" #: onboarding/templates/account/step_1_registration_intro.html #: onboarding/templates/step_1_introduction.html msgid "How does OpenKAT work" -msgstr "Hoe werkt OpenKAT?" +msgstr "Hoe werkt OpenKAT" #: onboarding/templates/account/step_1_registration_intro.html msgid "" @@ -2261,7 +2237,7 @@ msgstr "Admin details" #: onboarding/templates/account/step_5_account_setup_red_teamer.html #: onboarding/templates/account/step_6_account_setup_client.html msgid "Go back to previous step" -msgstr "Ga terug" +msgstr "Ga terug naar vorige stap" #: onboarding/templates/account/step_4_account_setup_admin.html #: onboarding/templates/account/step_5_account_setup_red_teamer.html @@ -2307,7 +2283,7 @@ msgstr "OpenKAT introductie" #: onboarding/templates/dns_report.html #: reports/report_types/dns_report/report.py msgid "DNS Report" -msgstr "DNS Rapport" +msgstr "DNS-Rapport" #: onboarding/templates/dns_report.html #, python-format @@ -2322,7 +2298,7 @@ msgstr "" #: onboarding/templates/dns_report.html msgid "DNS Tree" -msgstr "Boom" +msgstr "DNS-boom" #: onboarding/templates/step_1_introduction.html #: rocky/templates/landing_page.html @@ -2511,7 +2487,7 @@ msgstr "" #: onboarding/templates/step_2b_choose_report_type.html msgid "DNS report" -msgstr "DNS Rapport" +msgstr "DNS-rapport" #: onboarding/templates/step_3a_setup_scan_ooi_info.html #: onboarding/templates/step_3b_setup_scan_ooi_add.html @@ -2703,7 +2679,7 @@ msgstr "" #: onboarding/templates/step_3d_clearance_level_introduction.html msgid "How to know required clearance level" -msgstr "Hoe kiest u het juiste vrijwaringsniveau?" +msgstr "Hoe kiest u het juiste vrijwaringsniveau" #: onboarding/templates/step_3d_clearance_level_introduction.html msgid "" @@ -2750,10 +2726,11 @@ msgid "" " " msgstr "" "\n" -"OpenKAT heeft een toestemmingssysteem dat administrators in staat stelt om " -"te configureren welke gebruikers een bepaald vrijwaring niveau kunnen " -"instellen. Dit zorgt ervoor dat alleen gebruikers die vertrouwd zijn, de " -"meer agressieve scans kunnen starten." +" OpenKAT heeft een toestemmingssysteem dat administrators " +"in staat stelt om te configureren welke gebruikers een bepaald " +"vrijwaringsniveau kunnen instellen. Dit zorgt ervoor dat alleen gebruikers " +"die vertrouwd zijn, de meer agressieve scans kunnen starten.\n" +" " #: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html msgid "Acknowledge clearance level" @@ -2777,19 +2754,21 @@ msgid "" " " msgstr "" "\n" -"Voordat een lid de mogelijkheid krijgt om vrijwaring niveaus voor een object " -"in te stellen, moeten ze eerst het vrijwaring niveau dat door de beheerders " -"is ingesteld, erkennen en accepteren. Het maximale scan-niveau dat voor een " -"lid is toegestaan, is afgestemd op het vertrouwde vrijwaring niveau. Door " -"het erkennen van het vertrouwde vrijwaring niveau stemt dit lid formeel in " +" Voordat een gebruiker de mogelijkheid krijgt om " +"vrijwaring niveaus voor een object in te stellen, moeten ze eerst het " +"vrijwaringsniveau dat door de beheerders is ingesteld, erkennen en " +"accepteren. Het maximale vrijwaringsniveau dat voor een gebruiker is " +"toegestaan, is afgestemd op het vertrouwde vrijwaringsniveau. Door het " +"erkennen van het vertrouwde vrijwaringsniveau stemt de gebruiker formeel in " "met het naleven van deze toestemming en krijgt het de mogelijkheid om scans " -"uit te voeren tot alleen dit vertrouwde vrijwaring niveau. Dit " -"tweestapsproces zorgt ervoor dat het lid binnen geautoriseerde grenzen " -"opereert." +"uit te voeren tot alleen dit vertrouwde vrijwaringsniveau. Dit " +"tweestapsproces zorgt ervoor dat de gebruiker binnen de door zowel de " +"administrator geautoriseerde en zichzelf geaccepteerde grenzen opereert.\n" +" " #: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html msgid "What is my clearance level?" -msgstr "Wat is mijn vrijwaring niveau" +msgstr "Wat is mijn vrijwaringsniveau?" #: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html #, python-format @@ -2856,11 +2835,11 @@ msgid "" " " msgstr "" "\n" -" Uw beheerder heeft u toevertrouwd met een vrijwaring " -"niveau van L%(tcl)s.
    \n" -" U heeft ook bevestigd om dit vrijwaring niveau van " -"L%(acl)s te gebruiken.\n" -" " +" Uw beheerder heeft u toevertrouwd met een vrijwaringsniveau van L%(tcl)s.
    \n" +" U heeft ook bevestigd om maximaal dit vrijwaringsniveau " +"van L%(acl)s te gebruiken.\n" +" " #: onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html #: onboarding/templates/step_3f_set_clearance_level.html @@ -3060,11 +3039,11 @@ msgstr "Filter op OOI-types" #: reports/forms.py msgid "Report types" -msgstr "" +msgstr "Rapportagetypes" #: reports/report_types/dns_report/report.html msgid "IP address lookup" -msgstr "" +msgstr "Ip-adres opzoeken" #: reports/report_types/dns_report/report.html #: rocky/templates/dashboard_redteam.html @@ -3085,48 +3064,54 @@ msgid "" "You have less than one webserver that is reachable over IPv6, which is " "not in compliance to internet.nl standards." msgstr "" +"U heeft minder dan één webserver die bereikbaar is over ipv6. Dit is " +"niet volgt niet de standaarden die internet.nl heeft " +"aanbevolen." #: reports/report_types/dns_report/report.html msgid "Other records found" -msgstr "" +msgstr "Andere gevonden records" #: reports/report_types/dns_report/report.html msgid "Record" -msgstr "" +msgstr "Record" #: reports/report_types/dns_report/report.html msgid "Found by" -msgstr "" +msgstr "Gevonden door" #: reports/report_types/dns_report/report.html msgid "Security measures" -msgstr "" +msgstr "Beveiligingsmaatregelen" #: reports/report_types/dns_report/report.py msgid "" "DNS reports focus on domain name system configuration and potential " "weaknesses." msgstr "" +"DNS-rapporten geven inzicht in de Domein naam systeem configuratie en " +"potentiële zwakheden." #: reports/report_types/tls_report/report.html #: rocky/templates/organizations/organization_member_list.html #: rocky/templates/partials/task_history.html -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html #: rocky/templates/tasks/partials/task_filter.html msgid "Status" msgstr "Status" #: reports/report_types/tls_report/report.html msgid "Protocol" -msgstr "" +msgstr "Protocol" #: reports/report_types/tls_report/report.html msgid "Encryption Algorithm" -msgstr "" +msgstr "Encryptiealgoritme" #: reports/report_types/tls_report/report.html msgid "Key Size" -msgstr "" +msgstr "Sleutelgrootte" #: reports/report_types/tls_report/report.html #: rocky/templates/organizations/organization_list.html @@ -3136,15 +3121,15 @@ msgstr "Code" #: reports/report_types/tls_report/report.html msgid "Phase out" -msgstr "" +msgstr "Uitfaseren" #: reports/report_types/tls_report/report.html msgid "Good" -msgstr "" +msgstr "Goed" #: reports/report_types/tls_report/report.html msgid "No ciphers found for this IPService" -msgstr "" +msgstr "Geen Ciphers gevonden voor deze IPService" #: reports/report_types/tls_report/report.html #: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html @@ -3160,25 +3145,27 @@ msgstr "Bevindingen" #: reports/report_types/tls_report/report.py msgid "TLS Report" -msgstr "" +msgstr "TLS-rapportage" #: reports/report_types/tls_report/report.py msgid "" "TLS reports assess the security of data encryption and transmission " "protocols." msgstr "" +"TLS-rapportages geven inzicht in de beveiliging van data-encryptie en " +"transport-protocollen." #: reports/templates/partials/report_header.html msgid "Report for organization" -msgstr "" +msgstr "Rapport voor organisatie" #: reports/templates/partials/report_header.html msgid "Observed at:" -msgstr "" +msgstr "Gezien op:" #: reports/templates/partials/report_header.html msgid "Created by:" -msgstr "" +msgstr "Aangemaakt door:" #: reports/templates/partials/report_introduction.html msgid "" @@ -3190,27 +3177,34 @@ msgid "" "network security, ensuring the confidentiality, integrity, and availability " "of critical data and resources." msgstr "" +"Door een systematisch onderzoek van de infrastructuur van het netwerk, heeft " +"de scan potentiële beveiligingsrisico's en punten van blootstelling " +"geïdentificeerd. Het rapport biedt actieve aanbevelingen en prioriteiten om " +"de verdediging van het netwerk te versterken tegen potentiële bedreigingen. " +"Deze onmisbare beoordeling dient als een routekaart voor het verbeteren van " +"netwerkbeveiliging, de vertrouwelijkheid, integriteit, en beschikbaarheid " +"van kritische data en middelen." #: reports/templates/report.html msgid "for" -msgstr "" +msgstr "voor" #: reports/templates/report_oois_selection.html msgid "Overview of reports" -msgstr "" +msgstr "Overzicht van rapporten" #: reports/templates/report_oois_selection.html msgid "Select OOI" msgid_plural "Select OOIs" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Selecteer OOI" +msgstr[1] "Selecteer OOI's" #: reports/templates/report_oois_selection.html msgid "Select which objects you want to include in your report." -msgstr "" +msgstr "Selecteer de objecten die u op wilt nemen in het rapport." #: reports/templates/report_oois_selection.html -#: rocky/templates/oois/ooi_list.html +#: rocky/templates/admin/change_list.html rocky/templates/oois/ooi_list.html #: rocky/templates/partials/task_history.html #: rocky/templates/tasks/partials/task_filter.html msgid "Filter" @@ -3218,11 +3212,11 @@ msgstr "Filter" #: reports/templates/report_oois_selection.html msgid "No OOIs found." -msgstr "" +msgstr "Geen OOI's gevonden." #: reports/templates/report_oois_selection.html msgid "Go to the object page" -msgstr "" +msgstr "Ga naar de objectpagina" #: reports/templates/report_oois_selection.html #: reports/templates/summary/ooi_selection.html @@ -3232,7 +3226,7 @@ msgstr "Object" #: reports/templates/report_oois_selection.html msgid "Setup report" -msgstr "" +msgstr "Rapportage opstellen" #: reports/templates/report_setup_scan.html rocky/views/organization_add.py msgid "Setup" @@ -3240,22 +3234,24 @@ msgstr "Instellingen" #: reports/templates/report_setup_scan.html msgid "Set up the required plugins for this report." -msgstr "" +msgstr "Configureer de benodigde plugins voor dit rapport." #: reports/templates/report_setup_scan.html #: reports/templates/report_types_selection.html msgid "Change selection" -msgstr "" +msgstr "Selectie aanpassen" #: reports/templates/report_setup_scan.html reports/views.py msgid "Set up scan" -msgstr "" +msgstr "Scans configureren" #: reports/templates/report_setup_scan.html msgid "" "KAT will be able to generate a full report when all the required and " "suggested boefjes are enabled." msgstr "" +"KAT kan een volledig rapport produceren als alle verplichte en voorgestelde " +"boefjes aangezet zijn." #: reports/templates/report_setup_scan.html msgid "" @@ -3263,20 +3259,26 @@ msgid "" "would collect or produce will be left out of the report which will then be " "generated based on the available data collected by the enabled plugins." msgstr "" +"Als u de keuze maakt om niet alle plugins aan te zetten kan het voorkomen " +"dat de data die door die plugin opgehaald en geproduceerd zou worden niet in " +"het rapport terecht komt. Het rapport wordt samengesteld op basis van de " +"beschikbare gegevens." #: reports/templates/report_setup_scan.html msgid "Required plugins" -msgstr "" +msgstr "Benodigde plugins" #: reports/templates/report_setup_scan.html msgid "This report type requires the following plugins to be enabled:" -msgstr "" +msgstr "Dit rapport vereist dat de volgende plugins ingeschakeld zijn:" #: reports/templates/report_setup_scan.html msgid "" "This report requires at least one of the following plugins to be enabled to " "generate the report:" msgstr "" +"Dit rapport vereist dat tenminste één van de volgende plugins geactiveerd is " +"om het rapport te genereren:" #: reports/templates/report_setup_scan.html #: rocky/templates/partials/ooi_detail_toolbar.html @@ -3285,7 +3287,7 @@ msgstr "Rapport Genereren" #: reports/templates/report_types_selection.html reports/views.py msgid "Choose report types" -msgstr "" +msgstr "Kies rapporttypes" #: reports/templates/report_types_selection.html msgid "" @@ -3296,52 +3298,58 @@ msgid "" "transmission protocols, helping organizations pinpoint areas where security " "improvements are needed." msgstr "" +"Verschillende soorten rapporten, zoals DNS rapporten en TLS rapporten, zijn " +"essentieel voor het identificeren van kwetsbaarheden in verschillende " +"aspecten van de beveiliging van een systeem. DNS rapporten geven zicht op " +"domeinnaam systeemconfiguratie en potentiële zwakheden, terwijl TLS de " +"beveiliging beoordeelt van data encryptie en transmissie protocollen, beide " +"helpen organisaties vast te stellen waar beveiliging verbeterd kan worden." #: reports/templates/report_types_selection.html msgid "Selected object" msgid_plural "Selected objects" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Geselecteerd object" +msgstr[1] "Geselecteerde objecten" #: reports/templates/report_types_selection.html msgid "Available report types" -msgstr "" +msgstr "Beschikbare rapporttypes" #: reports/templates/report_types_selection.html msgid "All report types that are available for your selection." -msgstr "" +msgstr "Alle rapporten die beschikbaar zijn voor uw selectie." #: reports/templates/report_types_selection.html msgid "Toggle all report types" -msgstr "" +msgstr "Toon alle rapporttypes" #: reports/templates/report_types_selection.html msgid "Continue with selection" -msgstr "" +msgstr "Doorgaan met selectie" #: reports/templates/summary/report_summary.html msgid "Selected OOIs" -msgstr "" +msgstr "Geselecteerde OOIs" #: reports/templates/summary/report_summary.html msgid "Selected Report Types" -msgstr "" +msgstr "Geselecteerde rapporttypes" #: reports/templates/summary/report_summary.html msgid "Report type" -msgstr "" +msgstr "Rapporttype" #: reports/templates/summary/report_summary.html msgid "Selected Plugins for scans" -msgstr "" +msgstr "Geselecteerde plugins voor scans" #: reports/templates/summary/report_summary.html msgid "Plugin options" -msgstr "" +msgstr "Plugin-opties" #: reports/templates/summary/report_summary.html msgid "Plugin scan level" -msgstr "" +msgstr "Plugin-scanniveau" #: reports/templates/summary/service_health.html rocky/templates/health.html msgid "Version" @@ -3349,19 +3357,21 @@ msgstr "Versie" #: reports/views.py msgid "View Report" -msgstr "" +msgstr "Rapport bekijken" #: reports/views.py msgid "Select at least one OOI to proceed." -msgstr "" +msgstr "Selecteer minstens één OOI om verder te gaan." #: reports/views.py msgid "Select at least one report type to proceed." -msgstr "" +msgstr "Selecteer minstens één rapporttype om door te gaan." #: reports/views.py msgid "This report may not show all the data as some plugins are not enabled." msgstr "" +"Dit rapport toont misschien niet alle gegevens als sommige plugins niet " +"geactiveerd zijn." #: tools/forms/base.py msgid "Date" @@ -3428,7 +3438,7 @@ msgstr "Omschrijving impact" #: tools/forms/finding_type.py msgid "Describe the solutions impact" -msgstr "Oplossing impact" +msgstr "Beschrijf de impact van de oplossing" #: tools/forms/finding_type.py msgid "Solution chance" @@ -3436,7 +3446,7 @@ msgstr "Oplossing kans" #: tools/forms/finding_type.py msgid "Solution impact" -msgstr "Oplossing impact" +msgstr "Impact van de oplossing" #: tools/forms/finding_type.py msgid "Solution effort" @@ -3477,7 +3487,7 @@ msgstr "Reproduceer bevinding" #: tools/forms/finding_type.py msgid "Please explain how to reproduce your finding" -msgstr "Hoe kan deze bevinding worden gereproduceerd?" +msgstr "Leg a.u.b. uit hoe deze bevinding kan worden gereproduceerd" #: tools/forms/finding_type.py msgid "Date/Time (UTC)" @@ -3516,6 +3526,8 @@ msgid "Filter types" msgstr "Filtertypes" #: tools/forms/ooi.py tools/view_helpers.py +#: rocky/templates/admin/delete_confirmation.html +#: rocky/templates/admin/delete_selected_confirmation.html #: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html #: rocky/templates/header.html rocky/templates/indemnification_present.html #: rocky/views/ooi_add.py rocky/views/ooi_list.py rocky/views/ooi_view.py @@ -3525,19 +3537,15 @@ msgstr "Objecten" #: tools/forms/ooi.py msgid "Clearance Level" -msgstr "Vrijwaringsniveau" +msgstr "Toegangsniveau" #: tools/forms/ooi.py -#, fuzzy -#| msgid "Show objects that don't meet the Boefjes scan level" msgid "Show objects that don't meet the Boefjes scan level." -msgstr "Toon objecten die niet overeenkomen met het scanniveau van de Boefjes" +msgstr "Toon objecten die niet overeenkomen met het scanniveau van het Boefje." #: tools/forms/ooi.py -#, fuzzy -#| msgid "Show Boefjes that exceed the objects clearance level" msgid "Show Boefjes that exceed the objects clearance level." -msgstr "Toon Boefjes die het vrijwaring niveau van OOI's overschrijden" +msgstr "Toon Boefjes die het vrijwaringniveau van OOI's overschrijden." #: tools/forms/ooi_form.py msgid "option" @@ -3563,7 +3571,7 @@ msgstr "Filter op vrijwaringstype" #: tools/forms/settings.py msgid "--- Show all ----" -msgstr "Toon alles" +msgstr "--- Toon alles ---" #: tools/forms/settings.py msgid "recommendation" @@ -3614,7 +3622,7 @@ msgstr "Voeg één bevindingstype per regel toe." #: tools/forms/settings.py msgid "Add the date and time of your finding (UTC)" -msgstr "Voer bewijs van uw bevinding in" +msgstr "Voer de datum en tijd van je bevinding in (UTC)" #: tools/forms/settings.py msgid "" @@ -3636,7 +3644,7 @@ msgstr "Alleen CSV ondersteund" #: tools/forms/upload_csv.py tools/forms/upload_raw.py msgid "File could not be decoded" -msgstr "Bestand kon niet gedecodeerd worden." +msgstr "Bestand kon niet gedecodeerd worden" #: tools/forms/upload_csv.py msgid "No file selected" @@ -3644,7 +3652,7 @@ msgstr "Geen bestand geselecteerd" #: tools/forms/upload_csv.py msgid "The uploaded file is empty." -msgstr "Het bestand is leeg" +msgstr "Het geüploade bestand is leeg." #: tools/forms/upload_csv.py msgid "The number of columns do not meet the requirements." @@ -3739,6 +3747,9 @@ msgid "" "will be added to the object list when they are in. It may take some time, a " "refresh of the page may be needed to show the results." msgstr "" +"Je taak is gepland en zal binnenkort op de achtergrond beginnen. Resultaten " +"worden toegevoegd aan de objectenlijst als ze binnen zijn. Het kan even " +"duren, een verversing van de pagina is nodig om nieuwe resultaten te tonen." #: rocky/messaging.py msgid "" @@ -3752,19 +3763,19 @@ msgstr "" #: rocky/scheduler.py msgid "Connectivity issues with Mula." -msgstr "" +msgstr "Verbindingsproblemen met Mula." #: rocky/scheduler.py msgid "Task queue is full, please try again later." -msgstr "Wachtrij is vol, probeer het later opnieuw" +msgstr "Wachtrij is vol, probeer het later opnieuw." #: rocky/scheduler.py msgid "Task is invalid." -msgstr "Taak is ongeldig" +msgstr "Taak is ongeldig." #: rocky/scheduler.py msgid "Task already queued." -msgstr "Taak al in de wachtrij" +msgstr "Taak al in de wachtrij." #: rocky/settings.py msgid "Blue light" @@ -3875,7 +3886,7 @@ msgstr "Misschien wil je terug naar de" #: rocky/templates/403.html rocky/templates/404.html #: rocky/templates/crisis_room/crisis_room.html msgid "Crisis Room" -msgstr "Crisis Room" +msgstr "Crisiscentrum" #: rocky/templates/404.html msgid "Error code 404: Page not found" @@ -3888,6 +3899,133 @@ msgstr "" "De pagina die u wilde zien of het bestand dat u wilde bekijken is niet " "gevonden." +#: rocky/templates/admin/base.html +msgid "Skip to main content" +msgstr "Ga door naar de hoofdinhoud" + +#: rocky/templates/admin/base.html +msgid "Welcome," +msgstr "Welkom," + +#: rocky/templates/admin/base.html +msgid "View site" +msgstr "Site bekijken" + +#: rocky/templates/admin/base.html +msgid "Documentation" +msgstr "Documentatie" + +#: rocky/templates/admin/base.html +msgid "Change password" +msgstr "Wachtwoord aanpassen" + +#: rocky/templates/admin/base.html +msgid "Log out" +msgstr "Uitloggen" + +#: rocky/templates/admin/base.html rocky/templates/header.html +msgid "Breadcrumbs" +msgstr "Broodkruimels" + +#: rocky/templates/admin/base.html rocky/templates/admin/change_form.html +#: rocky/templates/admin/change_list.html +#: rocky/templates/admin/delete_confirmation.html +#: rocky/templates/admin/delete_selected_confirmation.html +msgid "Home" +msgstr "Thuis" + +#: rocky/templates/admin/change_form.html +#, python-format +msgid "Add %(name)s" +msgstr "Voeg %(name)s toe" + +#: rocky/templates/admin/change_form.html +#: rocky/templates/admin/change_list.html +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Verbeter de volgende fout." +msgstr[1] "Verbeter de volgende fouten." + +#: rocky/templates/admin/change_list.html +msgid "Clear all filters" +msgstr "Filters wissen" + +#: rocky/templates/admin/delete_confirmation.html +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"Het verwijderen van %(object_name)s '%(escaped_object)s' in de automatische " +"verwijdering van gerelateerde objecten, uw account heeft echter niet de " +"rechten om de volgende object-types te verwijderen:" + +#: rocky/templates/admin/delete_confirmation.html +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the " +"following protected related objects:" +msgstr "" +"Het verwijderen van %(object_name)s '%(escaped_object)s' heeft tot gevolg " +"dat de volgende gerelateerde objecten ook verwijderend worden:" + +#: rocky/templates/admin/delete_confirmation.html +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" +"Weet u zeker dat u %(object_name)s \"%(escaped_object)s\" wilt verwijderen? " +"Alle volgende gerelateerde objecten worden ook verwijderd:" + +#: rocky/templates/admin/delete_confirmation.html +#: rocky/templates/admin/delete_selected_confirmation.html +msgid "Yes, I’m sure" +msgstr "Ja, ik weet het zeker" + +#: rocky/templates/admin/delete_confirmation.html +#: rocky/templates/admin/delete_selected_confirmation.html +msgid "No, take me back" +msgstr "Nee, breng me terug" + +#: rocky/templates/admin/delete_selected_confirmation.html +msgid "Delete multiple objects" +msgstr "Verwijder meerdere objecten" + +#: rocky/templates/admin/delete_selected_confirmation.html +#, python-format +msgid "" +"Deleting the selected %(objects_name)s would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"Het verwijderen van het geselecteerde object %(objects_name)s heeft tot " +"gevolg dat de gerelateerde objecten ook verwijderd worden, maar uw account " +"heeft geen toestemming om de volgende objecten te verwijderen:" + +#: rocky/templates/admin/delete_selected_confirmation.html +#, python-format +msgid "" +"Deleting the selected %(objects_name)s would require deleting the following " +"protected related objects:" +msgstr "" +"Het verwijderen van %(objects_name)s heeft tot gevolg dat de volgende " +"beschermde gerelateerde objecten ook verwijderend worden:" + +#: rocky/templates/admin/delete_selected_confirmation.html +#, python-format +msgid "" +"Are you sure you want to delete the selected %(objects_name)s? All of the " +"following objects and their related items will be deleted:" +msgstr "" +"Weet u zeker dat u de geselecteerde %(objects_name)s wilt verwijderen? Alle " +"volgende gerelateerde objecten worden ook verwijderd:" + +#: rocky/templates/admin/popup_response.html +msgid "Popup closing…" +msgstr "Popup sluit…" + #: rocky/templates/crisis_room/crisis_room.html msgid "" "An overview of all (critical) findings OpenKAT found. Check the detail " @@ -3908,20 +4046,24 @@ msgstr "Totaal aantal Bevindingen" #: rocky/templates/crisis_room/crisis_room_findings_block.html #: rocky/templates/findings/finding_list.html #: rocky/templates/organizations/organization_crisis_room.html -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html msgid "Close details" msgstr "Sluit details" #: rocky/templates/crisis_room/crisis_room_findings_block.html #: rocky/templates/findings/finding_list.html #: rocky/templates/organizations/organization_crisis_room.html -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html msgid "Open details" msgstr "Details openen" #: rocky/templates/crisis_room/crisis_room_findings_block.html msgid " Finding Details" -msgstr "Bevinding details" +msgstr " Bevinding details" #: rocky/templates/crisis_room/crisis_room_findings_block.html #: rocky/templates/oois/ooi_detail_findings_overview.html @@ -4003,24 +4145,19 @@ msgid "Finding" msgstr "Bevinding" #: rocky/templates/findings/finding_list.html -#, fuzzy -#| msgid "Findings" msgid "Findings @ " -msgstr "Bevindingen" +msgstr "Bevindingen @ " #: rocky/templates/findings/finding_list.html -#, fuzzy, python-format -#| msgid "" -#| "An overview of all findings OpenKAT found on %(date)s. Each finding " -#| "relates to an object. Click a finding for additional information." +#, python-format msgid "" "An overview of all findings OpenKAT found for organization " "%(organization_name)s. Each finding relates to an object. " "Click a finding for additional information." msgstr "" -"Een overzicht van alle bevindingen die OpenKAT heeft gevonden op %(date)s. " -"Elke bevinding heeft betrekking op een object. Klik op een bevinding voor " -"meer informatie." +"Een overzicht van alle bevindingen die OpenKAT heeft gevonden voor " +"organisatie %(organization_name)s. Elke bevinding heeft " +"betrekking op een object. Klik op een bevinding voor meer informatie." #: rocky/templates/findings/finding_list.html #: rocky/templates/organizations/organization_crisis_room.html @@ -4043,7 +4180,7 @@ msgstr "bevindingen" #: rocky/templates/partials/elements/ooi_tree_condensed_table.html #: rocky/templates/partials/elements/ooi_tree_condensed_table_row.html msgid "Tree" -msgstr "Boom" +msgstr "Boomweergave" #: rocky/templates/findings/finding_list.html #: rocky/templates/oois/ooi_page_tabs.html @@ -4101,7 +4238,7 @@ msgstr "Reden" #: rocky/templates/findings/finding_list.html msgid "Unmute Findings" -msgstr "" +msgstr "Bevindingen ontdempen" #: rocky/templates/findings/finding_list.html msgid "Mute Findings" @@ -4140,7 +4277,7 @@ msgstr "" #: rocky/templates/graph-d3.html msgid "Tree graph" -msgstr "Boom" +msgstr "Boomgrafiek" #: rocky/templates/header.html msgid "Menu" @@ -4154,17 +4291,15 @@ msgstr "OpenKAT logo, ga naar de homepage van OpenKAT" #: rocky/templates/organizations/organization_crisis_room.html #: rocky/views/finding_list.py msgid "Crisis room" -msgstr "Crisis Room" +msgstr "Crisiscentrum" #: rocky/templates/header.html rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html #: rocky/views/task_detail.py rocky/views/tasks.py msgid "Tasks" msgstr "Taken" -#: rocky/templates/header.html -msgid "Breadcrumbs" -msgstr "Broodkruimels" - #: rocky/templates/health.html msgid "Health Checks" msgstr "Gezondheidchecks" @@ -4360,8 +4495,9 @@ msgstr "met boefjes" #: rocky/templates/oois/ooi_detail.html #: rocky/templates/oois/ooi_detail_origins_observations.html -#: rocky/templates/partials/task_history.html rocky/templates/scan.html -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html +#: rocky/templates/scan.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html msgid "Boefje" msgstr "Boefje" @@ -4391,17 +4527,17 @@ msgstr "" #: rocky/templates/oois/ooi_detail.html msgid "Or if you have the authorization, upgrade the clearance level of" -msgstr "Of als u de autorisatie heeft, upgrade dan het vrijwaringsniveau van:" +msgstr "Of, als u de autorisatie heeft, verhoog dan het vrijwaringsniveau van" #: rocky/templates/oois/ooi_detail_add_related_object.html msgid "Add related object" -msgstr "Voeg object toe" +msgstr "Voeg gerelateerd object toe" #: rocky/templates/oois/ooi_detail_add_related_object.html #: rocky/templates/oois/ooi_detail_object.html #: rocky/templates/partials/elements/ooi_add_type_select_form.html msgid "Object details" -msgstr "Details openen" +msgstr "Objectdetails" #: rocky/templates/oois/ooi_detail_add_related_object.html #: rocky/templates/partials/elements/ooi_add_type_select_form.html @@ -4435,7 +4571,7 @@ msgstr "Score" #: rocky/templates/oois/ooi_detail_findings_list.html #: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html msgid "Finding details" -msgstr "Bevinding details" +msgstr "Bevindingdetails" #: rocky/templates/oois/ooi_detail_findings_overview.html msgid "Overview of the number of findings and their severity found on" @@ -4483,7 +4619,7 @@ msgstr "Parameters" #: rocky/templates/oois/ooi_detail_origins_observations.html msgid "Observed by" -msgstr "Gevonden door" +msgstr "Gezien door" #: rocky/templates/oois/ooi_detail_origins_observations.html msgid "Task ID" @@ -4508,18 +4644,16 @@ msgid "Currently there are no findings for OOI" msgstr "Er zijn geen bevindingen voor het object" #: rocky/templates/oois/ooi_list.html -#, fuzzy, python-format -#| msgid "" -#| "An overview of your object list. Objects can be added manually or by " -#| "running boefjes.
    Click an object for additional information." +#, python-format msgid "" "An overview of objects found for organization %(organization_name)s. Objects can be added manually or by running Boefjes. Click an " "object for additional information." msgstr "" -"Een overzicht van uw objectenlijst. Objecten kunnen handmatig worden " -"toegevoegd of door het uitvoeren van boefjes.
    Klik op een object voor " -"meer informatie." +"Een overzicht van uw objectenlijst voor organisatie " +"%(organization_name)s. Objecten kunnen handmatig worden " +"toegevoegd of door het uitvoeren van boefjes. Klik op een object voor meer " +"informatie." #: rocky/templates/oois/ooi_list.html msgid "Currently filtered on:" @@ -4560,7 +4694,7 @@ msgstr "Dit object is voorbij de houdbaarheidsdatum" #: rocky/templates/oois/ooi_past_due_warning.html msgid "This object is past due and has been deleted" -msgstr "Dit object is voorbij de houdbaarheidsdatum en gewist." +msgstr "Dit object is voorbij de houdbaarheidsdatum en gewist" #: rocky/templates/oois/ooi_past_due_warning.html msgid "" @@ -4655,7 +4789,7 @@ msgstr "toont dezelfde objecten." #: rocky/templates/oois/ooi_tree.html msgid "Object tree" -msgstr "Objectenlijst" +msgstr "Objectenboom" #: rocky/templates/organizations/organization_crisis_room.html #: rocky/templates/organizations/organization_settings.html @@ -4702,7 +4836,7 @@ msgstr "Bevindingstype" #: rocky/templates/organizations/organization_crisis_room.html msgid "OOI type" -msgstr "OOI type" +msgstr "OOI-type" #: rocky/templates/organizations/organization_crisis_room.html msgid "Source OOI" @@ -4766,9 +4900,9 @@ msgid "" " " msgstr "" "\n" -" Een overzicht van \"%(organization_name)s\" haar " -"leden.\n" -" " +" Een overzicht van \"%(organization_name)s\" haar " +"gebruikers.\n" +" " #: rocky/templates/organizations/organization_member_list.html msgid "Add member(s)" @@ -4780,7 +4914,7 @@ msgstr "Handmatig" #: rocky/templates/organizations/organization_member_list.html msgid "Upload a CSV" -msgstr "Upload CSV" +msgstr "Upload een CSV" #: rocky/templates/organizations/organization_member_list.html msgid "Member overview:" @@ -4939,7 +5073,7 @@ msgstr "Overerving op vrijwaring niveau" #: rocky/templates/partials/explanations.html msgid "Origin" -msgstr "Bron" +msgstr "Oorsprong" #: rocky/templates/partials/explanations.html msgid "Show clearance level inheritance" @@ -4950,10 +5084,8 @@ msgid "Reproduction" msgstr "Reproductie" #: rocky/templates/partials/form/checkbox_group_table_form.html -#, fuzzy -#| msgid "Please enable plugin to start scanning" msgid "Please enable plugin to start scanning." -msgstr "Alsjeblieft schakel plugin in om scanning te starten" +msgstr "Schakel aub plugins in om scans te starten." #: rocky/templates/partials/form/field_input.html #: rocky/templates/partials/form/field_input_checkbox.html @@ -5007,7 +5139,7 @@ msgstr "Toelichting" #: rocky/templates/partials/form/indemnification_add_form.html msgid "Here, an indemnification can be given on behalf of your organization" -msgstr "Geef hier een vrijwaring namens uw organisatie." +msgstr "Geef hier een vrijwaring namens uw organisatie" #: rocky/templates/partials/form/indemnification_add_form.html msgid "" @@ -5073,7 +5205,7 @@ msgstr "Vijf pagina's vooruit" #: rocky/templates/partials/list_paginator.html msgid "Next Page" -msgstr "Volgende" +msgstr "Volgende pagina" #: rocky/templates/partials/list_paginator.html msgid "Next" @@ -5097,7 +5229,7 @@ msgstr "Geen gerelateerde objecten toegevoegd aan " #: rocky/templates/partials/ooi_detail_related_object.html msgid "Use the button below to add a related object. " -msgstr "Voeg een gerelateerd object toe" +msgstr "Gebruik de knop hier onder om een gerelateerd object toe te voegen. " #: rocky/templates/partials/ooi_detail_toolbar.html msgid "Mute Finding" @@ -5132,7 +5264,7 @@ msgstr "Objecten scannen" #: rocky/templates/partials/ooi_list_toolbar.html #: rocky/templates/upload_csv.html rocky/views/upload_csv.py msgid "Upload CSV" -msgstr "Upload CSV" +msgstr "Upload een CSV" #: rocky/templates/partials/ooi_list_toolbar.html msgid "Export" @@ -5163,7 +5295,7 @@ msgstr "Risico niveau" #: rocky/templates/partials/ooi_report_findings_block_table.html msgid "Open finding details" -msgstr "Open details bevinding" +msgstr "Open bevindingdetails" #: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html #, python-format @@ -5298,7 +5430,7 @@ msgstr "Gelukt" #: rocky/templates/partials/task_history.html #: rocky/templates/tasks/partials/task_filter.html msgid "Failure" -msgstr "Foutmodus" +msgstr "Faal" #: rocky/templates/partials/task_history.html #: rocky/templates/tasks/partials/task_filter.html @@ -5311,32 +5443,39 @@ msgid "Search by object name" msgstr "Zoeken op objectnaam" #: rocky/templates/partials/task_history.html -msgid "No scans found for this object." -msgstr "Geen scans gevonden voor dit object." +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "No tasks found for this object." +msgstr "Geen taken gevonden voor dit object." #: rocky/templates/partials/task_history.html -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html msgid "Created date" msgstr "Datum toegevoegd" #: rocky/templates/partials/task_history.html -#: rocky/templates/tasks/boefjes.html -msgid "Input Object" -msgstr "Inputobject" +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Yielded objects" +msgstr "Opgeleverde objecten" #: rocky/templates/partials/task_history.html -msgid "No tasks found for this object." -msgstr "" +#: rocky/templates/tasks/boefje_task_detail.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Download meta and raw data" +msgstr "Meta- en ruwe gegevens downloaden" #: rocky/templates/partials/task_history.html -#: rocky/templates/tasks/normalizers.html -msgid "Normalizer" -msgstr "Normalizer" +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Reschedule" +msgstr "Opnieuw plannen" #: rocky/templates/partials/task_history.html -#: rocky/templates/tasks/normalizers.html -msgid "Boefje input OOI" -msgstr "Boefje input OOI" +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Download task data" +msgstr "Download taakgegevens" #: rocky/templates/scan.html msgid "Boefjes overview:" @@ -5422,11 +5561,6 @@ msgstr "" "Een overzicht van de boefje-taak, de invoer OOI en de RAW-gegevens die het " "heeft gegenereerd." -#: rocky/templates/tasks/boefje_task_detail.html -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html -msgid "Download meta and raw data" -msgstr "Meta- en ruwe gegevens downloaden" - #: rocky/templates/tasks/boefje_task_detail.html msgid "Download meta data" msgstr "Metagegevens downloaden" @@ -5443,22 +5577,6 @@ msgstr "Er zijn geen taken voor boefjes" msgid "List of tasks for boefjes" msgstr "Takenlijst van boefjes" -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html -msgid "List of tasks for " -msgstr "Lijst van taken voor " - -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html -msgid "No input OOI" -msgstr "Geen input object" - -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html -msgid "Reschedule" -msgstr "Opnieuw plannen" - -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html -msgid "Download task data" -msgstr "Download taakgegevens" - #: rocky/templates/tasks/normalizers.html msgid "There are no tasks for normalizers" msgstr "Er zijn geen taken voor normalizers" @@ -5467,9 +5585,21 @@ msgstr "Er zijn geen taken voor normalizers" msgid "List of tasks for normalizers" msgstr "Lijst van taken voor normalizers" -#: rocky/templates/tasks/normalizers.html -msgid "Yielded objects" -msgstr "Opgeleverde objecten" +#: rocky/templates/tasks/partials/boefje_task_history.html +msgid "No scans found for this object." +msgstr "Geen scans gevonden voor dit object." + +#: rocky/templates/tasks/partials/boefje_task_history.html +msgid "Input Object" +msgstr "Inputobject" + +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Normalizer" +msgstr "Normalizer" + +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Boefje input OOI" +msgstr "Boefje invoer OOI" #: rocky/templates/tasks/partials/tab_navigation.html msgid "List of tasks" @@ -5682,7 +5812,7 @@ msgstr "Telefoonnummer toevoegen" #: rocky/templates/two_factor/profile/disable.html msgid "Disable Two-factor Authentication" -msgstr "Tweetraps verificatie uitschakelen" +msgstr "Tweetraps-verificatie uitschakelen" #: rocky/templates/two_factor/profile/disable.html msgid "" @@ -5746,7 +5876,7 @@ msgstr "Codes tonen" #: rocky/templates/two_factor/profile/profile.html msgid "Disable Two-Factor Authentication" -msgstr "Tweetraps verificatie uitschakelen" +msgstr "Tweetraps-verificatie uitschakelen" #: rocky/templates/two_factor/profile/profile.html msgid "" @@ -5777,6 +5907,10 @@ msgstr "" msgid "Upload raw" msgstr "Upload raw-bestand" +#: rocky/views/bytes_raw.py +msgid "Getting raw data failed." +msgstr "" + #: rocky/views/finding_add.py msgid "Add Finding" msgstr "Bevinding toevoegen" @@ -5807,7 +5941,7 @@ msgstr "Vrijwaringsniveau ingesteld." #: rocky/views/mixins.py msgid "Can not parse date, falling back to show current date." -msgstr "" +msgstr "Kan datum niet lezen. Huidige datum wordt gebruikt." #: rocky/views/ooi_add.py msgid "Type select" @@ -5832,7 +5966,7 @@ msgstr "Objectbevindingen" #: rocky/views/ooi_list.py msgid "No OOIs selected." -msgstr "Geen objecten geselecteerd" +msgstr "Geen OOI's geselecteerd." #: rocky/views/ooi_list.py msgid "Unknown action." @@ -5853,8 +5987,8 @@ msgid "" "Could not raise clearance level to L%s. You were trusted a clearance level " "of L%s. Contact your administrator to receive a higher clearance." msgstr "" -"Kan vrijwaring niveau niet verhogen naar L%s. U bent een vrijwaring niveau " -"toevertrouwd van L%s. Neem contact op met uw beheerder om een ​​hogere " +"Kan vrijwaringsniveau niet verhogen naar L%s. U bent een vrijwaringsniveau " +"toevertrouwd van L%s. Neem contact op met uw beheerder om een hogere " "vrijwaring te krijgen." #: rocky/views/ooi_list.py @@ -5924,7 +6058,7 @@ msgstr "Selecteer ten minste één bevinding." #: rocky/views/ooi_mute.py msgid "Finding(s) successfully unmuted." -msgstr "" +msgstr "Bevinding(en) succesvol ontdempt." #: rocky/views/ooi_mute.py msgid "Finding(s) successfully muted." @@ -5952,11 +6086,11 @@ msgstr "" #: rocky/views/ooi_tree.py msgid "Tree Visualisation" -msgstr "Boom" +msgstr "Boomvisualisatie" #: rocky/views/ooi_tree.py msgid "Graph Visualisation" -msgstr "Graaf" +msgstr "Graafvisualisatie" #: rocky/views/ooi_view.py msgid "OOI types: " @@ -6110,8 +6244,8 @@ msgstr "Kies een geldig niveau" #, python-brace-format msgid "Can not reset scan level. Scan level of {ooi_name} not declared" msgstr "" -"Kan het scan niveau niet resetten. Het scan niveau van {ooi_name} is niet " -"aangegeven." +"Kan het scanniveau niet verwijderen. Er is scanniveau van {ooi_name} " +"gedeclareerd" #: rocky/views/scan_profile.py msgid "Reset" @@ -6132,7 +6266,7 @@ msgid "" msgstr "" "Voor het type URL-object is een kolom 'raw' met URL-waarden vereist, " "beginnend met http:// of https://; optioneel wordt een tweede kolom " -"'network' ondersteund" +"'network' ondersteund. " #: rocky/views/upload_csv.py msgid "" @@ -6140,7 +6274,7 @@ msgid "" "optionally a second column 'network' is supported " msgstr "" "Voor het objecttype Hostname is een kolom met \"naam\"-waarden vereist, " -"optioneel wordt een tweede kolom \"netwerk\" ondersteund" +"optioneel wordt een tweede kolom \"netwerk\" ondersteund " #: rocky/views/upload_csv.py msgid "" @@ -6148,11 +6282,11 @@ msgid "" "required, optionally a second column 'network' is supported " msgstr "" "Voor IPAddressV4- en IPAddressV6-objecttypes is een kolom 'adres' vereist, " -"optioneel wordt een tweede kolom 'netwerk' ondersteund" +"optioneel wordt een tweede kolom 'netwerk' ondersteund " #: rocky/views/upload_csv.py msgid "Object(s) could not be created for row number(s): " -msgstr "Object(en) konden niet worden aangemaakt voor rijnummer(s):" +msgstr "Object(en) konden niet worden aangemaakt voor rijnummer(s): " #: rocky/views/upload_csv.py msgid "Object(s) successfully added." @@ -6167,6 +6301,12 @@ msgstr "Het ruw bestand kon niet geupload worden naar Bytes: status code %s" msgid "Raw file successfully added." msgstr "Ruw bestand succesvol toegevoegd." +#~ msgid "List of tasks for " +#~ msgstr "Lijst van taken voor " + +#~ msgid "No input OOI" +#~ msgstr "Geen input object" + #~ msgid "" #~ "Can not parse observed_at parameter, falling back to showing current " #~ "object" diff --git a/rocky/rocky/locale/pap/LC_MESSAGES/django.po b/rocky/rocky/locale/pap/LC_MESSAGES/django.po index 4702c95a179..9db562ef240 100644 --- a/rocky/rocky/locale/pap/LC_MESSAGES/django.po +++ b/rocky/rocky/locale/pap/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-17 13:44+0000\n" +"POT-Creation-Date: 2023-11-09 14:01+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1081,7 +1081,9 @@ msgstr "Nivel di rísiko" #: rocky/templates/findings/finding_list.html #: rocky/templates/organizations/organization_crisis_room.html #: rocky/templates/partials/ooi_report_findings_block_table.html -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html msgid "Details" msgstr "Detayes" @@ -1829,7 +1831,8 @@ msgstr "Segur bo ke bo ke eliminá tur ajuste pa e plug-in %(plugin_name)s?" #: katalogus/templates/plugin_settings_delete.html #: katalogus/templates/plugin_settings_list.html -#: katalogus/views/plugin_settings_delete.py rocky/views/ooi_delete.py +#: katalogus/views/plugin_settings_delete.py +#: rocky/templates/admin/delete_confirmation.html rocky/views/ooi_delete.py msgid "Delete" msgstr "Eliminá" @@ -3110,7 +3113,8 @@ msgstr "" #: reports/report_types/tls_report/report.html #: rocky/templates/organizations/organization_member_list.html #: rocky/templates/partials/task_history.html -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html #: rocky/templates/tasks/partials/task_filter.html msgid "Status" msgstr "Estádo" @@ -3209,7 +3213,7 @@ msgid "Select which objects you want to include in your report." msgstr "" #: reports/templates/report_oois_selection.html -#: rocky/templates/oois/ooi_list.html +#: rocky/templates/admin/change_list.html rocky/templates/oois/ooi_list.html #: rocky/templates/partials/task_history.html #: rocky/templates/tasks/partials/task_filter.html msgid "Filter" @@ -3514,6 +3518,8 @@ msgid "Filter types" msgstr "Tipo di filternan" #: tools/forms/ooi.py tools/view_helpers.py +#: rocky/templates/admin/delete_confirmation.html +#: rocky/templates/admin/delete_selected_confirmation.html #: rocky/templates/dashboard_client.html rocky/templates/dashboard_redteam.html #: rocky/templates/header.html rocky/templates/indemnification_present.html #: rocky/views/ooi_add.py rocky/views/ooi_list.py rocky/views/ooi_view.py @@ -3885,6 +3891,119 @@ msgid "" msgstr "" "E página ku bo kera wak òf e file ku bo kera mira no por wordu enkontra." +#: rocky/templates/admin/base.html +msgid "Skip to main content" +msgstr "" + +#: rocky/templates/admin/base.html +msgid "Welcome," +msgstr "" + +#: rocky/templates/admin/base.html +msgid "View site" +msgstr "" + +#: rocky/templates/admin/base.html +msgid "Documentation" +msgstr "" + +#: rocky/templates/admin/base.html +msgid "Change password" +msgstr "" + +#: rocky/templates/admin/base.html +msgid "Log out" +msgstr "" + +#: rocky/templates/admin/base.html rocky/templates/header.html +msgid "Breadcrumbs" +msgstr "Breadcrumbs" + +#: rocky/templates/admin/base.html rocky/templates/admin/change_form.html +#: rocky/templates/admin/change_list.html +#: rocky/templates/admin/delete_confirmation.html +#: rocky/templates/admin/delete_selected_confirmation.html +msgid "Home" +msgstr "" + +#: rocky/templates/admin/change_form.html +#, python-format +msgid "Add %(name)s" +msgstr "" + +#: rocky/templates/admin/change_form.html +#: rocky/templates/admin/change_list.html +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: rocky/templates/admin/change_list.html +msgid "Clear all filters" +msgstr "" + +#: rocky/templates/admin/delete_confirmation.html +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" + +#: rocky/templates/admin/delete_confirmation.html +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the " +"following protected related objects:" +msgstr "" + +#: rocky/templates/admin/delete_confirmation.html +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" + +#: rocky/templates/admin/delete_confirmation.html +#: rocky/templates/admin/delete_selected_confirmation.html +msgid "Yes, I’m sure" +msgstr "" + +#: rocky/templates/admin/delete_confirmation.html +#: rocky/templates/admin/delete_selected_confirmation.html +msgid "No, take me back" +msgstr "" + +#: rocky/templates/admin/delete_selected_confirmation.html +msgid "Delete multiple objects" +msgstr "" + +#: rocky/templates/admin/delete_selected_confirmation.html +#, python-format +msgid "" +"Deleting the selected %(objects_name)s would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" + +#: rocky/templates/admin/delete_selected_confirmation.html +#, python-format +msgid "" +"Deleting the selected %(objects_name)s would require deleting the following " +"protected related objects:" +msgstr "" + +#: rocky/templates/admin/delete_selected_confirmation.html +#, python-format +msgid "" +"Are you sure you want to delete the selected %(objects_name)s? All of the " +"following objects and their related items will be deleted:" +msgstr "" + +#: rocky/templates/admin/popup_response.html +msgid "Popup closing…" +msgstr "" + #: rocky/templates/crisis_room/crisis_room.html msgid "" "An overview of all (critical) findings OpenKAT found. Check the detail " @@ -3904,14 +4023,18 @@ msgstr "Diskubrimentu Totál" #: rocky/templates/crisis_room/crisis_room_findings_block.html #: rocky/templates/findings/finding_list.html #: rocky/templates/organizations/organization_crisis_room.html -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html msgid "Close details" msgstr "Sera detayes" #: rocky/templates/crisis_room/crisis_room_findings_block.html #: rocky/templates/findings/finding_list.html #: rocky/templates/organizations/organization_crisis_room.html -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html msgid "Open details" msgstr "Habri detayes" @@ -4153,14 +4276,12 @@ msgid "Crisis room" msgstr "Sala di krísis" #: rocky/templates/header.html rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html #: rocky/views/task_detail.py rocky/views/tasks.py msgid "Tasks" msgstr "Enkargonan" -#: rocky/templates/header.html -msgid "Breadcrumbs" -msgstr "Breadcrumbs" - #: rocky/templates/health.html msgid "Health Checks" msgstr "Checknan di salubridat" @@ -4361,8 +4482,9 @@ msgstr "uzando boefjes" #: rocky/templates/oois/ooi_detail.html #: rocky/templates/oois/ooi_detail_origins_observations.html -#: rocky/templates/partials/task_history.html rocky/templates/scan.html -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html +#: rocky/templates/scan.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html msgid "Boefje" msgstr "Boefje" @@ -5307,32 +5429,39 @@ msgid "Search by object name" msgstr "Buska riba nómber di opheto" #: rocky/templates/partials/task_history.html -msgid "No scans found for this object." -msgstr "Ningun skan enkontra pa e opheto." +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "No tasks found for this object." +msgstr "" #: rocky/templates/partials/task_history.html -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html msgid "Created date" msgstr "Fecha kreá" #: rocky/templates/partials/task_history.html -#: rocky/templates/tasks/boefjes.html -msgid "Input Object" -msgstr "Opheto di entrada" +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Yielded objects" +msgstr "Ophetonan generá" #: rocky/templates/partials/task_history.html -msgid "No tasks found for this object." -msgstr "" +#: rocky/templates/tasks/boefje_task_detail.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Download meta and raw data" +msgstr "Download meta data i data krudo" #: rocky/templates/partials/task_history.html -#: rocky/templates/tasks/normalizers.html -msgid "Normalizer" -msgstr "Normalizer" +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Reschedule" +msgstr "Kambia fecha" #: rocky/templates/partials/task_history.html -#: rocky/templates/tasks/normalizers.html -msgid "Boefje input OOI" -msgstr "Opheto di Entrada \"Boefje\"" +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Download task data" +msgstr "Descarga datonan di tarea" #: rocky/templates/scan.html msgid "Boefjes overview:" @@ -5418,11 +5547,6 @@ msgstr "" "Un bista general di e tarea boefje, e opheto di entrada OOI, y e datonan RAW " "cu el a generá." -#: rocky/templates/tasks/boefje_task_detail.html -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html -msgid "Download meta and raw data" -msgstr "Download meta data i data krudo" - #: rocky/templates/tasks/boefje_task_detail.html msgid "Download meta data" msgstr "Deskarga meta datonan" @@ -5439,22 +5563,6 @@ msgstr "No tin tareanan pa boefjes" msgid "List of tasks for boefjes" msgstr "Lista di tareanan pa boefjes" -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html -msgid "List of tasks for " -msgstr "Lista di tareanan pa " - -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html -msgid "No input OOI" -msgstr "No tin entrada OOI" - -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html -msgid "Reschedule" -msgstr "Kambia fecha" - -#: rocky/templates/tasks/boefjes.html rocky/templates/tasks/normalizers.html -msgid "Download task data" -msgstr "Descarga datonan di tarea" - #: rocky/templates/tasks/normalizers.html msgid "There are no tasks for normalizers" msgstr "No tin tareanan pa normalizers" @@ -5463,9 +5571,21 @@ msgstr "No tin tareanan pa normalizers" msgid "List of tasks for normalizers" msgstr "Lista di tareanan pa normalizers" -#: rocky/templates/tasks/normalizers.html -msgid "Yielded objects" -msgstr "Ophetonan generá" +#: rocky/templates/tasks/partials/boefje_task_history.html +msgid "No scans found for this object." +msgstr "Ningun skan enkontra pa e opheto." + +#: rocky/templates/tasks/partials/boefje_task_history.html +msgid "Input Object" +msgstr "Opheto di entrada" + +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Normalizer" +msgstr "Normalizer" + +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Boefje input OOI" +msgstr "Opheto di Entrada \"Boefje\"" #: rocky/templates/tasks/partials/tab_navigation.html msgid "List of tasks" @@ -5770,6 +5890,10 @@ msgstr "Automatizá e kreo di varios ophetonan dor di karga un arkivo." msgid "Upload raw" msgstr "Karga CSV" +#: rocky/views/bytes_raw.py +msgid "Getting raw data failed." +msgstr "" + #: rocky/views/finding_add.py msgid "Add Finding" msgstr "Añadí Diskubrimentu" @@ -6155,6 +6279,12 @@ msgstr "No por a subi e arkivo na Bytes: status code %s" msgid "Raw file successfully added." msgstr "Arkivo crudo añadi ku èxito." +#~ msgid "List of tasks for " +#~ msgstr "Lista di tareanan pa " + +#~ msgid "No input OOI" +#~ msgstr "No tin entrada OOI" + #~ msgid "" #~ "Can not parse observed_at parameter, falling back to showing current " #~ "object" From 9c5fcb8f367fc6e00e6f62fbf4f4906ab8c20c21 Mon Sep 17 00:00:00 2001 From: Donny Peeters <46660228+Donnype@users.noreply.github.com> Date: Wed, 15 Nov 2023 12:44:46 +0100 Subject: [PATCH 16/30] Clean up "produces" field in the katalogus api: now show a list of mime-types in Rocky for boefjes (#2033) Co-authored-by: Jan Klopper --- boefjes/boefjes/katalogus/models.py | 3 +-- .../boefjes_test_dir/kat_test/boefje.json | 4 ---- .../kat_test/kat_test_2/boefje.json | 3 +-- .../katalogus/tests/test_plugin_service.py | 2 +- .../boefjes/katalogus/tests/test_plugins.py | 6 +++--- .../plugins/kat_adr_finding_types/boefje.json | 3 --- .../plugins/kat_adr_validator/boefje.json | 4 ---- .../boefjes/plugins/kat_binaryedge/boefje.json | 10 ---------- boefjes/boefjes/plugins/kat_censys/boefje.json | 7 ------- boefjes/boefjes/plugins/kat_crt_sh/boefje.json | 4 ---- .../plugins/kat_cve_2023_34039/boefje.json | 4 ---- .../plugins/kat_cve_2023_35078/boefje.json | 4 ---- .../plugins/kat_cve_finding_types/boefje.json | 3 --- .../plugins/kat_cwe_finding_types/boefje.json | 3 --- boefjes/boefjes/plugins/kat_dicom/boefje.json | 7 ------- boefjes/boefjes/plugins/kat_dns/boefje.json | 15 --------------- .../boefjes/plugins/kat_dns_zone/boefje.json | 5 ----- boefjes/boefjes/plugins/kat_dnssec/boefje.json | 4 ---- .../plugins/kat_external_db/boefje.json | 7 ------- boefjes/boefjes/plugins/kat_fierce/boefje.json | 7 ------- .../plugins/kat_green_hosting/boefje.json | 4 ---- .../plugins/kat_kat_finding_types/boefje.json | 3 --- boefjes/boefjes/plugins/kat_leakix/boefje.json | 10 ---------- .../boefjes/plugins/kat_log4shell/boefje.json | 4 ---- .../plugins/kat_manyportsopen/boefje.json | 4 ---- .../boefjes/plugins/kat_masscan/boefje.json | 4 ---- boefjes/boefjes/plugins/kat_nmap/boefje.json | 7 ------- .../plugins/kat_nmap_ip_range/boefje.json | 7 ------- .../boefjes/plugins/kat_nmap_ports/boefje.json | 7 ------- .../boefjes/plugins/kat_nuclei_cve/boefje.json | 4 ---- .../kat_nuclei_exposed_panels/boefje.json | 4 ---- .../plugins/kat_nuclei_take_over/boefje.json | 4 ---- boefjes/boefjes/plugins/kat_rdns/boefje.json | 3 --- .../kat_retirejs_finding_types/boefje.json | 3 --- .../kat_security_txt_downloader/boefje.json | 5 ----- boefjes/boefjes/plugins/kat_shodan/boefje.json | 5 ----- boefjes/boefjes/plugins/kat_snyk/boefje.json | 6 ------ .../plugins/kat_snyk_finding_types/boefje.json | 3 --- .../plugins/kat_ssl_certificates/boefje.json | 3 --- .../boefjes/plugins/kat_ssl_scan/boefje.json | 4 ---- .../plugins/kat_testssl_sh_ciphers/boefje.json | 3 --- .../plugins/kat_webpage_analysis/boefje.json | 3 --- .../plugins/kat_webpage_capture/boefje.json | 3 +-- .../plugins/kat_website_software/boefje.json | 4 ---- boefjes/boefjes/plugins/kat_wpscan/boefje.json | 4 ---- boefjes/boefjes/plugins/models.py | 2 +- .../boefjes/plugins/pdio_subfinder/boefje.json | 3 --- rocky/katalogus/client.py | 18 +++--------------- rocky/katalogus/templates/boefje_detail.html | 8 ++++---- 49 files changed, 15 insertions(+), 232 deletions(-) diff --git a/boefjes/boefjes/katalogus/models.py b/boefjes/boefjes/katalogus/models.py index 89defc345c9..465551fc7a7 100644 --- a/boefjes/boefjes/katalogus/models.py +++ b/boefjes/boefjes/katalogus/models.py @@ -38,8 +38,7 @@ class Boefje(Plugin): type: Literal["boefje"] = "boefje" scan_level: int = 1 consumes: Set[str] = Field(default_factory=set) - produces: List[str] = Field(default_factory=list) - mime_types: Set[str] = Field(default_factory=set) + produces: Set[str] = Field(default_factory=set) options: Optional[List[str]] runnable_hash: Optional[str] oci_image: Optional[str] diff --git a/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/boefje.json b/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/boefje.json index 04df26f445a..ba0c3dab30b 100644 --- a/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/boefje.json +++ b/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/boefje.json @@ -5,10 +5,6 @@ "consumes": [ "DNSZone" ], - "produces": [ - "X509Certificate", - "Hostname" - ], "environment_keys": [], "scan_level": 1 } diff --git a/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/kat_test_2/boefje.json b/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/kat_test_2/boefje.json index 49762726741..292b7490375 100644 --- a/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/kat_test_2/boefje.json +++ b/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/kat_test_2/boefje.json @@ -6,8 +6,7 @@ "DNSZone" ], "produces": [ - "X509Certificate", - "Hostname" + "text/html" ], "environment_keys": [], "scan_level": 1 diff --git a/boefjes/boefjes/katalogus/tests/test_plugin_service.py b/boefjes/boefjes/katalogus/tests/test_plugin_service.py index 1098bcdc388..0c1a61d0cf1 100644 --- a/boefjes/boefjes/katalogus/tests/test_plugin_service.py +++ b/boefjes/boefjes/katalogus/tests/test_plugin_service.py @@ -125,7 +125,7 @@ def test_get_plugins(self): self.assertEqual("kat_test", kat_test.id) self.assertEqual("Kat test name", kat_test.name) self.assertEqual({"DNSZone"}, kat_test.consumes) - self.assertSetEqual({"Hostname", "X509Certificate"}, set(kat_test.produces)) + self.assertSetEqual({"boefje/kat_test"}, set(kat_test.produces)) kat_test_norm = list(filter(lambda x: x.id == "kat_test_normalize", plugins)).pop() self.assertIn("kat_test_normalize", kat_test_norm.id) diff --git a/boefjes/boefjes/katalogus/tests/test_plugins.py b/boefjes/boefjes/katalogus/tests/test_plugins.py index 9894f2a8049..8051bbd0f5b 100644 --- a/boefjes/boefjes/katalogus/tests/test_plugins.py +++ b/boefjes/boefjes/katalogus/tests/test_plugins.py @@ -110,11 +110,11 @@ def test_get_plugin(self): # Simpler endpoint works as well, but due to the mock the default mime_types are not dynamically added res = self.client.get("/v1/organisations/test-org/plugins/test-boefje-1") self.assertEqual(200, res.status_code) - assert "mime_types" in res.json() - assert not res.json()["mime_types"] + assert "produces" in res.json() + assert res.json()["produces"] == ["text/html"] # For boefjes that are pulled from the local repository, we actually get the default mime_types - assert set(self.client.get("/v1/organisations/test-org/plugins/kat_test").json()["mime_types"]) == set( + assert set(self.client.get("/v1/organisations/test-org/plugins/kat_test").json()["produces"]) == set( ["boefje/kat_test"] ) diff --git a/boefjes/boefjes/plugins/kat_adr_finding_types/boefje.json b/boefjes/boefjes/plugins/kat_adr_finding_types/boefje.json index df1cd5bc0a8..fe2debcb4e4 100644 --- a/boefjes/boefjes/plugins/kat_adr_finding_types/boefje.json +++ b/boefjes/boefjes/plugins/kat_adr_finding_types/boefje.json @@ -5,9 +5,6 @@ "consumes": [ "ADRFindingType" ], - "produces": [ - "ADRFindingType" - ], "scan_level": 0, "enabled": true } diff --git a/boefjes/boefjes/plugins/kat_adr_validator/boefje.json b/boefjes/boefjes/plugins/kat_adr_validator/boefje.json index 2d17ce85b91..7ca04c78683 100644 --- a/boefjes/boefjes/plugins/kat_adr_validator/boefje.json +++ b/boefjes/boefjes/plugins/kat_adr_validator/boefje.json @@ -5,9 +5,5 @@ "consumes": [ "RESTAPI" ], - "produces": [ - "ADRFindingType", - "Finding" - ], "scan_level": 1 } diff --git a/boefjes/boefjes/plugins/kat_binaryedge/boefje.json b/boefjes/boefjes/plugins/kat_binaryedge/boefje.json index cb350ac4d1a..64c47c49514 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/boefje.json +++ b/boefjes/boefjes/plugins/kat_binaryedge/boefje.json @@ -6,16 +6,6 @@ "IPAddressV4", "IPAddressV6" ], - "produces": [ - "KATFindingType", - "SoftwareInstance", - "Service", - "IPPort", - "Finding", - "Software", - "IPService", - "CVEFindingType" - ], "environment_keys": ["BINARYEDGE_API"], "scan_level": 2 } diff --git a/boefjes/boefjes/plugins/kat_censys/boefje.json b/boefjes/boefjes/plugins/kat_censys/boefje.json index f1870b402ae..bde5eaf5d31 100644 --- a/boefjes/boefjes/plugins/kat_censys/boefje.json +++ b/boefjes/boefjes/plugins/kat_censys/boefje.json @@ -6,13 +6,6 @@ "IPAddressV4", "IPAddressV6" ], - "produces": [ - "IPPort", - "X509Certificate", - "SoftwareInstance", - "ResolvedHostname", - "HTTPHeader" - ], "environment_keys": [ "CENSYS_API_ID", "CENSYS_API_SECRET" diff --git a/boefjes/boefjes/plugins/kat_crt_sh/boefje.json b/boefjes/boefjes/plugins/kat_crt_sh/boefje.json index 3b9d91ab9f4..8521eff4d30 100644 --- a/boefjes/boefjes/plugins/kat_crt_sh/boefje.json +++ b/boefjes/boefjes/plugins/kat_crt_sh/boefje.json @@ -5,9 +5,5 @@ "consumes": [ "DNSZone" ], - "produces": [ - "Hostname", - "X509Certificate" - ], "scan_level": 1 } diff --git a/boefjes/boefjes/plugins/kat_cve_2023_34039/boefje.json b/boefjes/boefjes/plugins/kat_cve_2023_34039/boefje.json index 57dddf7f697..58fc7e78dd4 100644 --- a/boefjes/boefjes/plugins/kat_cve_2023_34039/boefje.json +++ b/boefjes/boefjes/plugins/kat_cve_2023_34039/boefje.json @@ -5,9 +5,5 @@ "consumes": [ "IPService" ], - "produces": [ - "Finding", - "CVEFindingType" - ], "scan_level": 4 } diff --git a/boefjes/boefjes/plugins/kat_cve_2023_35078/boefje.json b/boefjes/boefjes/plugins/kat_cve_2023_35078/boefje.json index 009087b9b41..061b33b2f33 100644 --- a/boefjes/boefjes/plugins/kat_cve_2023_35078/boefje.json +++ b/boefjes/boefjes/plugins/kat_cve_2023_35078/boefje.json @@ -5,9 +5,5 @@ "consumes": [ "Website" ], - "produces": [ - "Finding", - "CVEFindingType" - ], "scan_level": 2 } diff --git a/boefjes/boefjes/plugins/kat_cve_finding_types/boefje.json b/boefjes/boefjes/plugins/kat_cve_finding_types/boefje.json index 49e93918840..8837ecfbbbc 100644 --- a/boefjes/boefjes/plugins/kat_cve_finding_types/boefje.json +++ b/boefjes/boefjes/plugins/kat_cve_finding_types/boefje.json @@ -5,9 +5,6 @@ "consumes": [ "CVEFindingType" ], - "produces": [ - "CVEFindingType" - ], "environment_keys": [ "CVEAPI_URL" ], diff --git a/boefjes/boefjes/plugins/kat_cwe_finding_types/boefje.json b/boefjes/boefjes/plugins/kat_cwe_finding_types/boefje.json index 7b1cca338e6..9cac0bdb0f8 100644 --- a/boefjes/boefjes/plugins/kat_cwe_finding_types/boefje.json +++ b/boefjes/boefjes/plugins/kat_cwe_finding_types/boefje.json @@ -5,9 +5,6 @@ "consumes": [ "CWEFindingType" ], - "produces": [ - "CWEFindingType" - ], "scan_level": 0, "enabled": true } diff --git a/boefjes/boefjes/plugins/kat_dicom/boefje.json b/boefjes/boefjes/plugins/kat_dicom/boefje.json index 83896c8846e..b3420ae60fe 100644 --- a/boefjes/boefjes/plugins/kat_dicom/boefje.json +++ b/boefjes/boefjes/plugins/kat_dicom/boefje.json @@ -6,12 +6,5 @@ "IPAddressV4", "IPAddressV6" ], - "produces": [ - "KATFindingType", - "SoftwareInstance", - "IPPort", - "Finding", - "Software" - ], "scan_level": 2 } diff --git a/boefjes/boefjes/plugins/kat_dns/boefje.json b/boefjes/boefjes/plugins/kat_dns/boefje.json index 25f4d48c53b..1479a0212ca 100644 --- a/boefjes/boefjes/plugins/kat_dns/boefje.json +++ b/boefjes/boefjes/plugins/kat_dns/boefje.json @@ -5,20 +5,5 @@ "consumes": [ "Hostname" ], - "produces": [ - "IPAddressV6", - "DNSARecord", - "DNSNSRecord", - "DNSTXTRecord", - "DNSSOARecord", - "NXDOMAIN", - "DNSCNAMERecord", - "DNSMXRecord", - "Hostname", - "Network", - "DNSAAAARecord", - "IPAddressV4", - "DNSZone" - ], "scan_level": 1 } diff --git a/boefjes/boefjes/plugins/kat_dns_zone/boefje.json b/boefjes/boefjes/plugins/kat_dns_zone/boefje.json index 59bdcec3b0d..c3d80c3e035 100644 --- a/boefjes/boefjes/plugins/kat_dns_zone/boefje.json +++ b/boefjes/boefjes/plugins/kat_dns_zone/boefje.json @@ -5,10 +5,5 @@ "consumes": [ "DNSZone" ], - "produces": [ - "Hostname", - "DNSZone", - "DNSSOARecord" - ], "scan_level": 1 } diff --git a/boefjes/boefjes/plugins/kat_dnssec/boefje.json b/boefjes/boefjes/plugins/kat_dnssec/boefje.json index 7bb45a0034b..18af1c42a8d 100644 --- a/boefjes/boefjes/plugins/kat_dnssec/boefje.json +++ b/boefjes/boefjes/plugins/kat_dnssec/boefje.json @@ -5,9 +5,5 @@ "consumes": [ "Hostname" ], - "produces": [ - "KATFindingType", - "Finding" - ], "scan_level": 1 } diff --git a/boefjes/boefjes/plugins/kat_external_db/boefje.json b/boefjes/boefjes/plugins/kat_external_db/boefje.json index d9123a3c09f..390b0450095 100644 --- a/boefjes/boefjes/plugins/kat_external_db/boefje.json +++ b/boefjes/boefjes/plugins/kat_external_db/boefje.json @@ -5,13 +5,6 @@ "consumes": [ "Network" ], - "produces": [ - "Hostname", - "IPAddressV4", - "IPV4NetBlock", - "IPAddressV6", - "IPV6NetBlock" - ], "environment_keys": [ "DB_URL", "DB_ACCESS_TOKEN", diff --git a/boefjes/boefjes/plugins/kat_fierce/boefje.json b/boefjes/boefjes/plugins/kat_fierce/boefje.json index 72c8073aa66..f4f581e43d4 100644 --- a/boefjes/boefjes/plugins/kat_fierce/boefje.json +++ b/boefjes/boefjes/plugins/kat_fierce/boefje.json @@ -5,12 +5,5 @@ "consumes": [ "Hostname" ], - "produces": [ - "IPAddressV6", - "DNSARecord", - "Hostname", - "DNSAAAARecord", - "IPAddressV4" - ], "scan_level": 3 } diff --git a/boefjes/boefjes/plugins/kat_green_hosting/boefje.json b/boefjes/boefjes/plugins/kat_green_hosting/boefje.json index 26ad9816d07..27f7f399169 100644 --- a/boefjes/boefjes/plugins/kat_green_hosting/boefje.json +++ b/boefjes/boefjes/plugins/kat_green_hosting/boefje.json @@ -5,9 +5,5 @@ "consumes": [ "Website" ], - "produces": [ - "KATFindingType", - "Finding" - ], "scan_level": 1 } diff --git a/boefjes/boefjes/plugins/kat_kat_finding_types/boefje.json b/boefjes/boefjes/plugins/kat_kat_finding_types/boefje.json index e1ae254df1b..a61e1390561 100644 --- a/boefjes/boefjes/plugins/kat_kat_finding_types/boefje.json +++ b/boefjes/boefjes/plugins/kat_kat_finding_types/boefje.json @@ -5,9 +5,6 @@ "consumes": [ "KATFindingType" ], - "produces": [ - "KATFindingType" - ], "scan_level": 0, "enabled": true } diff --git a/boefjes/boefjes/plugins/kat_leakix/boefje.json b/boefjes/boefjes/plugins/kat_leakix/boefje.json index bfbef853875..c11af08c010 100644 --- a/boefjes/boefjes/plugins/kat_leakix/boefje.json +++ b/boefjes/boefjes/plugins/kat_leakix/boefje.json @@ -7,16 +7,6 @@ "IPAddressV6", "Hostname" ], - "produces": [ - "KATFindingType", - "SoftwareInstance", - "Service", - "IPPort", - "Finding", - "Software", - "IPService", - "CVEFindingType" - ], "environment_keys": ["LEAKIX_API"], "scan_level": 1 } diff --git a/boefjes/boefjes/plugins/kat_log4shell/boefje.json b/boefjes/boefjes/plugins/kat_log4shell/boefje.json index c71951052b9..02b4a5ba03a 100644 --- a/boefjes/boefjes/plugins/kat_log4shell/boefje.json +++ b/boefjes/boefjes/plugins/kat_log4shell/boefje.json @@ -5,10 +5,6 @@ "consumes": [ "Hostname" ], - "produces": [ - "Finding", - "CVEFindingType" - ], "environment_keys": [ "REPLY_FQDN" ], diff --git a/boefjes/boefjes/plugins/kat_manyportsopen/boefje.json b/boefjes/boefjes/plugins/kat_manyportsopen/boefje.json index b1c5062b123..04002df537e 100644 --- a/boefjes/boefjes/plugins/kat_manyportsopen/boefje.json +++ b/boefjes/boefjes/plugins/kat_manyportsopen/boefje.json @@ -6,9 +6,5 @@ "IPAddressV4", "IPAddressV6" ], - "produces": [ - "KATFindingType", - "Finding" - ], "scan_level": 1 } diff --git a/boefjes/boefjes/plugins/kat_masscan/boefje.json b/boefjes/boefjes/plugins/kat_masscan/boefje.json index 104d245852f..2e5aeb6a2bb 100644 --- a/boefjes/boefjes/plugins/kat_masscan/boefje.json +++ b/boefjes/boefjes/plugins/kat_masscan/boefje.json @@ -5,10 +5,6 @@ "consumes": [ "IPV4NetBlock" ], - "produces": [ - "IPAddressV4", - "IPPort" - ], "environment_keys": [ "PORTS", "MAX_RATE" diff --git a/boefjes/boefjes/plugins/kat_nmap/boefje.json b/boefjes/boefjes/plugins/kat_nmap/boefje.json index 887176ddcee..c380221e1a1 100644 --- a/boefjes/boefjes/plugins/kat_nmap/boefje.json +++ b/boefjes/boefjes/plugins/kat_nmap/boefje.json @@ -6,13 +6,6 @@ "IPAddressV4", "IPAddressV6" ], - "produces": [ - "IPAddressV6", - "Service", - "IPPort", - "IPAddressV4", - "IPService" - ], "environment_keys": [ "TOP_PORTS", "PROTOCOL" diff --git a/boefjes/boefjes/plugins/kat_nmap_ip_range/boefje.json b/boefjes/boefjes/plugins/kat_nmap_ip_range/boefje.json index a7859e04cf7..1691c8f1617 100644 --- a/boefjes/boefjes/plugins/kat_nmap_ip_range/boefje.json +++ b/boefjes/boefjes/plugins/kat_nmap_ip_range/boefje.json @@ -6,13 +6,6 @@ "IPV6NetBlock", "IPV4NetBlock" ], - "produces": [ - "IPAddressV6", - "Service", - "IPPort", - "IPAddressV4", - "IPService" - ], "environment_keys": [ "TOP_PORTS_TCP", "TOP_PORTS_UDP" diff --git a/boefjes/boefjes/plugins/kat_nmap_ports/boefje.json b/boefjes/boefjes/plugins/kat_nmap_ports/boefje.json index 6357916b1b0..78cc72489cb 100644 --- a/boefjes/boefjes/plugins/kat_nmap_ports/boefje.json +++ b/boefjes/boefjes/plugins/kat_nmap_ports/boefje.json @@ -6,13 +6,6 @@ "IPAddressV4", "IPAddressV6" ], - "produces": [ - "IPAddressV6", - "Service", - "IPPort", - "IPAddressV4", - "IPService" - ], "environment_keys": [ "PORTS" ], diff --git a/boefjes/boefjes/plugins/kat_nuclei_cve/boefje.json b/boefjes/boefjes/plugins/kat_nuclei_cve/boefje.json index 7f50f6cfd6e..3f565ad0372 100644 --- a/boefjes/boefjes/plugins/kat_nuclei_cve/boefje.json +++ b/boefjes/boefjes/plugins/kat_nuclei_cve/boefje.json @@ -6,9 +6,5 @@ "Hostname", "HostnameHTTPURL" ], - "produces": [ - "Finding", - "CVEFindingType" - ], "scan_level": 3 } diff --git a/boefjes/boefjes/plugins/kat_nuclei_exposed_panels/boefje.json b/boefjes/boefjes/plugins/kat_nuclei_exposed_panels/boefje.json index bab8d5ffb9c..86b5546ee90 100644 --- a/boefjes/boefjes/plugins/kat_nuclei_exposed_panels/boefje.json +++ b/boefjes/boefjes/plugins/kat_nuclei_exposed_panels/boefje.json @@ -6,9 +6,5 @@ "Hostname", "HostnameHTTPURL" ], - "produces": [ - "Finding", - "KATFindingType" - ], "scan_level": 3 } diff --git a/boefjes/boefjes/plugins/kat_nuclei_take_over/boefje.json b/boefjes/boefjes/plugins/kat_nuclei_take_over/boefje.json index bd971c18c63..da316a37e9f 100644 --- a/boefjes/boefjes/plugins/kat_nuclei_take_over/boefje.json +++ b/boefjes/boefjes/plugins/kat_nuclei_take_over/boefje.json @@ -6,9 +6,5 @@ "Hostname", "HostnameHTTPURL" ], - "produces": [ - "Finding", - "KATFindingType" - ], "scan_level": 3 } diff --git a/boefjes/boefjes/plugins/kat_rdns/boefje.json b/boefjes/boefjes/plugins/kat_rdns/boefje.json index 72afdd317c8..da44a6ade39 100644 --- a/boefjes/boefjes/plugins/kat_rdns/boefje.json +++ b/boefjes/boefjes/plugins/kat_rdns/boefje.json @@ -6,8 +6,5 @@ "IPAddressV4", "IPAddressV6" ], - "produces": [ - "DNSPTRRecord" - ], "scan_level": 1 } diff --git a/boefjes/boefjes/plugins/kat_retirejs_finding_types/boefje.json b/boefjes/boefjes/plugins/kat_retirejs_finding_types/boefje.json index 05cf286cd50..cc5633440f6 100644 --- a/boefjes/boefjes/plugins/kat_retirejs_finding_types/boefje.json +++ b/boefjes/boefjes/plugins/kat_retirejs_finding_types/boefje.json @@ -5,9 +5,6 @@ "consumes": [ "RetireJSFindingType" ], - "produces": [ - "RetireJSFindingType" - ], "scan_level": 0, "enabled": true } diff --git a/boefjes/boefjes/plugins/kat_security_txt_downloader/boefje.json b/boefjes/boefjes/plugins/kat_security_txt_downloader/boefje.json index a54131614e7..fc732f577a9 100644 --- a/boefjes/boefjes/plugins/kat_security_txt_downloader/boefje.json +++ b/boefjes/boefjes/plugins/kat_security_txt_downloader/boefje.json @@ -5,10 +5,5 @@ "consumes": [ "Website" ], - "produces": [ - "SecurityTXT", - "Website", - "URL" - ], "scan_level": 2 } diff --git a/boefjes/boefjes/plugins/kat_shodan/boefje.json b/boefjes/boefjes/plugins/kat_shodan/boefje.json index 8e6ab25bced..c0dc80abfea 100644 --- a/boefjes/boefjes/plugins/kat_shodan/boefje.json +++ b/boefjes/boefjes/plugins/kat_shodan/boefje.json @@ -6,11 +6,6 @@ "IPAddressV4", "IPAddressV6" ], - "produces": [ - "Finding", - "IPPort", - "CVEFindingType" - ], "environment_keys": ["SHODAN_API"], "scan_level": 1 } diff --git a/boefjes/boefjes/plugins/kat_snyk/boefje.json b/boefjes/boefjes/plugins/kat_snyk/boefje.json index e8686d6a176..6ad75cb7ecb 100644 --- a/boefjes/boefjes/plugins/kat_snyk/boefje.json +++ b/boefjes/boefjes/plugins/kat_snyk/boefje.json @@ -5,11 +5,5 @@ "consumes": [ "SoftwareInstance" ], - "produces": [ - "Finding", - "KATFindingType", - "SnykFindingType", - "CVEFindingType" - ], "scan_level": 1 } diff --git a/boefjes/boefjes/plugins/kat_snyk_finding_types/boefje.json b/boefjes/boefjes/plugins/kat_snyk_finding_types/boefje.json index 5b37fe236b5..7fbe67d7a6b 100644 --- a/boefjes/boefjes/plugins/kat_snyk_finding_types/boefje.json +++ b/boefjes/boefjes/plugins/kat_snyk_finding_types/boefje.json @@ -5,9 +5,6 @@ "consumes": [ "SnykFindingType" ], - "produces": [ - "SnykFindingType" - ], "scan_level": 0, "enabled": true } diff --git a/boefjes/boefjes/plugins/kat_ssl_certificates/boefje.json b/boefjes/boefjes/plugins/kat_ssl_certificates/boefje.json index 9032fc6cd6b..82e7d893366 100644 --- a/boefjes/boefjes/plugins/kat_ssl_certificates/boefje.json +++ b/boefjes/boefjes/plugins/kat_ssl_certificates/boefje.json @@ -5,8 +5,5 @@ "consumes": [ "Website" ], - "produces": [ - "X509Certificate" - ], "scan_level": 1 } diff --git a/boefjes/boefjes/plugins/kat_ssl_scan/boefje.json b/boefjes/boefjes/plugins/kat_ssl_scan/boefje.json index 8064626ae4a..19dd606f0e5 100644 --- a/boefjes/boefjes/plugins/kat_ssl_scan/boefje.json +++ b/boefjes/boefjes/plugins/kat_ssl_scan/boefje.json @@ -5,9 +5,5 @@ "consumes": [ "Website" ], - "produces": [ - "KATFindingType", - "Finding" - ], "scan_level": 2 } diff --git a/boefjes/boefjes/plugins/kat_testssl_sh_ciphers/boefje.json b/boefjes/boefjes/plugins/kat_testssl_sh_ciphers/boefje.json index 2a0e4ae4c76..75aa3041f7a 100644 --- a/boefjes/boefjes/plugins/kat_testssl_sh_ciphers/boefje.json +++ b/boefjes/boefjes/plugins/kat_testssl_sh_ciphers/boefje.json @@ -5,8 +5,5 @@ "consumes": [ "IPService" ], - "produces": [ - "TLSCipher" - ], "scan_level": 2 } diff --git a/boefjes/boefjes/plugins/kat_webpage_analysis/boefje.json b/boefjes/boefjes/plugins/kat_webpage_analysis/boefje.json index d89d83da533..52b29e0462d 100644 --- a/boefjes/boefjes/plugins/kat_webpage_analysis/boefje.json +++ b/boefjes/boefjes/plugins/kat_webpage_analysis/boefje.json @@ -6,9 +6,6 @@ "HTTPResource" ], "produces": [ - "HTTPHeader" - ], - "mime_types": [ "openkat-http/full", "openkat-http/headers", diff --git a/boefjes/boefjes/plugins/kat_webpage_capture/boefje.json b/boefjes/boefjes/plugins/kat_webpage_capture/boefje.json index bf5b5c52789..349257edd82 100644 --- a/boefjes/boefjes/plugins/kat_webpage_capture/boefje.json +++ b/boefjes/boefjes/plugins/kat_webpage_capture/boefje.json @@ -6,8 +6,7 @@ "HostnameHTTPURL", "IPAddressHTTPURL" ], - "produces": [], - "mime_types": [ + "produces": [ "image/png", "application/zip+json", "application/har+json", diff --git a/boefjes/boefjes/plugins/kat_website_software/boefje.json b/boefjes/boefjes/plugins/kat_website_software/boefje.json index b56811efaa0..bf8348c3d39 100644 --- a/boefjes/boefjes/plugins/kat_website_software/boefje.json +++ b/boefjes/boefjes/plugins/kat_website_software/boefje.json @@ -5,9 +5,5 @@ "consumes": [ "HostnameHTTPURL" ], - "produces": [ - "Software", - "SoftwareInstance" - ], "scan_level": 2 } diff --git a/boefjes/boefjes/plugins/kat_wpscan/boefje.json b/boefjes/boefjes/plugins/kat_wpscan/boefje.json index fb6c0511311..d668217a52a 100644 --- a/boefjes/boefjes/plugins/kat_wpscan/boefje.json +++ b/boefjes/boefjes/plugins/kat_wpscan/boefje.json @@ -5,10 +5,6 @@ "consumes": [ "SoftwareInstance" ], - "produces": [ - "Finding", - "CVEFindingType" - ], "environment_keys": ["WP_SCAN_API"], "scan_level": 2 } diff --git a/boefjes/boefjes/plugins/models.py b/boefjes/boefjes/plugins/models.py index 7b50bb235ed..77fc915b652 100644 --- a/boefjes/boefjes/plugins/models.py +++ b/boefjes/boefjes/plugins/models.py @@ -56,7 +56,7 @@ def __init__(self, path: Path, package: str): self.path = path self.boefje: Boefje = Boefje.parse_file(path / BOEFJE_DEFINITION_FILE) self.boefje.runnable_hash = get_runnable_hash(self.path) - self.boefje.mime_types = self.boefje.mime_types.union(set(_default_mime_types(self.boefje))) + self.boefje.produces = self.boefje.produces.union(set(_default_mime_types(self.boefje))) self.module = get_runnable_module_from_package(package, ENTRYPOINT_BOEFJES, parameter_count=1) diff --git a/boefjes/boefjes/plugins/pdio_subfinder/boefje.json b/boefjes/boefjes/plugins/pdio_subfinder/boefje.json index 406392f9d75..0f297173688 100644 --- a/boefjes/boefjes/plugins/pdio_subfinder/boefje.json +++ b/boefjes/boefjes/plugins/pdio_subfinder/boefje.json @@ -5,8 +5,5 @@ "consumes": [ "Hostname" ], - "produces": [ - "Hostname" - ], "scan_level": 2 } diff --git a/rocky/katalogus/client.py b/rocky/katalogus/client.py index 107fd9f4826..f478c3efefc 100644 --- a/rocky/katalogus/client.py +++ b/rocky/katalogus/client.py @@ -30,13 +30,7 @@ class Plugin(BaseModel): related: List[str] = None enabled: bool type: str - produces: Set[Type[OOI]] - - def dict(self, *args, **kwargs): - """Pydantic does not stringify the OOI classes, but then templates can't render them""" - plugin_dict = super().dict(*args, **kwargs) - plugin_dict["produces"] = {ooi_class.get_ooi_type() for ooi_class in plugin_dict["produces"]} - return plugin_dict + produces: Set[str] def can_scan(self, member) -> bool: return member.has_perm("tools.can_scan_organization") @@ -173,19 +167,13 @@ def parse_boefje(boefje: Dict) -> Boefje: scan_level = SCAN_LEVEL(boefje["scan_level"]) consumes = set() - produces = set() + for type_name in boefje.get("consumes", []): try: consumes.add(type_by_name(type_name)) except StopIteration: logger.warning("Unknown OOI type %s for boefje consumes %s", type_name, boefje["id"]) - for type_name in boefje.get("produces", []): - try: - produces.add(type_by_name(type_name)) - except StopIteration: - logger.warning("Unknown OOI type %s for boefje produces %s", type_name, boefje["id"]) - return Boefje( id=boefje["id"], repository_id=boefje["repository_id"], @@ -195,7 +183,7 @@ def parse_boefje(boefje: Dict) -> Boefje: type=boefje["type"], scan_level=scan_level, consumes=consumes, - produces=produces, + produces=boefje["produces"], ) diff --git a/rocky/katalogus/templates/boefje_detail.html b/rocky/katalogus/templates/boefje_detail.html index fd8b376f09e..3eb7d5730b7 100644 --- a/rocky/katalogus/templates/boefje_detail.html +++ b/rocky/katalogus/templates/boefje_detail.html @@ -65,10 +65,10 @@

    {% translate "Produces" %}

    {% endblocktranslate %}

    - {% for ooi in plugin.produces %} - {{ ooi }} - {% if ooi != plugin.produces|last %}-{% endif %} - {% endfor %} + {{ plugin.produce }} +

      + {% for mime_type in plugin.produces %}
    • {{ mime_type }}
    • {% endfor %} +

    {% include "tasks/partials/boefje_task_history.html" %} From 56c8004ba41e9f6d3d7ba94920048e361278a78a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Nov 2023 13:53:48 +0100 Subject: [PATCH 17/30] Bump aiohttp from 3.8.5 to 3.8.6 in /boefjes (#2035) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: ammar --- boefjes/poetry.lock | 210 +++++++++++++++++++--------------- boefjes/requirements-dev.txt | 212 ++++++++++++++++++++--------------- boefjes/requirements.txt | 202 ++++++++++++++++++--------------- 3 files changed, 358 insertions(+), 266 deletions(-) diff --git a/boefjes/poetry.lock b/boefjes/poetry.lock index 889348bfc3e..50c33cb0c17 100644 --- a/boefjes/poetry.lock +++ b/boefjes/poetry.lock @@ -2,98 +2,98 @@ [[package]] name = "aiohttp" -version = "3.8.5" +version = "3.8.6" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.6" files = [ - {file = "aiohttp-3.8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a94159871304770da4dd371f4291b20cac04e8c94f11bdea1c3478e557fbe0d8"}, - {file = "aiohttp-3.8.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:13bf85afc99ce6f9ee3567b04501f18f9f8dbbb2ea11ed1a2e079670403a7c84"}, - {file = "aiohttp-3.8.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2ce2ac5708501afc4847221a521f7e4b245abf5178cf5ddae9d5b3856ddb2f3a"}, - {file = "aiohttp-3.8.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96943e5dcc37a6529d18766597c491798b7eb7a61d48878611298afc1fca946c"}, - {file = "aiohttp-3.8.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ad5c3c4590bb3cc28b4382f031f3783f25ec223557124c68754a2231d989e2b"}, - {file = "aiohttp-3.8.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0c413c633d0512df4dc7fd2373ec06cc6a815b7b6d6c2f208ada7e9e93a5061d"}, - {file = "aiohttp-3.8.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df72ac063b97837a80d80dec8d54c241af059cc9bb42c4de68bd5b61ceb37caa"}, - {file = "aiohttp-3.8.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c48c5c0271149cfe467c0ff8eb941279fd6e3f65c9a388c984e0e6cf57538e14"}, - {file = "aiohttp-3.8.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:368a42363c4d70ab52c2c6420a57f190ed3dfaca6a1b19afda8165ee16416a82"}, - {file = "aiohttp-3.8.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7607ec3ce4993464368505888af5beb446845a014bc676d349efec0e05085905"}, - {file = "aiohttp-3.8.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:0d21c684808288a98914e5aaf2a7c6a3179d4df11d249799c32d1808e79503b5"}, - {file = "aiohttp-3.8.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:312fcfbacc7880a8da0ae8b6abc6cc7d752e9caa0051a53d217a650b25e9a691"}, - {file = "aiohttp-3.8.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ad093e823df03bb3fd37e7dec9d4670c34f9e24aeace76808fc20a507cace825"}, - {file = "aiohttp-3.8.5-cp310-cp310-win32.whl", hash = "sha256:33279701c04351a2914e1100b62b2a7fdb9a25995c4a104259f9a5ead7ed4802"}, - {file = "aiohttp-3.8.5-cp310-cp310-win_amd64.whl", hash = "sha256:6e4a280e4b975a2e7745573e3fc9c9ba0d1194a3738ce1cbaa80626cc9b4f4df"}, - {file = "aiohttp-3.8.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae871a964e1987a943d83d6709d20ec6103ca1eaf52f7e0d36ee1b5bebb8b9b9"}, - {file = "aiohttp-3.8.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:461908b2578955045efde733719d62f2b649c404189a09a632d245b445c9c975"}, - {file = "aiohttp-3.8.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:72a860c215e26192379f57cae5ab12b168b75db8271f111019509a1196dfc780"}, - {file = "aiohttp-3.8.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc14be025665dba6202b6a71cfcdb53210cc498e50068bc088076624471f8bb9"}, - {file = "aiohttp-3.8.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8af740fc2711ad85f1a5c034a435782fbd5b5f8314c9a3ef071424a8158d7f6b"}, - {file = "aiohttp-3.8.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:841cd8233cbd2111a0ef0a522ce016357c5e3aff8a8ce92bcfa14cef890d698f"}, - {file = "aiohttp-3.8.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ed1c46fb119f1b59304b5ec89f834f07124cd23ae5b74288e364477641060ff"}, - {file = "aiohttp-3.8.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84f8ae3e09a34f35c18fa57f015cc394bd1389bce02503fb30c394d04ee6b938"}, - {file = "aiohttp-3.8.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62360cb771707cb70a6fd114b9871d20d7dd2163a0feafe43fd115cfe4fe845e"}, - {file = "aiohttp-3.8.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:23fb25a9f0a1ca1f24c0a371523546366bb642397c94ab45ad3aedf2941cec6a"}, - {file = "aiohttp-3.8.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b0ba0d15164eae3d878260d4c4df859bbdc6466e9e6689c344a13334f988bb53"}, - {file = "aiohttp-3.8.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5d20003b635fc6ae3f96d7260281dfaf1894fc3aa24d1888a9b2628e97c241e5"}, - {file = "aiohttp-3.8.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0175d745d9e85c40dcc51c8f88c74bfbaef9e7afeeeb9d03c37977270303064c"}, - {file = "aiohttp-3.8.5-cp311-cp311-win32.whl", hash = "sha256:2e1b1e51b0774408f091d268648e3d57f7260c1682e7d3a63cb00d22d71bb945"}, - {file = "aiohttp-3.8.5-cp311-cp311-win_amd64.whl", hash = "sha256:043d2299f6dfdc92f0ac5e995dfc56668e1587cea7f9aa9d8a78a1b6554e5755"}, - {file = "aiohttp-3.8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cae533195e8122584ec87531d6df000ad07737eaa3c81209e85c928854d2195c"}, - {file = "aiohttp-3.8.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f21e83f355643c345177a5d1d8079f9f28b5133bcd154193b799d380331d5d3"}, - {file = "aiohttp-3.8.5-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a7a75ef35f2df54ad55dbf4b73fe1da96f370e51b10c91f08b19603c64004acc"}, - {file = "aiohttp-3.8.5-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e2e9839e14dd5308ee773c97115f1e0a1cb1d75cbeeee9f33824fa5144c7634"}, - {file = "aiohttp-3.8.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c44e65da1de4403d0576473e2344828ef9c4c6244d65cf4b75549bb46d40b8dd"}, - {file = "aiohttp-3.8.5-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78d847e4cde6ecc19125ccbc9bfac4a7ab37c234dd88fbb3c5c524e8e14da543"}, - {file = "aiohttp-3.8.5-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:c7a815258e5895d8900aec4454f38dca9aed71085f227537208057853f9d13f2"}, - {file = "aiohttp-3.8.5-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:8b929b9bd7cd7c3939f8bcfffa92fae7480bd1aa425279d51a89327d600c704d"}, - {file = "aiohttp-3.8.5-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:5db3a5b833764280ed7618393832e0853e40f3d3e9aa128ac0ba0f8278d08649"}, - {file = "aiohttp-3.8.5-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:a0215ce6041d501f3155dc219712bc41252d0ab76474615b9700d63d4d9292af"}, - {file = "aiohttp-3.8.5-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:fd1ed388ea7fbed22c4968dd64bab0198de60750a25fe8c0c9d4bef5abe13824"}, - {file = "aiohttp-3.8.5-cp36-cp36m-win32.whl", hash = "sha256:6e6783bcc45f397fdebc118d772103d751b54cddf5b60fbcc958382d7dd64f3e"}, - {file = "aiohttp-3.8.5-cp36-cp36m-win_amd64.whl", hash = "sha256:b5411d82cddd212644cf9360879eb5080f0d5f7d809d03262c50dad02f01421a"}, - {file = "aiohttp-3.8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:01d4c0c874aa4ddfb8098e85d10b5e875a70adc63db91f1ae65a4b04d3344cda"}, - {file = "aiohttp-3.8.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5980a746d547a6ba173fd5ee85ce9077e72d118758db05d229044b469d9029a"}, - {file = "aiohttp-3.8.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a482e6da906d5e6e653be079b29bc173a48e381600161c9932d89dfae5942ef"}, - {file = "aiohttp-3.8.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80bd372b8d0715c66c974cf57fe363621a02f359f1ec81cba97366948c7fc873"}, - {file = "aiohttp-3.8.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1161b345c0a444ebcf46bf0a740ba5dcf50612fd3d0528883fdc0eff578006a"}, - {file = "aiohttp-3.8.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd56db019015b6acfaaf92e1ac40eb8434847d9bf88b4be4efe5bfd260aee692"}, - {file = "aiohttp-3.8.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:153c2549f6c004d2754cc60603d4668899c9895b8a89397444a9c4efa282aaf4"}, - {file = "aiohttp-3.8.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4a01951fabc4ce26ab791da5f3f24dca6d9a6f24121746eb19756416ff2d881b"}, - {file = "aiohttp-3.8.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bfb9162dcf01f615462b995a516ba03e769de0789de1cadc0f916265c257e5d8"}, - {file = "aiohttp-3.8.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:7dde0009408969a43b04c16cbbe252c4f5ef4574ac226bc8815cd7342d2028b6"}, - {file = "aiohttp-3.8.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4149d34c32f9638f38f544b3977a4c24052042affa895352d3636fa8bffd030a"}, - {file = "aiohttp-3.8.5-cp37-cp37m-win32.whl", hash = "sha256:68c5a82c8779bdfc6367c967a4a1b2aa52cd3595388bf5961a62158ee8a59e22"}, - {file = "aiohttp-3.8.5-cp37-cp37m-win_amd64.whl", hash = "sha256:2cf57fb50be5f52bda004b8893e63b48530ed9f0d6c96c84620dc92fe3cd9b9d"}, - {file = "aiohttp-3.8.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:eca4bf3734c541dc4f374ad6010a68ff6c6748f00451707f39857f429ca36ced"}, - {file = "aiohttp-3.8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1274477e4c71ce8cfe6c1ec2f806d57c015ebf84d83373676036e256bc55d690"}, - {file = "aiohttp-3.8.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:28c543e54710d6158fc6f439296c7865b29e0b616629767e685a7185fab4a6b9"}, - {file = "aiohttp-3.8.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:910bec0c49637d213f5d9877105d26e0c4a4de2f8b1b29405ff37e9fc0ad52b8"}, - {file = "aiohttp-3.8.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5443910d662db951b2e58eb70b0fbe6b6e2ae613477129a5805d0b66c54b6cb7"}, - {file = "aiohttp-3.8.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e460be6978fc24e3df83193dc0cc4de46c9909ed92dd47d349a452ef49325b7"}, - {file = "aiohttp-3.8.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb1558def481d84f03b45888473fc5a1f35747b5f334ef4e7a571bc0dfcb11f8"}, - {file = "aiohttp-3.8.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34dd0c107799dcbbf7d48b53be761a013c0adf5571bf50c4ecad5643fe9cfcd0"}, - {file = "aiohttp-3.8.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aa1990247f02a54185dc0dff92a6904521172a22664c863a03ff64c42f9b5410"}, - {file = "aiohttp-3.8.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0e584a10f204a617d71d359fe383406305a4b595b333721fa50b867b4a0a1548"}, - {file = "aiohttp-3.8.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:a3cf433f127efa43fee6b90ea4c6edf6c4a17109d1d037d1a52abec84d8f2e42"}, - {file = "aiohttp-3.8.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:c11f5b099adafb18e65c2c997d57108b5bbeaa9eeee64a84302c0978b1ec948b"}, - {file = "aiohttp-3.8.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:84de26ddf621d7ac4c975dbea4c945860e08cccde492269db4e1538a6a6f3c35"}, - {file = "aiohttp-3.8.5-cp38-cp38-win32.whl", hash = "sha256:ab88bafedc57dd0aab55fa728ea10c1911f7e4d8b43e1d838a1739f33712921c"}, - {file = "aiohttp-3.8.5-cp38-cp38-win_amd64.whl", hash = "sha256:5798a9aad1879f626589f3df0f8b79b3608a92e9beab10e5fda02c8a2c60db2e"}, - {file = "aiohttp-3.8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a6ce61195c6a19c785df04e71a4537e29eaa2c50fe745b732aa937c0c77169f3"}, - {file = "aiohttp-3.8.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:773dd01706d4db536335fcfae6ea2440a70ceb03dd3e7378f3e815b03c97ab51"}, - {file = "aiohttp-3.8.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f83a552443a526ea38d064588613aca983d0ee0038801bc93c0c916428310c28"}, - {file = "aiohttp-3.8.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f7372f7341fcc16f57b2caded43e81ddd18df53320b6f9f042acad41f8e049a"}, - {file = "aiohttp-3.8.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea353162f249c8097ea63c2169dd1aa55de1e8fecbe63412a9bc50816e87b761"}, - {file = "aiohttp-3.8.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5d47ae48db0b2dcf70bc8a3bc72b3de86e2a590fc299fdbbb15af320d2659de"}, - {file = "aiohttp-3.8.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d827176898a2b0b09694fbd1088c7a31836d1a505c243811c87ae53a3f6273c1"}, - {file = "aiohttp-3.8.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3562b06567c06439d8b447037bb655ef69786c590b1de86c7ab81efe1c9c15d8"}, - {file = "aiohttp-3.8.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4e874cbf8caf8959d2adf572a78bba17cb0e9d7e51bb83d86a3697b686a0ab4d"}, - {file = "aiohttp-3.8.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6809a00deaf3810e38c628e9a33271892f815b853605a936e2e9e5129762356c"}, - {file = "aiohttp-3.8.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:33776e945d89b29251b33a7e7d006ce86447b2cfd66db5e5ded4e5cd0340585c"}, - {file = "aiohttp-3.8.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:eaeed7abfb5d64c539e2db173f63631455f1196c37d9d8d873fc316470dfbacd"}, - {file = "aiohttp-3.8.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e91d635961bec2d8f19dfeb41a539eb94bd073f075ca6dae6c8dc0ee89ad6f91"}, - {file = "aiohttp-3.8.5-cp39-cp39-win32.whl", hash = "sha256:00ad4b6f185ec67f3e6562e8a1d2b69660be43070bd0ef6fcec5211154c7df67"}, - {file = "aiohttp-3.8.5-cp39-cp39-win_amd64.whl", hash = "sha256:c0a9034379a37ae42dea7ac1e048352d96286626251862e448933c0f59cbd79c"}, - {file = "aiohttp-3.8.5.tar.gz", hash = "sha256:b9552ec52cc147dbf1944ac7ac98af7602e51ea2dcd076ed194ca3c0d1c7d0bc"}, + {file = "aiohttp-3.8.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:41d55fc043954cddbbd82503d9cc3f4814a40bcef30b3569bc7b5e34130718c1"}, + {file = "aiohttp-3.8.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1d84166673694841d8953f0a8d0c90e1087739d24632fe86b1a08819168b4566"}, + {file = "aiohttp-3.8.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:253bf92b744b3170eb4c4ca2fa58f9c4b87aeb1df42f71d4e78815e6e8b73c9e"}, + {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3fd194939b1f764d6bb05490987bfe104287bbf51b8d862261ccf66f48fb4096"}, + {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c5f938d199a6fdbdc10bbb9447496561c3a9a565b43be564648d81e1102ac22"}, + {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2817b2f66ca82ee699acd90e05c95e79bbf1dc986abb62b61ec8aaf851e81c93"}, + {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fa375b3d34e71ccccf172cab401cd94a72de7a8cc01847a7b3386204093bb47"}, + {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9de50a199b7710fa2904be5a4a9b51af587ab24c8e540a7243ab737b45844543"}, + {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e1d8cb0b56b3587c5c01de3bf2f600f186da7e7b5f7353d1bf26a8ddca57f965"}, + {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8e31e9db1bee8b4f407b77fd2507337a0a80665ad7b6c749d08df595d88f1cf5"}, + {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7bc88fc494b1f0311d67f29fee6fd636606f4697e8cc793a2d912ac5b19aa38d"}, + {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ec00c3305788e04bf6d29d42e504560e159ccaf0be30c09203b468a6c1ccd3b2"}, + {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ad1407db8f2f49329729564f71685557157bfa42b48f4b93e53721a16eb813ed"}, + {file = "aiohttp-3.8.6-cp310-cp310-win32.whl", hash = "sha256:ccc360e87341ad47c777f5723f68adbb52b37ab450c8bc3ca9ca1f3e849e5fe2"}, + {file = "aiohttp-3.8.6-cp310-cp310-win_amd64.whl", hash = "sha256:93c15c8e48e5e7b89d5cb4613479d144fda8344e2d886cf694fd36db4cc86865"}, + {file = "aiohttp-3.8.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e2f9cc8e5328f829f6e1fb74a0a3a939b14e67e80832975e01929e320386b34"}, + {file = "aiohttp-3.8.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e6a00ffcc173e765e200ceefb06399ba09c06db97f401f920513a10c803604ca"}, + {file = "aiohttp-3.8.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:41bdc2ba359032e36c0e9de5a3bd00d6fb7ea558a6ce6b70acedf0da86458321"}, + {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14cd52ccf40006c7a6cd34a0f8663734e5363fd981807173faf3a017e202fec9"}, + {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2d5b785c792802e7b275c420d84f3397668e9d49ab1cb52bd916b3b3ffcf09ad"}, + {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1bed815f3dc3d915c5c1e556c397c8667826fbc1b935d95b0ad680787896a358"}, + {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96603a562b546632441926cd1293cfcb5b69f0b4159e6077f7c7dbdfb686af4d"}, + {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d76e8b13161a202d14c9584590c4df4d068c9567c99506497bdd67eaedf36403"}, + {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e3f1e3f1a1751bb62b4a1b7f4e435afcdade6c17a4fd9b9d43607cebd242924a"}, + {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:76b36b3124f0223903609944a3c8bf28a599b2cc0ce0be60b45211c8e9be97f8"}, + {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:a2ece4af1f3c967a4390c284797ab595a9f1bc1130ef8b01828915a05a6ae684"}, + {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:16d330b3b9db87c3883e565340d292638a878236418b23cc8b9b11a054aaa887"}, + {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:42c89579f82e49db436b69c938ab3e1559e5a4409eb8639eb4143989bc390f2f"}, + {file = "aiohttp-3.8.6-cp311-cp311-win32.whl", hash = "sha256:efd2fcf7e7b9d7ab16e6b7d54205beded0a9c8566cb30f09c1abe42b4e22bdcb"}, + {file = "aiohttp-3.8.6-cp311-cp311-win_amd64.whl", hash = "sha256:3b2ab182fc28e7a81f6c70bfbd829045d9480063f5ab06f6e601a3eddbbd49a0"}, + {file = "aiohttp-3.8.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:fdee8405931b0615220e5ddf8cd7edd8592c606a8e4ca2a00704883c396e4479"}, + {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d25036d161c4fe2225d1abff2bd52c34ed0b1099f02c208cd34d8c05729882f0"}, + {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d791245a894be071d5ab04bbb4850534261a7d4fd363b094a7b9963e8cdbd31"}, + {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0cccd1de239afa866e4ce5c789b3032442f19c261c7d8a01183fd956b1935349"}, + {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f13f60d78224f0dace220d8ab4ef1dbc37115eeeab8c06804fec11bec2bbd07"}, + {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a9b5a0606faca4f6cc0d338359d6fa137104c337f489cd135bb7fbdbccb1e39"}, + {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:13da35c9ceb847732bf5c6c5781dcf4780e14392e5d3b3c689f6d22f8e15ae31"}, + {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:4d4cbe4ffa9d05f46a28252efc5941e0462792930caa370a6efaf491f412bc66"}, + {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:229852e147f44da0241954fc6cb910ba074e597f06789c867cb7fb0621e0ba7a"}, + {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:713103a8bdde61d13490adf47171a1039fd880113981e55401a0f7b42c37d071"}, + {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:45ad816b2c8e3b60b510f30dbd37fe74fd4a772248a52bb021f6fd65dff809b6"}, + {file = "aiohttp-3.8.6-cp36-cp36m-win32.whl", hash = "sha256:2b8d4e166e600dcfbff51919c7a3789ff6ca8b3ecce16e1d9c96d95dd569eb4c"}, + {file = "aiohttp-3.8.6-cp36-cp36m-win_amd64.whl", hash = "sha256:0912ed87fee967940aacc5306d3aa8ba3a459fcd12add0b407081fbefc931e53"}, + {file = "aiohttp-3.8.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e2a988a0c673c2e12084f5e6ba3392d76c75ddb8ebc6c7e9ead68248101cd446"}, + {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebf3fd9f141700b510d4b190094db0ce37ac6361a6806c153c161dc6c041ccda"}, + {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3161ce82ab85acd267c8f4b14aa226047a6bee1e4e6adb74b798bd42c6ae1f80"}, + {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d95fc1bf33a9a81469aa760617b5971331cdd74370d1214f0b3109272c0e1e3c"}, + {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c43ecfef7deaf0617cee936836518e7424ee12cb709883f2c9a1adda63cc460"}, + {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca80e1b90a05a4f476547f904992ae81eda5c2c85c66ee4195bb8f9c5fb47f28"}, + {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:90c72ebb7cb3a08a7f40061079817133f502a160561d0675b0a6adf231382c92"}, + {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bb54c54510e47a8c7c8e63454a6acc817519337b2b78606c4e840871a3e15349"}, + {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:de6a1c9f6803b90e20869e6b99c2c18cef5cc691363954c93cb9adeb26d9f3ae"}, + {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:a3628b6c7b880b181a3ae0a0683698513874df63783fd89de99b7b7539e3e8a8"}, + {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:fc37e9aef10a696a5a4474802930079ccfc14d9f9c10b4662169671ff034b7df"}, + {file = "aiohttp-3.8.6-cp37-cp37m-win32.whl", hash = "sha256:f8ef51e459eb2ad8e7a66c1d6440c808485840ad55ecc3cafefadea47d1b1ba2"}, + {file = "aiohttp-3.8.6-cp37-cp37m-win_amd64.whl", hash = "sha256:b2fe42e523be344124c6c8ef32a011444e869dc5f883c591ed87f84339de5976"}, + {file = "aiohttp-3.8.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:9e2ee0ac5a1f5c7dd3197de309adfb99ac4617ff02b0603fd1e65b07dc772e4b"}, + {file = "aiohttp-3.8.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:01770d8c04bd8db568abb636c1fdd4f7140b284b8b3e0b4584f070180c1e5c62"}, + {file = "aiohttp-3.8.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3c68330a59506254b556b99a91857428cab98b2f84061260a67865f7f52899f5"}, + {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89341b2c19fb5eac30c341133ae2cc3544d40d9b1892749cdd25892bbc6ac951"}, + {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:71783b0b6455ac8f34b5ec99d83e686892c50498d5d00b8e56d47f41b38fbe04"}, + {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f628dbf3c91e12f4d6c8b3f092069567d8eb17814aebba3d7d60c149391aee3a"}, + {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b04691bc6601ef47c88f0255043df6f570ada1a9ebef99c34bd0b72866c217ae"}, + {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ee912f7e78287516df155f69da575a0ba33b02dd7c1d6614dbc9463f43066e3"}, + {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9c19b26acdd08dd239e0d3669a3dddafd600902e37881f13fbd8a53943079dbc"}, + {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:99c5ac4ad492b4a19fc132306cd57075c28446ec2ed970973bbf036bcda1bcc6"}, + {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:f0f03211fd14a6a0aed2997d4b1c013d49fb7b50eeb9ffdf5e51f23cfe2c77fa"}, + {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:8d399dade330c53b4106160f75f55407e9ae7505263ea86f2ccca6bfcbdb4921"}, + {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ec4fd86658c6a8964d75426517dc01cbf840bbf32d055ce64a9e63a40fd7b771"}, + {file = "aiohttp-3.8.6-cp38-cp38-win32.whl", hash = "sha256:33164093be11fcef3ce2571a0dccd9041c9a93fa3bde86569d7b03120d276c6f"}, + {file = "aiohttp-3.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:bdf70bfe5a1414ba9afb9d49f0c912dc524cf60141102f3a11143ba3d291870f"}, + {file = "aiohttp-3.8.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d52d5dc7c6682b720280f9d9db41d36ebe4791622c842e258c9206232251ab2b"}, + {file = "aiohttp-3.8.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4ac39027011414dbd3d87f7edb31680e1f430834c8cef029f11c66dad0670aa5"}, + {file = "aiohttp-3.8.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3f5c7ce535a1d2429a634310e308fb7d718905487257060e5d4598e29dc17f0b"}, + {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b30e963f9e0d52c28f284d554a9469af073030030cef8693106d918b2ca92f54"}, + {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:918810ef188f84152af6b938254911055a72e0f935b5fbc4c1a4ed0b0584aed1"}, + {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:002f23e6ea8d3dd8d149e569fd580c999232b5fbc601c48d55398fbc2e582e8c"}, + {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fcf3eabd3fd1a5e6092d1242295fa37d0354b2eb2077e6eb670accad78e40e1"}, + {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:255ba9d6d5ff1a382bb9a578cd563605aa69bec845680e21c44afc2670607a95"}, + {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d67f8baed00870aa390ea2590798766256f31dc5ed3ecc737debb6e97e2ede78"}, + {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:86f20cee0f0a317c76573b627b954c412ea766d6ada1a9fcf1b805763ae7feeb"}, + {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:39a312d0e991690ccc1a61f1e9e42daa519dcc34ad03eb6f826d94c1190190dd"}, + {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e827d48cf802de06d9c935088c2924e3c7e7533377d66b6f31ed175c1620e05e"}, + {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bd111d7fc5591ddf377a408ed9067045259ff2770f37e2d94e6478d0f3fc0c17"}, + {file = "aiohttp-3.8.6-cp39-cp39-win32.whl", hash = "sha256:caf486ac1e689dda3502567eb89ffe02876546599bbf915ec94b1fa424eeffd4"}, + {file = "aiohttp-3.8.6-cp39-cp39-win_amd64.whl", hash = "sha256:3f0e27e5b733803333bb2371249f41cf42bae8884863e8e8965ec69bebe53132"}, + {file = "aiohttp-3.8.6.tar.gz", hash = "sha256:b0cf2a4501bff9330a8a5248b4ce951851e415bdcce9dc158e76cfd55e15085c"}, ] [package.dependencies] @@ -848,6 +848,7 @@ files = [ {file = "greenlet-2.0.2-cp27-cp27m-win32.whl", hash = "sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74"}, {file = "greenlet-2.0.2-cp27-cp27m-win_amd64.whl", hash = "sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343"}, {file = "greenlet-2.0.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae"}, + {file = "greenlet-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d967650d3f56af314b72df7089d96cda1083a7fc2da05b375d2bc48c82ab3f3c"}, {file = "greenlet-2.0.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df"}, {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088"}, {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb"}, @@ -856,6 +857,7 @@ files = [ {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91"}, {file = "greenlet-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645"}, {file = "greenlet-2.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c"}, + {file = "greenlet-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d4606a527e30548153be1a9f155f4e283d109ffba663a15856089fb55f933e47"}, {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca"}, {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0"}, {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2"}, @@ -885,6 +887,7 @@ files = [ {file = "greenlet-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7"}, {file = "greenlet-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3"}, {file = "greenlet-2.0.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30"}, + {file = "greenlet-2.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1087300cf9700bbf455b1b97e24db18f2f77b55302a68272c56209d5587c12d1"}, {file = "greenlet-2.0.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b"}, {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526"}, {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b"}, @@ -893,6 +896,7 @@ files = [ {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a"}, {file = "greenlet-2.0.2-cp38-cp38-win32.whl", hash = "sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249"}, {file = "greenlet-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40"}, + {file = "greenlet-2.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8512a0c38cfd4e66a858ddd1b17705587900dd760c6003998e9472b77b56d417"}, {file = "greenlet-2.0.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8"}, {file = "greenlet-2.0.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6"}, {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df"}, @@ -1333,6 +1337,16 @@ files = [ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, @@ -2196,6 +2210,7 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -2203,8 +2218,15 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -2221,6 +2243,7 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -2228,6 +2251,7 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -2520,6 +2544,7 @@ files = [ {file = "SQLAlchemy-1.4.49-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:03db81b89fe7ef3857b4a00b63dedd632d6183d4ea5a31c5d8a92e000a41fc71"}, {file = "SQLAlchemy-1.4.49-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:95b9df9afd680b7a3b13b38adf6e3a38995da5e162cc7524ef08e3be4e5ed3e1"}, {file = "SQLAlchemy-1.4.49-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a63e43bf3f668c11bb0444ce6e809c1227b8f067ca1068898f3008a273f52b09"}, + {file = "SQLAlchemy-1.4.49-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca46de16650d143a928d10842939dab208e8d8c3a9a8757600cae9b7c579c5cd"}, {file = "SQLAlchemy-1.4.49-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f835c050ebaa4e48b18403bed2c0fda986525896efd76c245bdd4db995e51a4c"}, {file = "SQLAlchemy-1.4.49-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c21b172dfb22e0db303ff6419451f0cac891d2e911bb9fbf8003d717f1bcf91"}, {file = "SQLAlchemy-1.4.49-cp310-cp310-win32.whl", hash = "sha256:5fb1ebdfc8373b5a291485757bd6431de8d7ed42c27439f543c81f6c8febd729"}, @@ -2529,26 +2554,35 @@ files = [ {file = "SQLAlchemy-1.4.49-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5debe7d49b8acf1f3035317e63d9ec8d5e4d904c6e75a2a9246a119f5f2fdf3d"}, {file = "SQLAlchemy-1.4.49-cp311-cp311-win32.whl", hash = "sha256:82b08e82da3756765c2e75f327b9bf6b0f043c9c3925fb95fb51e1567fa4ee87"}, {file = "SQLAlchemy-1.4.49-cp311-cp311-win_amd64.whl", hash = "sha256:171e04eeb5d1c0d96a544caf982621a1711d078dbc5c96f11d6469169bd003f1"}, + {file = "SQLAlchemy-1.4.49-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f23755c384c2969ca2f7667a83f7c5648fcf8b62a3f2bbd883d805454964a800"}, + {file = "SQLAlchemy-1.4.49-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8396e896e08e37032e87e7fbf4a15f431aa878c286dc7f79e616c2feacdb366c"}, + {file = "SQLAlchemy-1.4.49-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66da9627cfcc43bbdebd47bfe0145bb662041472393c03b7802253993b6b7c90"}, + {file = "SQLAlchemy-1.4.49-cp312-cp312-win32.whl", hash = "sha256:9a06e046ffeb8a484279e54bda0a5abfd9675f594a2e38ef3133d7e4d75b6214"}, + {file = "SQLAlchemy-1.4.49-cp312-cp312-win_amd64.whl", hash = "sha256:7cf8b90ad84ad3a45098b1c9f56f2b161601e4670827d6b892ea0e884569bd1d"}, {file = "SQLAlchemy-1.4.49-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:36e58f8c4fe43984384e3fbe6341ac99b6b4e083de2fe838f0fdb91cebe9e9cb"}, {file = "SQLAlchemy-1.4.49-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b31e67ff419013f99ad6f8fc73ee19ea31585e1e9fe773744c0f3ce58c039c30"}, + {file = "SQLAlchemy-1.4.49-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebc22807a7e161c0d8f3da34018ab7c97ef6223578fcdd99b1d3e7ed1100a5db"}, {file = "SQLAlchemy-1.4.49-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c14b29d9e1529f99efd550cd04dbb6db6ba5d690abb96d52de2bff4ed518bc95"}, {file = "SQLAlchemy-1.4.49-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c40f3470e084d31247aea228aa1c39bbc0904c2b9ccbf5d3cfa2ea2dac06f26d"}, {file = "SQLAlchemy-1.4.49-cp36-cp36m-win32.whl", hash = "sha256:706bfa02157b97c136547c406f263e4c6274a7b061b3eb9742915dd774bbc264"}, {file = "SQLAlchemy-1.4.49-cp36-cp36m-win_amd64.whl", hash = "sha256:a7f7b5c07ae5c0cfd24c2db86071fb2a3d947da7bd487e359cc91e67ac1c6d2e"}, {file = "SQLAlchemy-1.4.49-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:4afbbf5ef41ac18e02c8dc1f86c04b22b7a2125f2a030e25bbb4aff31abb224b"}, {file = "SQLAlchemy-1.4.49-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24e300c0c2147484a002b175f4e1361f102e82c345bf263242f0449672a4bccf"}, + {file = "SQLAlchemy-1.4.49-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:393cd06c3b00b57f5421e2133e088df9cabcececcea180327e43b937b5a7caa5"}, {file = "SQLAlchemy-1.4.49-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:201de072b818f8ad55c80d18d1a788729cccf9be6d9dc3b9d8613b053cd4836d"}, {file = "SQLAlchemy-1.4.49-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653ed6817c710d0c95558232aba799307d14ae084cc9b1f4c389157ec50df5c"}, {file = "SQLAlchemy-1.4.49-cp37-cp37m-win32.whl", hash = "sha256:647e0b309cb4512b1f1b78471fdaf72921b6fa6e750b9f891e09c6e2f0e5326f"}, {file = "SQLAlchemy-1.4.49-cp37-cp37m-win_amd64.whl", hash = "sha256:ab73ed1a05ff539afc4a7f8cf371764cdf79768ecb7d2ec691e3ff89abbc541e"}, {file = "SQLAlchemy-1.4.49-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:37ce517c011560d68f1ffb28af65d7e06f873f191eb3a73af5671e9c3fada08a"}, {file = "SQLAlchemy-1.4.49-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1878ce508edea4a879015ab5215546c444233881301e97ca16fe251e89f1c55"}, + {file = "SQLAlchemy-1.4.49-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95ab792ca493891d7a45a077e35b418f68435efb3e1706cb8155e20e86a9013c"}, {file = "SQLAlchemy-1.4.49-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0e8e608983e6f85d0852ca61f97e521b62e67969e6e640fe6c6b575d4db68557"}, {file = "SQLAlchemy-1.4.49-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccf956da45290df6e809ea12c54c02ace7f8ff4d765d6d3dfb3655ee876ce58d"}, {file = "SQLAlchemy-1.4.49-cp38-cp38-win32.whl", hash = "sha256:f167c8175ab908ce48bd6550679cc6ea20ae169379e73c7720a28f89e53aa532"}, {file = "SQLAlchemy-1.4.49-cp38-cp38-win_amd64.whl", hash = "sha256:45806315aae81a0c202752558f0df52b42d11dd7ba0097bf71e253b4215f34f4"}, {file = "SQLAlchemy-1.4.49-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:b6d0c4b15d65087738a6e22e0ff461b407533ff65a73b818089efc8eb2b3e1de"}, {file = "SQLAlchemy-1.4.49-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a843e34abfd4c797018fd8d00ffffa99fd5184c421f190b6ca99def4087689bd"}, + {file = "SQLAlchemy-1.4.49-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:738d7321212941ab19ba2acf02a68b8ee64987b248ffa2101630e8fccb549e0d"}, {file = "SQLAlchemy-1.4.49-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1c890421651b45a681181301b3497e4d57c0d01dc001e10438a40e9a9c25ee77"}, {file = "SQLAlchemy-1.4.49-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d26f280b8f0a8f497bc10573849ad6dc62e671d2468826e5c748d04ed9e670d5"}, {file = "SQLAlchemy-1.4.49-cp39-cp39-win32.whl", hash = "sha256:ec2268de67f73b43320383947e74700e95c6770d0c68c4e615e9897e46296294"}, diff --git a/boefjes/requirements-dev.txt b/boefjes/requirements-dev.txt index f45c4a9df74..e2e0c92ef75 100644 --- a/boefjes/requirements-dev.txt +++ b/boefjes/requirements-dev.txt @@ -1,91 +1,91 @@ -aiohttp==3.8.5 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00ad4b6f185ec67f3e6562e8a1d2b69660be43070bd0ef6fcec5211154c7df67 \ - --hash=sha256:0175d745d9e85c40dcc51c8f88c74bfbaef9e7afeeeb9d03c37977270303064c \ - --hash=sha256:01d4c0c874aa4ddfb8098e85d10b5e875a70adc63db91f1ae65a4b04d3344cda \ - --hash=sha256:043d2299f6dfdc92f0ac5e995dfc56668e1587cea7f9aa9d8a78a1b6554e5755 \ - --hash=sha256:0c413c633d0512df4dc7fd2373ec06cc6a815b7b6d6c2f208ada7e9e93a5061d \ - --hash=sha256:0d21c684808288a98914e5aaf2a7c6a3179d4df11d249799c32d1808e79503b5 \ - --hash=sha256:0e584a10f204a617d71d359fe383406305a4b595b333721fa50b867b4a0a1548 \ - --hash=sha256:1274477e4c71ce8cfe6c1ec2f806d57c015ebf84d83373676036e256bc55d690 \ - --hash=sha256:13bf85afc99ce6f9ee3567b04501f18f9f8dbbb2ea11ed1a2e079670403a7c84 \ - --hash=sha256:153c2549f6c004d2754cc60603d4668899c9895b8a89397444a9c4efa282aaf4 \ - --hash=sha256:1f7372f7341fcc16f57b2caded43e81ddd18df53320b6f9f042acad41f8e049a \ - --hash=sha256:23fb25a9f0a1ca1f24c0a371523546366bb642397c94ab45ad3aedf2941cec6a \ - --hash=sha256:28c543e54710d6158fc6f439296c7865b29e0b616629767e685a7185fab4a6b9 \ - --hash=sha256:2a482e6da906d5e6e653be079b29bc173a48e381600161c9932d89dfae5942ef \ - --hash=sha256:2ad5c3c4590bb3cc28b4382f031f3783f25ec223557124c68754a2231d989e2b \ - --hash=sha256:2ce2ac5708501afc4847221a521f7e4b245abf5178cf5ddae9d5b3856ddb2f3a \ - --hash=sha256:2cf57fb50be5f52bda004b8893e63b48530ed9f0d6c96c84620dc92fe3cd9b9d \ - --hash=sha256:2e1b1e51b0774408f091d268648e3d57f7260c1682e7d3a63cb00d22d71bb945 \ - --hash=sha256:2e2e9839e14dd5308ee773c97115f1e0a1cb1d75cbeeee9f33824fa5144c7634 \ - --hash=sha256:2e460be6978fc24e3df83193dc0cc4de46c9909ed92dd47d349a452ef49325b7 \ - --hash=sha256:312fcfbacc7880a8da0ae8b6abc6cc7d752e9caa0051a53d217a650b25e9a691 \ - --hash=sha256:33279701c04351a2914e1100b62b2a7fdb9a25995c4a104259f9a5ead7ed4802 \ - --hash=sha256:33776e945d89b29251b33a7e7d006ce86447b2cfd66db5e5ded4e5cd0340585c \ - --hash=sha256:34dd0c107799dcbbf7d48b53be761a013c0adf5571bf50c4ecad5643fe9cfcd0 \ - --hash=sha256:3562b06567c06439d8b447037bb655ef69786c590b1de86c7ab81efe1c9c15d8 \ - --hash=sha256:368a42363c4d70ab52c2c6420a57f190ed3dfaca6a1b19afda8165ee16416a82 \ - --hash=sha256:4149d34c32f9638f38f544b3977a4c24052042affa895352d3636fa8bffd030a \ - --hash=sha256:461908b2578955045efde733719d62f2b649c404189a09a632d245b445c9c975 \ - --hash=sha256:4a01951fabc4ce26ab791da5f3f24dca6d9a6f24121746eb19756416ff2d881b \ - --hash=sha256:4e874cbf8caf8959d2adf572a78bba17cb0e9d7e51bb83d86a3697b686a0ab4d \ - --hash=sha256:4f21e83f355643c345177a5d1d8079f9f28b5133bcd154193b799d380331d5d3 \ - --hash=sha256:5443910d662db951b2e58eb70b0fbe6b6e2ae613477129a5805d0b66c54b6cb7 \ - --hash=sha256:5798a9aad1879f626589f3df0f8b79b3608a92e9beab10e5fda02c8a2c60db2e \ - --hash=sha256:5d20003b635fc6ae3f96d7260281dfaf1894fc3aa24d1888a9b2628e97c241e5 \ - --hash=sha256:5db3a5b833764280ed7618393832e0853e40f3d3e9aa128ac0ba0f8278d08649 \ - --hash=sha256:5ed1c46fb119f1b59304b5ec89f834f07124cd23ae5b74288e364477641060ff \ - --hash=sha256:62360cb771707cb70a6fd114b9871d20d7dd2163a0feafe43fd115cfe4fe845e \ - --hash=sha256:6809a00deaf3810e38c628e9a33271892f815b853605a936e2e9e5129762356c \ - --hash=sha256:68c5a82c8779bdfc6367c967a4a1b2aa52cd3595388bf5961a62158ee8a59e22 \ - --hash=sha256:6e4a280e4b975a2e7745573e3fc9c9ba0d1194a3738ce1cbaa80626cc9b4f4df \ - --hash=sha256:6e6783bcc45f397fdebc118d772103d751b54cddf5b60fbcc958382d7dd64f3e \ - --hash=sha256:72a860c215e26192379f57cae5ab12b168b75db8271f111019509a1196dfc780 \ - --hash=sha256:7607ec3ce4993464368505888af5beb446845a014bc676d349efec0e05085905 \ - --hash=sha256:773dd01706d4db536335fcfae6ea2440a70ceb03dd3e7378f3e815b03c97ab51 \ - --hash=sha256:78d847e4cde6ecc19125ccbc9bfac4a7ab37c234dd88fbb3c5c524e8e14da543 \ - --hash=sha256:7dde0009408969a43b04c16cbbe252c4f5ef4574ac226bc8815cd7342d2028b6 \ - --hash=sha256:80bd372b8d0715c66c974cf57fe363621a02f359f1ec81cba97366948c7fc873 \ - --hash=sha256:841cd8233cbd2111a0ef0a522ce016357c5e3aff8a8ce92bcfa14cef890d698f \ - --hash=sha256:84de26ddf621d7ac4c975dbea4c945860e08cccde492269db4e1538a6a6f3c35 \ - --hash=sha256:84f8ae3e09a34f35c18fa57f015cc394bd1389bce02503fb30c394d04ee6b938 \ - --hash=sha256:8af740fc2711ad85f1a5c034a435782fbd5b5f8314c9a3ef071424a8158d7f6b \ - --hash=sha256:8b929b9bd7cd7c3939f8bcfffa92fae7480bd1aa425279d51a89327d600c704d \ - --hash=sha256:910bec0c49637d213f5d9877105d26e0c4a4de2f8b1b29405ff37e9fc0ad52b8 \ - --hash=sha256:96943e5dcc37a6529d18766597c491798b7eb7a61d48878611298afc1fca946c \ - --hash=sha256:a0215ce6041d501f3155dc219712bc41252d0ab76474615b9700d63d4d9292af \ - --hash=sha256:a3cf433f127efa43fee6b90ea4c6edf6c4a17109d1d037d1a52abec84d8f2e42 \ - --hash=sha256:a6ce61195c6a19c785df04e71a4537e29eaa2c50fe745b732aa937c0c77169f3 \ - --hash=sha256:a7a75ef35f2df54ad55dbf4b73fe1da96f370e51b10c91f08b19603c64004acc \ - --hash=sha256:a94159871304770da4dd371f4291b20cac04e8c94f11bdea1c3478e557fbe0d8 \ - --hash=sha256:aa1990247f02a54185dc0dff92a6904521172a22664c863a03ff64c42f9b5410 \ - --hash=sha256:ab88bafedc57dd0aab55fa728ea10c1911f7e4d8b43e1d838a1739f33712921c \ - --hash=sha256:ad093e823df03bb3fd37e7dec9d4670c34f9e24aeace76808fc20a507cace825 \ - --hash=sha256:ae871a964e1987a943d83d6709d20ec6103ca1eaf52f7e0d36ee1b5bebb8b9b9 \ - --hash=sha256:b0ba0d15164eae3d878260d4c4df859bbdc6466e9e6689c344a13334f988bb53 \ - --hash=sha256:b5411d82cddd212644cf9360879eb5080f0d5f7d809d03262c50dad02f01421a \ - --hash=sha256:b9552ec52cc147dbf1944ac7ac98af7602e51ea2dcd076ed194ca3c0d1c7d0bc \ - --hash=sha256:bfb9162dcf01f615462b995a516ba03e769de0789de1cadc0f916265c257e5d8 \ - --hash=sha256:c0a9034379a37ae42dea7ac1e048352d96286626251862e448933c0f59cbd79c \ - --hash=sha256:c1161b345c0a444ebcf46bf0a740ba5dcf50612fd3d0528883fdc0eff578006a \ - --hash=sha256:c11f5b099adafb18e65c2c997d57108b5bbeaa9eeee64a84302c0978b1ec948b \ - --hash=sha256:c44e65da1de4403d0576473e2344828ef9c4c6244d65cf4b75549bb46d40b8dd \ - --hash=sha256:c48c5c0271149cfe467c0ff8eb941279fd6e3f65c9a388c984e0e6cf57538e14 \ - --hash=sha256:c7a815258e5895d8900aec4454f38dca9aed71085f227537208057853f9d13f2 \ - --hash=sha256:cae533195e8122584ec87531d6df000ad07737eaa3c81209e85c928854d2195c \ - --hash=sha256:cc14be025665dba6202b6a71cfcdb53210cc498e50068bc088076624471f8bb9 \ - --hash=sha256:cd56db019015b6acfaaf92e1ac40eb8434847d9bf88b4be4efe5bfd260aee692 \ - --hash=sha256:d827176898a2b0b09694fbd1088c7a31836d1a505c243811c87ae53a3f6273c1 \ - --hash=sha256:df72ac063b97837a80d80dec8d54c241af059cc9bb42c4de68bd5b61ceb37caa \ - --hash=sha256:e5980a746d547a6ba173fd5ee85ce9077e72d118758db05d229044b469d9029a \ - --hash=sha256:e5d47ae48db0b2dcf70bc8a3bc72b3de86e2a590fc299fdbbb15af320d2659de \ - --hash=sha256:e91d635961bec2d8f19dfeb41a539eb94bd073f075ca6dae6c8dc0ee89ad6f91 \ - --hash=sha256:ea353162f249c8097ea63c2169dd1aa55de1e8fecbe63412a9bc50816e87b761 \ - --hash=sha256:eaeed7abfb5d64c539e2db173f63631455f1196c37d9d8d873fc316470dfbacd \ - --hash=sha256:eca4bf3734c541dc4f374ad6010a68ff6c6748f00451707f39857f429ca36ced \ - --hash=sha256:f83a552443a526ea38d064588613aca983d0ee0038801bc93c0c916428310c28 \ - --hash=sha256:fb1558def481d84f03b45888473fc5a1f35747b5f334ef4e7a571bc0dfcb11f8 \ - --hash=sha256:fd1ed388ea7fbed22c4968dd64bab0198de60750a25fe8c0c9d4bef5abe13824 +aiohttp==3.8.6 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:002f23e6ea8d3dd8d149e569fd580c999232b5fbc601c48d55398fbc2e582e8c \ + --hash=sha256:01770d8c04bd8db568abb636c1fdd4f7140b284b8b3e0b4584f070180c1e5c62 \ + --hash=sha256:0912ed87fee967940aacc5306d3aa8ba3a459fcd12add0b407081fbefc931e53 \ + --hash=sha256:0cccd1de239afa866e4ce5c789b3032442f19c261c7d8a01183fd956b1935349 \ + --hash=sha256:0fa375b3d34e71ccccf172cab401cd94a72de7a8cc01847a7b3386204093bb47 \ + --hash=sha256:13da35c9ceb847732bf5c6c5781dcf4780e14392e5d3b3c689f6d22f8e15ae31 \ + --hash=sha256:14cd52ccf40006c7a6cd34a0f8663734e5363fd981807173faf3a017e202fec9 \ + --hash=sha256:16d330b3b9db87c3883e565340d292638a878236418b23cc8b9b11a054aaa887 \ + --hash=sha256:1bed815f3dc3d915c5c1e556c397c8667826fbc1b935d95b0ad680787896a358 \ + --hash=sha256:1d84166673694841d8953f0a8d0c90e1087739d24632fe86b1a08819168b4566 \ + --hash=sha256:1f13f60d78224f0dace220d8ab4ef1dbc37115eeeab8c06804fec11bec2bbd07 \ + --hash=sha256:229852e147f44da0241954fc6cb910ba074e597f06789c867cb7fb0621e0ba7a \ + --hash=sha256:253bf92b744b3170eb4c4ca2fa58f9c4b87aeb1df42f71d4e78815e6e8b73c9e \ + --hash=sha256:255ba9d6d5ff1a382bb9a578cd563605aa69bec845680e21c44afc2670607a95 \ + --hash=sha256:2817b2f66ca82ee699acd90e05c95e79bbf1dc986abb62b61ec8aaf851e81c93 \ + --hash=sha256:2b8d4e166e600dcfbff51919c7a3789ff6ca8b3ecce16e1d9c96d95dd569eb4c \ + --hash=sha256:2d5b785c792802e7b275c420d84f3397668e9d49ab1cb52bd916b3b3ffcf09ad \ + --hash=sha256:3161ce82ab85acd267c8f4b14aa226047a6bee1e4e6adb74b798bd42c6ae1f80 \ + --hash=sha256:33164093be11fcef3ce2571a0dccd9041c9a93fa3bde86569d7b03120d276c6f \ + --hash=sha256:39a312d0e991690ccc1a61f1e9e42daa519dcc34ad03eb6f826d94c1190190dd \ + --hash=sha256:3b2ab182fc28e7a81f6c70bfbd829045d9480063f5ab06f6e601a3eddbbd49a0 \ + --hash=sha256:3c68330a59506254b556b99a91857428cab98b2f84061260a67865f7f52899f5 \ + --hash=sha256:3f0e27e5b733803333bb2371249f41cf42bae8884863e8e8965ec69bebe53132 \ + --hash=sha256:3f5c7ce535a1d2429a634310e308fb7d718905487257060e5d4598e29dc17f0b \ + --hash=sha256:3fd194939b1f764d6bb05490987bfe104287bbf51b8d862261ccf66f48fb4096 \ + --hash=sha256:41bdc2ba359032e36c0e9de5a3bd00d6fb7ea558a6ce6b70acedf0da86458321 \ + --hash=sha256:41d55fc043954cddbbd82503d9cc3f4814a40bcef30b3569bc7b5e34130718c1 \ + --hash=sha256:42c89579f82e49db436b69c938ab3e1559e5a4409eb8639eb4143989bc390f2f \ + --hash=sha256:45ad816b2c8e3b60b510f30dbd37fe74fd4a772248a52bb021f6fd65dff809b6 \ + --hash=sha256:4ac39027011414dbd3d87f7edb31680e1f430834c8cef029f11c66dad0670aa5 \ + --hash=sha256:4d4cbe4ffa9d05f46a28252efc5941e0462792930caa370a6efaf491f412bc66 \ + --hash=sha256:4fcf3eabd3fd1a5e6092d1242295fa37d0354b2eb2077e6eb670accad78e40e1 \ + --hash=sha256:5d791245a894be071d5ab04bbb4850534261a7d4fd363b094a7b9963e8cdbd31 \ + --hash=sha256:6c43ecfef7deaf0617cee936836518e7424ee12cb709883f2c9a1adda63cc460 \ + --hash=sha256:6c5f938d199a6fdbdc10bbb9447496561c3a9a565b43be564648d81e1102ac22 \ + --hash=sha256:6e2f9cc8e5328f829f6e1fb74a0a3a939b14e67e80832975e01929e320386b34 \ + --hash=sha256:713103a8bdde61d13490adf47171a1039fd880113981e55401a0f7b42c37d071 \ + --hash=sha256:71783b0b6455ac8f34b5ec99d83e686892c50498d5d00b8e56d47f41b38fbe04 \ + --hash=sha256:76b36b3124f0223903609944a3c8bf28a599b2cc0ce0be60b45211c8e9be97f8 \ + --hash=sha256:7bc88fc494b1f0311d67f29fee6fd636606f4697e8cc793a2d912ac5b19aa38d \ + --hash=sha256:7ee912f7e78287516df155f69da575a0ba33b02dd7c1d6614dbc9463f43066e3 \ + --hash=sha256:86f20cee0f0a317c76573b627b954c412ea766d6ada1a9fcf1b805763ae7feeb \ + --hash=sha256:89341b2c19fb5eac30c341133ae2cc3544d40d9b1892749cdd25892bbc6ac951 \ + --hash=sha256:8a9b5a0606faca4f6cc0d338359d6fa137104c337f489cd135bb7fbdbccb1e39 \ + --hash=sha256:8d399dade330c53b4106160f75f55407e9ae7505263ea86f2ccca6bfcbdb4921 \ + --hash=sha256:8e31e9db1bee8b4f407b77fd2507337a0a80665ad7b6c749d08df595d88f1cf5 \ + --hash=sha256:90c72ebb7cb3a08a7f40061079817133f502a160561d0675b0a6adf231382c92 \ + --hash=sha256:918810ef188f84152af6b938254911055a72e0f935b5fbc4c1a4ed0b0584aed1 \ + --hash=sha256:93c15c8e48e5e7b89d5cb4613479d144fda8344e2d886cf694fd36db4cc86865 \ + --hash=sha256:96603a562b546632441926cd1293cfcb5b69f0b4159e6077f7c7dbdfb686af4d \ + --hash=sha256:99c5ac4ad492b4a19fc132306cd57075c28446ec2ed970973bbf036bcda1bcc6 \ + --hash=sha256:9c19b26acdd08dd239e0d3669a3dddafd600902e37881f13fbd8a53943079dbc \ + --hash=sha256:9de50a199b7710fa2904be5a4a9b51af587ab24c8e540a7243ab737b45844543 \ + --hash=sha256:9e2ee0ac5a1f5c7dd3197de309adfb99ac4617ff02b0603fd1e65b07dc772e4b \ + --hash=sha256:a2ece4af1f3c967a4390c284797ab595a9f1bc1130ef8b01828915a05a6ae684 \ + --hash=sha256:a3628b6c7b880b181a3ae0a0683698513874df63783fd89de99b7b7539e3e8a8 \ + --hash=sha256:ad1407db8f2f49329729564f71685557157bfa42b48f4b93e53721a16eb813ed \ + --hash=sha256:b04691bc6601ef47c88f0255043df6f570ada1a9ebef99c34bd0b72866c217ae \ + --hash=sha256:b0cf2a4501bff9330a8a5248b4ce951851e415bdcce9dc158e76cfd55e15085c \ + --hash=sha256:b2fe42e523be344124c6c8ef32a011444e869dc5f883c591ed87f84339de5976 \ + --hash=sha256:b30e963f9e0d52c28f284d554a9469af073030030cef8693106d918b2ca92f54 \ + --hash=sha256:bb54c54510e47a8c7c8e63454a6acc817519337b2b78606c4e840871a3e15349 \ + --hash=sha256:bd111d7fc5591ddf377a408ed9067045259ff2770f37e2d94e6478d0f3fc0c17 \ + --hash=sha256:bdf70bfe5a1414ba9afb9d49f0c912dc524cf60141102f3a11143ba3d291870f \ + --hash=sha256:ca80e1b90a05a4f476547f904992ae81eda5c2c85c66ee4195bb8f9c5fb47f28 \ + --hash=sha256:caf486ac1e689dda3502567eb89ffe02876546599bbf915ec94b1fa424eeffd4 \ + --hash=sha256:ccc360e87341ad47c777f5723f68adbb52b37ab450c8bc3ca9ca1f3e849e5fe2 \ + --hash=sha256:d25036d161c4fe2225d1abff2bd52c34ed0b1099f02c208cd34d8c05729882f0 \ + --hash=sha256:d52d5dc7c6682b720280f9d9db41d36ebe4791622c842e258c9206232251ab2b \ + --hash=sha256:d67f8baed00870aa390ea2590798766256f31dc5ed3ecc737debb6e97e2ede78 \ + --hash=sha256:d76e8b13161a202d14c9584590c4df4d068c9567c99506497bdd67eaedf36403 \ + --hash=sha256:d95fc1bf33a9a81469aa760617b5971331cdd74370d1214f0b3109272c0e1e3c \ + --hash=sha256:de6a1c9f6803b90e20869e6b99c2c18cef5cc691363954c93cb9adeb26d9f3ae \ + --hash=sha256:e1d8cb0b56b3587c5c01de3bf2f600f186da7e7b5f7353d1bf26a8ddca57f965 \ + --hash=sha256:e2a988a0c673c2e12084f5e6ba3392d76c75ddb8ebc6c7e9ead68248101cd446 \ + --hash=sha256:e3f1e3f1a1751bb62b4a1b7f4e435afcdade6c17a4fd9b9d43607cebd242924a \ + --hash=sha256:e6a00ffcc173e765e200ceefb06399ba09c06db97f401f920513a10c803604ca \ + --hash=sha256:e827d48cf802de06d9c935088c2924e3c7e7533377d66b6f31ed175c1620e05e \ + --hash=sha256:ebf3fd9f141700b510d4b190094db0ce37ac6361a6806c153c161dc6c041ccda \ + --hash=sha256:ec00c3305788e04bf6d29d42e504560e159ccaf0be30c09203b468a6c1ccd3b2 \ + --hash=sha256:ec4fd86658c6a8964d75426517dc01cbf840bbf32d055ce64a9e63a40fd7b771 \ + --hash=sha256:efd2fcf7e7b9d7ab16e6b7d54205beded0a9c8566cb30f09c1abe42b4e22bdcb \ + --hash=sha256:f0f03211fd14a6a0aed2997d4b1c013d49fb7b50eeb9ffdf5e51f23cfe2c77fa \ + --hash=sha256:f628dbf3c91e12f4d6c8b3f092069567d8eb17814aebba3d7d60c149391aee3a \ + --hash=sha256:f8ef51e459eb2ad8e7a66c1d6440c808485840ad55ecc3cafefadea47d1b1ba2 \ + --hash=sha256:fc37e9aef10a696a5a4474802930079ccfc14d9f9c10b4662169671ff034b7df \ + --hash=sha256:fdee8405931b0615220e5ddf8cd7edd8592c606a8e4ca2a00704883c396e4479 aioresponses==0.7.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1160486b5ea96fcae6170cf2bdef029b9d3a283b7dbeabb3d7f1182769bfb6b7 \ --hash=sha256:9b8c108b36354c04633bad0ea752b55d956a7602fe3e3234b939fc44af96f1d8 @@ -419,6 +419,7 @@ googleapis-common-protos==1.60.0 ; python_version >= "3.8" and python_version < greenlet==2.0.2 ; python_version >= "3.8" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") and python_version < "4.0" \ --hash=sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a \ --hash=sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a \ + --hash=sha256:1087300cf9700bbf455b1b97e24db18f2f77b55302a68272c56209d5587c12d1 \ --hash=sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43 \ --hash=sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33 \ --hash=sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8 \ @@ -444,6 +445,7 @@ greenlet==2.0.2 ; python_version >= "3.8" and (platform_machine == "aarch64" or --hash=sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91 \ --hash=sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5 \ --hash=sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9 \ + --hash=sha256:8512a0c38cfd4e66a858ddd1b17705587900dd760c6003998e9472b77b56d417 \ --hash=sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8 \ --hash=sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b \ --hash=sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6 \ @@ -467,8 +469,10 @@ greenlet==2.0.2 ; python_version >= "3.8" and (platform_machine == "aarch64" or --hash=sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7 \ --hash=sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75 \ --hash=sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae \ + --hash=sha256:d4606a527e30548153be1a9f155f4e283d109ffba663a15856089fb55f933e47 \ --hash=sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b \ --hash=sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470 \ + --hash=sha256:d967650d3f56af314b72df7089d96cda1083a7fc2da05b375d2bc48c82ab3f3c \ --hash=sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564 \ --hash=sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9 \ --hash=sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099 \ @@ -662,8 +666,11 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ + --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \ --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ + --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \ + --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \ --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ @@ -671,6 +678,7 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ + --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \ --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ @@ -679,6 +687,7 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ + --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \ --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ @@ -686,9 +695,12 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ + --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \ --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ + --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \ --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ + --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \ --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ @@ -707,7 +719,9 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 + --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \ + --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \ + --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11 mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba @@ -1027,7 +1041,9 @@ pywin32==306 ; python_version >= "3.8" and python_version < "4.0" and sys_platfo --hash=sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407 \ --hash=sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0 pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ + --hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \ --hash=sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741 \ --hash=sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206 \ --hash=sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27 \ @@ -1035,7 +1051,10 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62 \ --hash=sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98 \ --hash=sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696 \ + --hash=sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290 \ + --hash=sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9 \ --hash=sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d \ + --hash=sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6 \ --hash=sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867 \ --hash=sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47 \ --hash=sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486 \ @@ -1043,9 +1062,12 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3 \ --hash=sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007 \ --hash=sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938 \ + --hash=sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0 \ --hash=sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c \ --hash=sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735 \ --hash=sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d \ + --hash=sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28 \ + --hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \ --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \ --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \ --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \ @@ -1060,7 +1082,9 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43 \ --hash=sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859 \ --hash=sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673 \ + --hash=sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54 \ --hash=sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a \ + --hash=sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b \ --hash=sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab \ --hash=sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa \ --hash=sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c \ @@ -1208,16 +1232,23 @@ sqlalchemy==1.4.49 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:2e126cf98b7fd38f1e33c64484406b78e937b1a280e078ef558b95bf5b6895f6 \ --hash=sha256:36e58f8c4fe43984384e3fbe6341ac99b6b4e083de2fe838f0fdb91cebe9e9cb \ --hash=sha256:37ce517c011560d68f1ffb28af65d7e06f873f191eb3a73af5671e9c3fada08a \ + --hash=sha256:393cd06c3b00b57f5421e2133e088df9cabcececcea180327e43b937b5a7caa5 \ --hash=sha256:45806315aae81a0c202752558f0df52b42d11dd7ba0097bf71e253b4215f34f4 \ --hash=sha256:4afbbf5ef41ac18e02c8dc1f86c04b22b7a2125f2a030e25bbb4aff31abb224b \ --hash=sha256:5debe7d49b8acf1f3035317e63d9ec8d5e4d904c6e75a2a9246a119f5f2fdf3d \ --hash=sha256:5fb1ebdfc8373b5a291485757bd6431de8d7ed42c27439f543c81f6c8febd729 \ --hash=sha256:647e0b309cb4512b1f1b78471fdaf72921b6fa6e750b9f891e09c6e2f0e5326f \ + --hash=sha256:66da9627cfcc43bbdebd47bfe0145bb662041472393c03b7802253993b6b7c90 \ --hash=sha256:706bfa02157b97c136547c406f263e4c6274a7b061b3eb9742915dd774bbc264 \ + --hash=sha256:738d7321212941ab19ba2acf02a68b8ee64987b248ffa2101630e8fccb549e0d \ --hash=sha256:7653ed6817c710d0c95558232aba799307d14ae084cc9b1f4c389157ec50df5c \ + --hash=sha256:7cf8b90ad84ad3a45098b1c9f56f2b161601e4670827d6b892ea0e884569bd1d \ --hash=sha256:82b08e82da3756765c2e75f327b9bf6b0f043c9c3925fb95fb51e1567fa4ee87 \ + --hash=sha256:8396e896e08e37032e87e7fbf4a15f431aa878c286dc7f79e616c2feacdb366c \ --hash=sha256:8923dfdf24d5aa8a3adb59723f54118dd4fe62cf59ed0d0d65d940579c1170a4 \ + --hash=sha256:95ab792ca493891d7a45a077e35b418f68435efb3e1706cb8155e20e86a9013c \ --hash=sha256:95b9df9afd680b7a3b13b38adf6e3a38995da5e162cc7524ef08e3be4e5ed3e1 \ + --hash=sha256:9a06e046ffeb8a484279e54bda0a5abfd9675f594a2e38ef3133d7e4d75b6214 \ --hash=sha256:9c21b172dfb22e0db303ff6419451f0cac891d2e911bb9fbf8003d717f1bcf91 \ --hash=sha256:a1878ce508edea4a879015ab5215546c444233881301e97ca16fe251e89f1c55 \ --hash=sha256:a63e43bf3f668c11bb0444ce6e809c1227b8f067ca1068898f3008a273f52b09 \ @@ -1230,10 +1261,13 @@ sqlalchemy==1.4.49 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:bbdf16372859b8ed3f4d05f925a984771cd2abd18bd187042f24be4886c2a15f \ --hash=sha256:c14b29d9e1529f99efd550cd04dbb6db6ba5d690abb96d52de2bff4ed518bc95 \ --hash=sha256:c40f3470e084d31247aea228aa1c39bbc0904c2b9ccbf5d3cfa2ea2dac06f26d \ + --hash=sha256:ca46de16650d143a928d10842939dab208e8d8c3a9a8757600cae9b7c579c5cd \ --hash=sha256:ccf956da45290df6e809ea12c54c02ace7f8ff4d765d6d3dfb3655ee876ce58d \ --hash=sha256:d26f280b8f0a8f497bc10573849ad6dc62e671d2468826e5c748d04ed9e670d5 \ + --hash=sha256:ebc22807a7e161c0d8f3da34018ab7c97ef6223578fcdd99b1d3e7ed1100a5db \ --hash=sha256:ec2268de67f73b43320383947e74700e95c6770d0c68c4e615e9897e46296294 \ --hash=sha256:f167c8175ab908ce48bd6550679cc6ea20ae169379e73c7720a28f89e53aa532 \ + --hash=sha256:f23755c384c2969ca2f7667a83f7c5648fcf8b62a3f2bbd883d805454964a800 \ --hash=sha256:f835c050ebaa4e48b18403bed2c0fda986525896efd76c245bdd4db995e51a4c \ --hash=sha256:f8a65990c9c490f4651b5c02abccc9f113a7f56fa482031ac8cb88b70bc8ccaa starlette==0.27.0 ; python_version >= "3.8" and python_version < "4.0" \ diff --git a/boefjes/requirements.txt b/boefjes/requirements.txt index 138af77ccda..c72a8de40f6 100644 --- a/boefjes/requirements.txt +++ b/boefjes/requirements.txt @@ -1,91 +1,91 @@ -aiohttp==3.8.5 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00ad4b6f185ec67f3e6562e8a1d2b69660be43070bd0ef6fcec5211154c7df67 \ - --hash=sha256:0175d745d9e85c40dcc51c8f88c74bfbaef9e7afeeeb9d03c37977270303064c \ - --hash=sha256:01d4c0c874aa4ddfb8098e85d10b5e875a70adc63db91f1ae65a4b04d3344cda \ - --hash=sha256:043d2299f6dfdc92f0ac5e995dfc56668e1587cea7f9aa9d8a78a1b6554e5755 \ - --hash=sha256:0c413c633d0512df4dc7fd2373ec06cc6a815b7b6d6c2f208ada7e9e93a5061d \ - --hash=sha256:0d21c684808288a98914e5aaf2a7c6a3179d4df11d249799c32d1808e79503b5 \ - --hash=sha256:0e584a10f204a617d71d359fe383406305a4b595b333721fa50b867b4a0a1548 \ - --hash=sha256:1274477e4c71ce8cfe6c1ec2f806d57c015ebf84d83373676036e256bc55d690 \ - --hash=sha256:13bf85afc99ce6f9ee3567b04501f18f9f8dbbb2ea11ed1a2e079670403a7c84 \ - --hash=sha256:153c2549f6c004d2754cc60603d4668899c9895b8a89397444a9c4efa282aaf4 \ - --hash=sha256:1f7372f7341fcc16f57b2caded43e81ddd18df53320b6f9f042acad41f8e049a \ - --hash=sha256:23fb25a9f0a1ca1f24c0a371523546366bb642397c94ab45ad3aedf2941cec6a \ - --hash=sha256:28c543e54710d6158fc6f439296c7865b29e0b616629767e685a7185fab4a6b9 \ - --hash=sha256:2a482e6da906d5e6e653be079b29bc173a48e381600161c9932d89dfae5942ef \ - --hash=sha256:2ad5c3c4590bb3cc28b4382f031f3783f25ec223557124c68754a2231d989e2b \ - --hash=sha256:2ce2ac5708501afc4847221a521f7e4b245abf5178cf5ddae9d5b3856ddb2f3a \ - --hash=sha256:2cf57fb50be5f52bda004b8893e63b48530ed9f0d6c96c84620dc92fe3cd9b9d \ - --hash=sha256:2e1b1e51b0774408f091d268648e3d57f7260c1682e7d3a63cb00d22d71bb945 \ - --hash=sha256:2e2e9839e14dd5308ee773c97115f1e0a1cb1d75cbeeee9f33824fa5144c7634 \ - --hash=sha256:2e460be6978fc24e3df83193dc0cc4de46c9909ed92dd47d349a452ef49325b7 \ - --hash=sha256:312fcfbacc7880a8da0ae8b6abc6cc7d752e9caa0051a53d217a650b25e9a691 \ - --hash=sha256:33279701c04351a2914e1100b62b2a7fdb9a25995c4a104259f9a5ead7ed4802 \ - --hash=sha256:33776e945d89b29251b33a7e7d006ce86447b2cfd66db5e5ded4e5cd0340585c \ - --hash=sha256:34dd0c107799dcbbf7d48b53be761a013c0adf5571bf50c4ecad5643fe9cfcd0 \ - --hash=sha256:3562b06567c06439d8b447037bb655ef69786c590b1de86c7ab81efe1c9c15d8 \ - --hash=sha256:368a42363c4d70ab52c2c6420a57f190ed3dfaca6a1b19afda8165ee16416a82 \ - --hash=sha256:4149d34c32f9638f38f544b3977a4c24052042affa895352d3636fa8bffd030a \ - --hash=sha256:461908b2578955045efde733719d62f2b649c404189a09a632d245b445c9c975 \ - --hash=sha256:4a01951fabc4ce26ab791da5f3f24dca6d9a6f24121746eb19756416ff2d881b \ - --hash=sha256:4e874cbf8caf8959d2adf572a78bba17cb0e9d7e51bb83d86a3697b686a0ab4d \ - --hash=sha256:4f21e83f355643c345177a5d1d8079f9f28b5133bcd154193b799d380331d5d3 \ - --hash=sha256:5443910d662db951b2e58eb70b0fbe6b6e2ae613477129a5805d0b66c54b6cb7 \ - --hash=sha256:5798a9aad1879f626589f3df0f8b79b3608a92e9beab10e5fda02c8a2c60db2e \ - --hash=sha256:5d20003b635fc6ae3f96d7260281dfaf1894fc3aa24d1888a9b2628e97c241e5 \ - --hash=sha256:5db3a5b833764280ed7618393832e0853e40f3d3e9aa128ac0ba0f8278d08649 \ - --hash=sha256:5ed1c46fb119f1b59304b5ec89f834f07124cd23ae5b74288e364477641060ff \ - --hash=sha256:62360cb771707cb70a6fd114b9871d20d7dd2163a0feafe43fd115cfe4fe845e \ - --hash=sha256:6809a00deaf3810e38c628e9a33271892f815b853605a936e2e9e5129762356c \ - --hash=sha256:68c5a82c8779bdfc6367c967a4a1b2aa52cd3595388bf5961a62158ee8a59e22 \ - --hash=sha256:6e4a280e4b975a2e7745573e3fc9c9ba0d1194a3738ce1cbaa80626cc9b4f4df \ - --hash=sha256:6e6783bcc45f397fdebc118d772103d751b54cddf5b60fbcc958382d7dd64f3e \ - --hash=sha256:72a860c215e26192379f57cae5ab12b168b75db8271f111019509a1196dfc780 \ - --hash=sha256:7607ec3ce4993464368505888af5beb446845a014bc676d349efec0e05085905 \ - --hash=sha256:773dd01706d4db536335fcfae6ea2440a70ceb03dd3e7378f3e815b03c97ab51 \ - --hash=sha256:78d847e4cde6ecc19125ccbc9bfac4a7ab37c234dd88fbb3c5c524e8e14da543 \ - --hash=sha256:7dde0009408969a43b04c16cbbe252c4f5ef4574ac226bc8815cd7342d2028b6 \ - --hash=sha256:80bd372b8d0715c66c974cf57fe363621a02f359f1ec81cba97366948c7fc873 \ - --hash=sha256:841cd8233cbd2111a0ef0a522ce016357c5e3aff8a8ce92bcfa14cef890d698f \ - --hash=sha256:84de26ddf621d7ac4c975dbea4c945860e08cccde492269db4e1538a6a6f3c35 \ - --hash=sha256:84f8ae3e09a34f35c18fa57f015cc394bd1389bce02503fb30c394d04ee6b938 \ - --hash=sha256:8af740fc2711ad85f1a5c034a435782fbd5b5f8314c9a3ef071424a8158d7f6b \ - --hash=sha256:8b929b9bd7cd7c3939f8bcfffa92fae7480bd1aa425279d51a89327d600c704d \ - --hash=sha256:910bec0c49637d213f5d9877105d26e0c4a4de2f8b1b29405ff37e9fc0ad52b8 \ - --hash=sha256:96943e5dcc37a6529d18766597c491798b7eb7a61d48878611298afc1fca946c \ - --hash=sha256:a0215ce6041d501f3155dc219712bc41252d0ab76474615b9700d63d4d9292af \ - --hash=sha256:a3cf433f127efa43fee6b90ea4c6edf6c4a17109d1d037d1a52abec84d8f2e42 \ - --hash=sha256:a6ce61195c6a19c785df04e71a4537e29eaa2c50fe745b732aa937c0c77169f3 \ - --hash=sha256:a7a75ef35f2df54ad55dbf4b73fe1da96f370e51b10c91f08b19603c64004acc \ - --hash=sha256:a94159871304770da4dd371f4291b20cac04e8c94f11bdea1c3478e557fbe0d8 \ - --hash=sha256:aa1990247f02a54185dc0dff92a6904521172a22664c863a03ff64c42f9b5410 \ - --hash=sha256:ab88bafedc57dd0aab55fa728ea10c1911f7e4d8b43e1d838a1739f33712921c \ - --hash=sha256:ad093e823df03bb3fd37e7dec9d4670c34f9e24aeace76808fc20a507cace825 \ - --hash=sha256:ae871a964e1987a943d83d6709d20ec6103ca1eaf52f7e0d36ee1b5bebb8b9b9 \ - --hash=sha256:b0ba0d15164eae3d878260d4c4df859bbdc6466e9e6689c344a13334f988bb53 \ - --hash=sha256:b5411d82cddd212644cf9360879eb5080f0d5f7d809d03262c50dad02f01421a \ - --hash=sha256:b9552ec52cc147dbf1944ac7ac98af7602e51ea2dcd076ed194ca3c0d1c7d0bc \ - --hash=sha256:bfb9162dcf01f615462b995a516ba03e769de0789de1cadc0f916265c257e5d8 \ - --hash=sha256:c0a9034379a37ae42dea7ac1e048352d96286626251862e448933c0f59cbd79c \ - --hash=sha256:c1161b345c0a444ebcf46bf0a740ba5dcf50612fd3d0528883fdc0eff578006a \ - --hash=sha256:c11f5b099adafb18e65c2c997d57108b5bbeaa9eeee64a84302c0978b1ec948b \ - --hash=sha256:c44e65da1de4403d0576473e2344828ef9c4c6244d65cf4b75549bb46d40b8dd \ - --hash=sha256:c48c5c0271149cfe467c0ff8eb941279fd6e3f65c9a388c984e0e6cf57538e14 \ - --hash=sha256:c7a815258e5895d8900aec4454f38dca9aed71085f227537208057853f9d13f2 \ - --hash=sha256:cae533195e8122584ec87531d6df000ad07737eaa3c81209e85c928854d2195c \ - --hash=sha256:cc14be025665dba6202b6a71cfcdb53210cc498e50068bc088076624471f8bb9 \ - --hash=sha256:cd56db019015b6acfaaf92e1ac40eb8434847d9bf88b4be4efe5bfd260aee692 \ - --hash=sha256:d827176898a2b0b09694fbd1088c7a31836d1a505c243811c87ae53a3f6273c1 \ - --hash=sha256:df72ac063b97837a80d80dec8d54c241af059cc9bb42c4de68bd5b61ceb37caa \ - --hash=sha256:e5980a746d547a6ba173fd5ee85ce9077e72d118758db05d229044b469d9029a \ - --hash=sha256:e5d47ae48db0b2dcf70bc8a3bc72b3de86e2a590fc299fdbbb15af320d2659de \ - --hash=sha256:e91d635961bec2d8f19dfeb41a539eb94bd073f075ca6dae6c8dc0ee89ad6f91 \ - --hash=sha256:ea353162f249c8097ea63c2169dd1aa55de1e8fecbe63412a9bc50816e87b761 \ - --hash=sha256:eaeed7abfb5d64c539e2db173f63631455f1196c37d9d8d873fc316470dfbacd \ - --hash=sha256:eca4bf3734c541dc4f374ad6010a68ff6c6748f00451707f39857f429ca36ced \ - --hash=sha256:f83a552443a526ea38d064588613aca983d0ee0038801bc93c0c916428310c28 \ - --hash=sha256:fb1558def481d84f03b45888473fc5a1f35747b5f334ef4e7a571bc0dfcb11f8 \ - --hash=sha256:fd1ed388ea7fbed22c4968dd64bab0198de60750a25fe8c0c9d4bef5abe13824 +aiohttp==3.8.6 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:002f23e6ea8d3dd8d149e569fd580c999232b5fbc601c48d55398fbc2e582e8c \ + --hash=sha256:01770d8c04bd8db568abb636c1fdd4f7140b284b8b3e0b4584f070180c1e5c62 \ + --hash=sha256:0912ed87fee967940aacc5306d3aa8ba3a459fcd12add0b407081fbefc931e53 \ + --hash=sha256:0cccd1de239afa866e4ce5c789b3032442f19c261c7d8a01183fd956b1935349 \ + --hash=sha256:0fa375b3d34e71ccccf172cab401cd94a72de7a8cc01847a7b3386204093bb47 \ + --hash=sha256:13da35c9ceb847732bf5c6c5781dcf4780e14392e5d3b3c689f6d22f8e15ae31 \ + --hash=sha256:14cd52ccf40006c7a6cd34a0f8663734e5363fd981807173faf3a017e202fec9 \ + --hash=sha256:16d330b3b9db87c3883e565340d292638a878236418b23cc8b9b11a054aaa887 \ + --hash=sha256:1bed815f3dc3d915c5c1e556c397c8667826fbc1b935d95b0ad680787896a358 \ + --hash=sha256:1d84166673694841d8953f0a8d0c90e1087739d24632fe86b1a08819168b4566 \ + --hash=sha256:1f13f60d78224f0dace220d8ab4ef1dbc37115eeeab8c06804fec11bec2bbd07 \ + --hash=sha256:229852e147f44da0241954fc6cb910ba074e597f06789c867cb7fb0621e0ba7a \ + --hash=sha256:253bf92b744b3170eb4c4ca2fa58f9c4b87aeb1df42f71d4e78815e6e8b73c9e \ + --hash=sha256:255ba9d6d5ff1a382bb9a578cd563605aa69bec845680e21c44afc2670607a95 \ + --hash=sha256:2817b2f66ca82ee699acd90e05c95e79bbf1dc986abb62b61ec8aaf851e81c93 \ + --hash=sha256:2b8d4e166e600dcfbff51919c7a3789ff6ca8b3ecce16e1d9c96d95dd569eb4c \ + --hash=sha256:2d5b785c792802e7b275c420d84f3397668e9d49ab1cb52bd916b3b3ffcf09ad \ + --hash=sha256:3161ce82ab85acd267c8f4b14aa226047a6bee1e4e6adb74b798bd42c6ae1f80 \ + --hash=sha256:33164093be11fcef3ce2571a0dccd9041c9a93fa3bde86569d7b03120d276c6f \ + --hash=sha256:39a312d0e991690ccc1a61f1e9e42daa519dcc34ad03eb6f826d94c1190190dd \ + --hash=sha256:3b2ab182fc28e7a81f6c70bfbd829045d9480063f5ab06f6e601a3eddbbd49a0 \ + --hash=sha256:3c68330a59506254b556b99a91857428cab98b2f84061260a67865f7f52899f5 \ + --hash=sha256:3f0e27e5b733803333bb2371249f41cf42bae8884863e8e8965ec69bebe53132 \ + --hash=sha256:3f5c7ce535a1d2429a634310e308fb7d718905487257060e5d4598e29dc17f0b \ + --hash=sha256:3fd194939b1f764d6bb05490987bfe104287bbf51b8d862261ccf66f48fb4096 \ + --hash=sha256:41bdc2ba359032e36c0e9de5a3bd00d6fb7ea558a6ce6b70acedf0da86458321 \ + --hash=sha256:41d55fc043954cddbbd82503d9cc3f4814a40bcef30b3569bc7b5e34130718c1 \ + --hash=sha256:42c89579f82e49db436b69c938ab3e1559e5a4409eb8639eb4143989bc390f2f \ + --hash=sha256:45ad816b2c8e3b60b510f30dbd37fe74fd4a772248a52bb021f6fd65dff809b6 \ + --hash=sha256:4ac39027011414dbd3d87f7edb31680e1f430834c8cef029f11c66dad0670aa5 \ + --hash=sha256:4d4cbe4ffa9d05f46a28252efc5941e0462792930caa370a6efaf491f412bc66 \ + --hash=sha256:4fcf3eabd3fd1a5e6092d1242295fa37d0354b2eb2077e6eb670accad78e40e1 \ + --hash=sha256:5d791245a894be071d5ab04bbb4850534261a7d4fd363b094a7b9963e8cdbd31 \ + --hash=sha256:6c43ecfef7deaf0617cee936836518e7424ee12cb709883f2c9a1adda63cc460 \ + --hash=sha256:6c5f938d199a6fdbdc10bbb9447496561c3a9a565b43be564648d81e1102ac22 \ + --hash=sha256:6e2f9cc8e5328f829f6e1fb74a0a3a939b14e67e80832975e01929e320386b34 \ + --hash=sha256:713103a8bdde61d13490adf47171a1039fd880113981e55401a0f7b42c37d071 \ + --hash=sha256:71783b0b6455ac8f34b5ec99d83e686892c50498d5d00b8e56d47f41b38fbe04 \ + --hash=sha256:76b36b3124f0223903609944a3c8bf28a599b2cc0ce0be60b45211c8e9be97f8 \ + --hash=sha256:7bc88fc494b1f0311d67f29fee6fd636606f4697e8cc793a2d912ac5b19aa38d \ + --hash=sha256:7ee912f7e78287516df155f69da575a0ba33b02dd7c1d6614dbc9463f43066e3 \ + --hash=sha256:86f20cee0f0a317c76573b627b954c412ea766d6ada1a9fcf1b805763ae7feeb \ + --hash=sha256:89341b2c19fb5eac30c341133ae2cc3544d40d9b1892749cdd25892bbc6ac951 \ + --hash=sha256:8a9b5a0606faca4f6cc0d338359d6fa137104c337f489cd135bb7fbdbccb1e39 \ + --hash=sha256:8d399dade330c53b4106160f75f55407e9ae7505263ea86f2ccca6bfcbdb4921 \ + --hash=sha256:8e31e9db1bee8b4f407b77fd2507337a0a80665ad7b6c749d08df595d88f1cf5 \ + --hash=sha256:90c72ebb7cb3a08a7f40061079817133f502a160561d0675b0a6adf231382c92 \ + --hash=sha256:918810ef188f84152af6b938254911055a72e0f935b5fbc4c1a4ed0b0584aed1 \ + --hash=sha256:93c15c8e48e5e7b89d5cb4613479d144fda8344e2d886cf694fd36db4cc86865 \ + --hash=sha256:96603a562b546632441926cd1293cfcb5b69f0b4159e6077f7c7dbdfb686af4d \ + --hash=sha256:99c5ac4ad492b4a19fc132306cd57075c28446ec2ed970973bbf036bcda1bcc6 \ + --hash=sha256:9c19b26acdd08dd239e0d3669a3dddafd600902e37881f13fbd8a53943079dbc \ + --hash=sha256:9de50a199b7710fa2904be5a4a9b51af587ab24c8e540a7243ab737b45844543 \ + --hash=sha256:9e2ee0ac5a1f5c7dd3197de309adfb99ac4617ff02b0603fd1e65b07dc772e4b \ + --hash=sha256:a2ece4af1f3c967a4390c284797ab595a9f1bc1130ef8b01828915a05a6ae684 \ + --hash=sha256:a3628b6c7b880b181a3ae0a0683698513874df63783fd89de99b7b7539e3e8a8 \ + --hash=sha256:ad1407db8f2f49329729564f71685557157bfa42b48f4b93e53721a16eb813ed \ + --hash=sha256:b04691bc6601ef47c88f0255043df6f570ada1a9ebef99c34bd0b72866c217ae \ + --hash=sha256:b0cf2a4501bff9330a8a5248b4ce951851e415bdcce9dc158e76cfd55e15085c \ + --hash=sha256:b2fe42e523be344124c6c8ef32a011444e869dc5f883c591ed87f84339de5976 \ + --hash=sha256:b30e963f9e0d52c28f284d554a9469af073030030cef8693106d918b2ca92f54 \ + --hash=sha256:bb54c54510e47a8c7c8e63454a6acc817519337b2b78606c4e840871a3e15349 \ + --hash=sha256:bd111d7fc5591ddf377a408ed9067045259ff2770f37e2d94e6478d0f3fc0c17 \ + --hash=sha256:bdf70bfe5a1414ba9afb9d49f0c912dc524cf60141102f3a11143ba3d291870f \ + --hash=sha256:ca80e1b90a05a4f476547f904992ae81eda5c2c85c66ee4195bb8f9c5fb47f28 \ + --hash=sha256:caf486ac1e689dda3502567eb89ffe02876546599bbf915ec94b1fa424eeffd4 \ + --hash=sha256:ccc360e87341ad47c777f5723f68adbb52b37ab450c8bc3ca9ca1f3e849e5fe2 \ + --hash=sha256:d25036d161c4fe2225d1abff2bd52c34ed0b1099f02c208cd34d8c05729882f0 \ + --hash=sha256:d52d5dc7c6682b720280f9d9db41d36ebe4791622c842e258c9206232251ab2b \ + --hash=sha256:d67f8baed00870aa390ea2590798766256f31dc5ed3ecc737debb6e97e2ede78 \ + --hash=sha256:d76e8b13161a202d14c9584590c4df4d068c9567c99506497bdd67eaedf36403 \ + --hash=sha256:d95fc1bf33a9a81469aa760617b5971331cdd74370d1214f0b3109272c0e1e3c \ + --hash=sha256:de6a1c9f6803b90e20869e6b99c2c18cef5cc691363954c93cb9adeb26d9f3ae \ + --hash=sha256:e1d8cb0b56b3587c5c01de3bf2f600f186da7e7b5f7353d1bf26a8ddca57f965 \ + --hash=sha256:e2a988a0c673c2e12084f5e6ba3392d76c75ddb8ebc6c7e9ead68248101cd446 \ + --hash=sha256:e3f1e3f1a1751bb62b4a1b7f4e435afcdade6c17a4fd9b9d43607cebd242924a \ + --hash=sha256:e6a00ffcc173e765e200ceefb06399ba09c06db97f401f920513a10c803604ca \ + --hash=sha256:e827d48cf802de06d9c935088c2924e3c7e7533377d66b6f31ed175c1620e05e \ + --hash=sha256:ebf3fd9f141700b510d4b190094db0ce37ac6361a6806c153c161dc6c041ccda \ + --hash=sha256:ec00c3305788e04bf6d29d42e504560e159ccaf0be30c09203b468a6c1ccd3b2 \ + --hash=sha256:ec4fd86658c6a8964d75426517dc01cbf840bbf32d055ce64a9e63a40fd7b771 \ + --hash=sha256:efd2fcf7e7b9d7ab16e6b7d54205beded0a9c8566cb30f09c1abe42b4e22bdcb \ + --hash=sha256:f0f03211fd14a6a0aed2997d4b1c013d49fb7b50eeb9ffdf5e51f23cfe2c77fa \ + --hash=sha256:f628dbf3c91e12f4d6c8b3f092069567d8eb17814aebba3d7d60c149391aee3a \ + --hash=sha256:f8ef51e459eb2ad8e7a66c1d6440c808485840ad55ecc3cafefadea47d1b1ba2 \ + --hash=sha256:fc37e9aef10a696a5a4474802930079ccfc14d9f9c10b4662169671ff034b7df \ + --hash=sha256:fdee8405931b0615220e5ddf8cd7edd8592c606a8e4ca2a00704883c396e4479 aioresponses==0.7.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1160486b5ea96fcae6170cf2bdef029b9d3a283b7dbeabb3d7f1182769bfb6b7 \ --hash=sha256:9b8c108b36354c04633bad0ea752b55d956a7602fe3e3234b939fc44af96f1d8 @@ -390,6 +390,7 @@ googleapis-common-protos==1.60.0 ; python_version >= "3.8" and python_version < greenlet==2.0.2 ; python_version >= "3.8" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") and python_version < "4.0" \ --hash=sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a \ --hash=sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a \ + --hash=sha256:1087300cf9700bbf455b1b97e24db18f2f77b55302a68272c56209d5587c12d1 \ --hash=sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43 \ --hash=sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33 \ --hash=sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8 \ @@ -415,6 +416,7 @@ greenlet==2.0.2 ; python_version >= "3.8" and (platform_machine == "aarch64" or --hash=sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91 \ --hash=sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5 \ --hash=sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9 \ + --hash=sha256:8512a0c38cfd4e66a858ddd1b17705587900dd760c6003998e9472b77b56d417 \ --hash=sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8 \ --hash=sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b \ --hash=sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6 \ @@ -438,8 +440,10 @@ greenlet==2.0.2 ; python_version >= "3.8" and (platform_machine == "aarch64" or --hash=sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7 \ --hash=sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75 \ --hash=sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae \ + --hash=sha256:d4606a527e30548153be1a9f155f4e283d109ffba663a15856089fb55f933e47 \ --hash=sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b \ --hash=sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470 \ + --hash=sha256:d967650d3f56af314b72df7089d96cda1083a7fc2da05b375d2bc48c82ab3f3c \ --hash=sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564 \ --hash=sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9 \ --hash=sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099 \ @@ -627,8 +631,11 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ + --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \ --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ + --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \ + --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \ --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ @@ -636,6 +643,7 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ + --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \ --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ @@ -644,6 +652,7 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ + --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \ --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ @@ -651,9 +660,12 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ + --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \ --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ + --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \ --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ + --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \ --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ @@ -672,7 +684,9 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 + --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \ + --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \ + --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11 mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba @@ -1108,16 +1122,23 @@ sqlalchemy==1.4.49 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:2e126cf98b7fd38f1e33c64484406b78e937b1a280e078ef558b95bf5b6895f6 \ --hash=sha256:36e58f8c4fe43984384e3fbe6341ac99b6b4e083de2fe838f0fdb91cebe9e9cb \ --hash=sha256:37ce517c011560d68f1ffb28af65d7e06f873f191eb3a73af5671e9c3fada08a \ + --hash=sha256:393cd06c3b00b57f5421e2133e088df9cabcececcea180327e43b937b5a7caa5 \ --hash=sha256:45806315aae81a0c202752558f0df52b42d11dd7ba0097bf71e253b4215f34f4 \ --hash=sha256:4afbbf5ef41ac18e02c8dc1f86c04b22b7a2125f2a030e25bbb4aff31abb224b \ --hash=sha256:5debe7d49b8acf1f3035317e63d9ec8d5e4d904c6e75a2a9246a119f5f2fdf3d \ --hash=sha256:5fb1ebdfc8373b5a291485757bd6431de8d7ed42c27439f543c81f6c8febd729 \ --hash=sha256:647e0b309cb4512b1f1b78471fdaf72921b6fa6e750b9f891e09c6e2f0e5326f \ + --hash=sha256:66da9627cfcc43bbdebd47bfe0145bb662041472393c03b7802253993b6b7c90 \ --hash=sha256:706bfa02157b97c136547c406f263e4c6274a7b061b3eb9742915dd774bbc264 \ + --hash=sha256:738d7321212941ab19ba2acf02a68b8ee64987b248ffa2101630e8fccb549e0d \ --hash=sha256:7653ed6817c710d0c95558232aba799307d14ae084cc9b1f4c389157ec50df5c \ + --hash=sha256:7cf8b90ad84ad3a45098b1c9f56f2b161601e4670827d6b892ea0e884569bd1d \ --hash=sha256:82b08e82da3756765c2e75f327b9bf6b0f043c9c3925fb95fb51e1567fa4ee87 \ + --hash=sha256:8396e896e08e37032e87e7fbf4a15f431aa878c286dc7f79e616c2feacdb366c \ --hash=sha256:8923dfdf24d5aa8a3adb59723f54118dd4fe62cf59ed0d0d65d940579c1170a4 \ + --hash=sha256:95ab792ca493891d7a45a077e35b418f68435efb3e1706cb8155e20e86a9013c \ --hash=sha256:95b9df9afd680b7a3b13b38adf6e3a38995da5e162cc7524ef08e3be4e5ed3e1 \ + --hash=sha256:9a06e046ffeb8a484279e54bda0a5abfd9675f594a2e38ef3133d7e4d75b6214 \ --hash=sha256:9c21b172dfb22e0db303ff6419451f0cac891d2e911bb9fbf8003d717f1bcf91 \ --hash=sha256:a1878ce508edea4a879015ab5215546c444233881301e97ca16fe251e89f1c55 \ --hash=sha256:a63e43bf3f668c11bb0444ce6e809c1227b8f067ca1068898f3008a273f52b09 \ @@ -1130,10 +1151,13 @@ sqlalchemy==1.4.49 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:bbdf16372859b8ed3f4d05f925a984771cd2abd18bd187042f24be4886c2a15f \ --hash=sha256:c14b29d9e1529f99efd550cd04dbb6db6ba5d690abb96d52de2bff4ed518bc95 \ --hash=sha256:c40f3470e084d31247aea228aa1c39bbc0904c2b9ccbf5d3cfa2ea2dac06f26d \ + --hash=sha256:ca46de16650d143a928d10842939dab208e8d8c3a9a8757600cae9b7c579c5cd \ --hash=sha256:ccf956da45290df6e809ea12c54c02ace7f8ff4d765d6d3dfb3655ee876ce58d \ --hash=sha256:d26f280b8f0a8f497bc10573849ad6dc62e671d2468826e5c748d04ed9e670d5 \ + --hash=sha256:ebc22807a7e161c0d8f3da34018ab7c97ef6223578fcdd99b1d3e7ed1100a5db \ --hash=sha256:ec2268de67f73b43320383947e74700e95c6770d0c68c4e615e9897e46296294 \ --hash=sha256:f167c8175ab908ce48bd6550679cc6ea20ae169379e73c7720a28f89e53aa532 \ + --hash=sha256:f23755c384c2969ca2f7667a83f7c5648fcf8b62a3f2bbd883d805454964a800 \ --hash=sha256:f835c050ebaa4e48b18403bed2c0fda986525896efd76c245bdd4db995e51a4c \ --hash=sha256:f8a65990c9c490f4651b5c02abccc9f113a7f56fa482031ac8cb88b70bc8ccaa starlette==0.27.0 ; python_version >= "3.8" and python_version < "4.0" \ From e622b3f65e23371c0c9523b1fc63cb4012dfdb6a Mon Sep 17 00:00:00 2001 From: JP Bruins Slot Date: Fri, 17 Nov 2023 10:48:05 +0100 Subject: [PATCH 18/30] Rabbitmq fixes/enhancements for scheduler (#1976) Co-authored-by: ammar92 Co-authored-by: Jan Klopper --- .pre-commit-config.yaml | 2 +- mula/Dockerfile | 2 +- mula/poetry.lock | 1175 +++++++++-------- mula/pyproject.toml | 3 +- mula/requirements-dev.txt | 1092 +++++++-------- mula/requirements.txt | 820 ++++++------ .../connectors/listeners/listeners.py | 68 +- .../connectors/listeners/raw_data.py | 38 +- .../connectors/listeners/scan_profile.py | 38 +- mula/scheduler/schedulers/boefje.py | 7 +- mula/scheduler/schedulers/normalizer.py | 16 +- .../integration/test_boefje_scheduler.py | 36 +- .../integration/test_normalizer_scheduler.py | 18 +- poetry.lock | 352 ++--- requirements-dev.txt | 329 ++--- requirements.txt | 302 +++-- 16 files changed, 2253 insertions(+), 2045 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index af426a07c0a..858ef7209a7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -64,7 +64,7 @@ repos: rev: v1.2.0 hooks: - id: mypy - additional_dependencies: ['types-PyYAML', 'types-requests', 'types-cachetools', 'pydantic', 'pynacl'] + additional_dependencies: ['types-PyYAML', 'types-requests', 'types-cachetools', 'types-retry', 'pydantic', 'pynacl'] exclude: | (?x)( ^boefjes/ | diff --git a/mula/Dockerfile b/mula/Dockerfile index 531c9f6189e..19c314b8200 100644 --- a/mula/Dockerfile +++ b/mula/Dockerfile @@ -18,7 +18,7 @@ ENV PATH=/home/scheduler/.local/bin:${PATH} # dependencies ARG ENVIRONMENT -COPY requirements.txt requirements-dev.txt . +COPY requirements.txt requirements-dev.txt ./ RUN --mount=type=cache,target=/root/.cache pip install --upgrade pip \ && pip install -r requirements.txt \ && if [ "$ENVIRONMENT" = "dev" ]; then pip install -r requirements-dev.txt; fi diff --git a/mula/poetry.lock b/mula/poetry.lock index a01fcf975ed..f491ab6f3eb 100644 --- a/mula/poetry.lock +++ b/mula/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "alembic" -version = "1.11.3" +version = "1.12.1" description = "A database migration tool for SQLAlchemy." optional = false python-versions = ">=3.7" files = [ - {file = "alembic-1.11.3-py3-none-any.whl", hash = "sha256:d6c96c2482740592777c400550a523bc7a9aada4e210cae2e733354ddae6f6f8"}, - {file = "alembic-1.11.3.tar.gz", hash = "sha256:3db4ce81a9072e1b5aa44c2d202add24553182672a12daf21608d6f62a8f9cf9"}, + {file = "alembic-1.12.1-py3-none-any.whl", hash = "sha256:47d52e3dfb03666ed945becb723d6482e52190917fdb47071440cfdba05d92cb"}, + {file = "alembic-1.12.1.tar.gz", hash = "sha256:bca5877e9678b454706347bc10b97cb7d67f300320fa5c3a94423e8266e2823f"}, ] [package.dependencies] @@ -23,13 +23,13 @@ tz = ["python-dateutil"] [[package]] name = "annotated-types" -version = "0.5.0" +version = "0.6.0" description = "Reusable constraint types to use with typing.Annotated" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "annotated_types-0.5.0-py3-none-any.whl", hash = "sha256:58da39888f92c276ad970249761ebea80ba544b77acddaa1a4d6cf78287d45fd"}, - {file = "annotated_types-0.5.0.tar.gz", hash = "sha256:47cdc3490d9ac1506ce92c7aaa76c579dc3509ff11e098fc867e5130ab7be802"}, + {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, + {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, ] [package.dependencies] @@ -37,24 +37,24 @@ typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} [[package]] name = "anyio" -version = "3.7.1" +version = "4.0.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"}, - {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"}, + {file = "anyio-4.0.0-py3-none-any.whl", hash = "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f"}, + {file = "anyio-4.0.0.tar.gz", hash = "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"}, ] [package.dependencies] -exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"] -test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (<0.22)"] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.22)"] [[package]] name = "asgiref" @@ -75,13 +75,13 @@ tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] [[package]] name = "astroid" -version = "2.15.6" +version = "2.15.8" description = "An abstract syntax tree for Python with inference support." optional = false python-versions = ">=3.7.2" files = [ - {file = "astroid-2.15.6-py3-none-any.whl", hash = "sha256:389656ca57b6108f939cf5d2f9a2a825a3be50ba9d589670f393236e0a03b91c"}, - {file = "astroid-2.15.6.tar.gz", hash = "sha256:903f024859b7c7687d7a7f3a3f73b17301f8e42dfd9cc9df9d4418172d3e2dbd"}, + {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, + {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, ] [package.dependencies] @@ -105,33 +105,29 @@ files = [ [[package]] name = "black" -version = "23.7.0" +version = "23.11.0" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" files = [ - {file = "black-23.7.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:5c4bc552ab52f6c1c506ccae05681fab58c3f72d59ae6e6639e8885e94fe2587"}, - {file = "black-23.7.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:552513d5cd5694590d7ef6f46e1767a4df9af168d449ff767b13b084c020e63f"}, - {file = "black-23.7.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:86cee259349b4448adb4ef9b204bb4467aae74a386bce85d56ba4f5dc0da27be"}, - {file = "black-23.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:501387a9edcb75d7ae8a4412bb8749900386eaef258f1aefab18adddea1936bc"}, - {file = "black-23.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:fb074d8b213749fa1d077d630db0d5f8cc3b2ae63587ad4116e8a436e9bbe995"}, - {file = "black-23.7.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:b5b0ee6d96b345a8b420100b7d71ebfdd19fab5e8301aff48ec270042cd40ac2"}, - {file = "black-23.7.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:893695a76b140881531062d48476ebe4a48f5d1e9388177e175d76234ca247cd"}, - {file = "black-23.7.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:c333286dc3ddca6fdff74670b911cccedacb4ef0a60b34e491b8a67c833b343a"}, - {file = "black-23.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831d8f54c3a8c8cf55f64d0422ee875eecac26f5f649fb6c1df65316b67c8926"}, - {file = "black-23.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:7f3bf2dec7d541b4619b8ce526bda74a6b0bffc480a163fed32eb8b3c9aed8ad"}, - {file = "black-23.7.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:f9062af71c59c004cd519e2fb8f5d25d39e46d3af011b41ab43b9c74e27e236f"}, - {file = "black-23.7.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:01ede61aac8c154b55f35301fac3e730baf0c9cf8120f65a9cd61a81cfb4a0c3"}, - {file = "black-23.7.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:327a8c2550ddc573b51e2c352adb88143464bb9d92c10416feb86b0f5aee5ff6"}, - {file = "black-23.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1c6022b86f83b632d06f2b02774134def5d4d4f1dac8bef16d90cda18ba28a"}, - {file = "black-23.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:27eb7a0c71604d5de083757fbdb245b1a4fae60e9596514c6ec497eb63f95320"}, - {file = "black-23.7.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:8417dbd2f57b5701492cd46edcecc4f9208dc75529bcf76c514864e48da867d9"}, - {file = "black-23.7.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:47e56d83aad53ca140da0af87678fb38e44fd6bc0af71eebab2d1f59b1acf1d3"}, - {file = "black-23.7.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:25cc308838fe71f7065df53aedd20327969d05671bac95b38fdf37ebe70ac087"}, - {file = "black-23.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:642496b675095d423f9b8448243336f8ec71c9d4d57ec17bf795b67f08132a91"}, - {file = "black-23.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:ad0014efc7acf0bd745792bd0d8857413652979200ab924fbf239062adc12491"}, - {file = "black-23.7.0-py3-none-any.whl", hash = "sha256:9fd59d418c60c0348505f2ddf9609c1e1de8e7493eab96198fc89d9f865e7a96"}, - {file = "black-23.7.0.tar.gz", hash = "sha256:022a582720b0d9480ed82576c920a8c1dde97cc38ff11d8d8859b3bd6ca9eedb"}, + {file = "black-23.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dbea0bb8575c6b6303cc65017b46351dc5953eea5c0a59d7b7e3a2d2f433a911"}, + {file = "black-23.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:412f56bab20ac85927f3a959230331de5614aecda1ede14b373083f62ec24e6f"}, + {file = "black-23.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d136ef5b418c81660ad847efe0e55c58c8208b77a57a28a503a5f345ccf01394"}, + {file = "black-23.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:6c1cac07e64433f646a9a838cdc00c9768b3c362805afc3fce341af0e6a9ae9f"}, + {file = "black-23.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cf57719e581cfd48c4efe28543fea3d139c6b6f1238b3f0102a9c73992cbb479"}, + {file = "black-23.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:698c1e0d5c43354ec5d6f4d914d0d553a9ada56c85415700b81dc90125aac244"}, + {file = "black-23.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:760415ccc20f9e8747084169110ef75d545f3b0932ee21368f63ac0fee86b221"}, + {file = "black-23.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:58e5f4d08a205b11800332920e285bd25e1a75c54953e05502052738fe16b3b5"}, + {file = "black-23.11.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:45aa1d4675964946e53ab81aeec7a37613c1cb71647b5394779e6efb79d6d187"}, + {file = "black-23.11.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c44b7211a3a0570cc097e81135faa5f261264f4dfaa22bd5ee2875a4e773bd6"}, + {file = "black-23.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a9acad1451632021ee0d146c8765782a0c3846e0e0ea46659d7c4f89d9b212b"}, + {file = "black-23.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:fc7f6a44d52747e65a02558e1d807c82df1d66ffa80a601862040a43ec2e3142"}, + {file = "black-23.11.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7f622b6822f02bfaf2a5cd31fdb7cd86fcf33dab6ced5185c35f5db98260b055"}, + {file = "black-23.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:250d7e60f323fcfc8ea6c800d5eba12f7967400eb6c2d21ae85ad31c204fb1f4"}, + {file = "black-23.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5133f5507007ba08d8b7b263c7aa0f931af5ba88a29beacc4b2dc23fcefe9c06"}, + {file = "black-23.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:421f3e44aa67138ab1b9bfbc22ee3780b22fa5b291e4db8ab7eee95200726b07"}, + {file = "black-23.11.0-py3-none-any.whl", hash = "sha256:54caaa703227c6e0c87b76326d0862184729a69b73d3b7305b6288e1d830067e"}, + {file = "black-23.11.0.tar.gz", hash = "sha256:4c68855825ff432d197229846f971bc4d6666ce90492e5b02013bcaca4d9ab05"}, ] [package.dependencies] @@ -141,7 +137,7 @@ packaging = ">=22.0" pathspec = ">=0.9.0" platformdirs = ">=2" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} +typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] @@ -162,86 +158,101 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.2.0" +version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, - {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] [[package]] @@ -271,63 +282,63 @@ files = [ [[package]] name = "coverage" -version = "7.3.0" +version = "7.3.2" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db76a1bcb51f02b2007adacbed4c88b6dee75342c37b05d1822815eed19edee5"}, - {file = "coverage-7.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c02cfa6c36144ab334d556989406837336c1d05215a9bdf44c0bc1d1ac1cb637"}, - {file = "coverage-7.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:477c9430ad5d1b80b07f3c12f7120eef40bfbf849e9e7859e53b9c93b922d2af"}, - {file = "coverage-7.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce2ee86ca75f9f96072295c5ebb4ef2a43cecf2870b0ca5e7a1cbdd929cf67e1"}, - {file = "coverage-7.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68d8a0426b49c053013e631c0cdc09b952d857efa8f68121746b339912d27a12"}, - {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b3eb0c93e2ea6445b2173da48cb548364f8f65bf68f3d090404080d338e3a689"}, - {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:90b6e2f0f66750c5a1178ffa9370dec6c508a8ca5265c42fbad3ccac210a7977"}, - {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:96d7d761aea65b291a98c84e1250cd57b5b51726821a6f2f8df65db89363be51"}, - {file = "coverage-7.3.0-cp310-cp310-win32.whl", hash = "sha256:63c5b8ecbc3b3d5eb3a9d873dec60afc0cd5ff9d9f1c75981d8c31cfe4df8527"}, - {file = "coverage-7.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:97c44f4ee13bce914272589b6b41165bbb650e48fdb7bd5493a38bde8de730a1"}, - {file = "coverage-7.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:74c160285f2dfe0acf0f72d425f3e970b21b6de04157fc65adc9fd07ee44177f"}, - {file = "coverage-7.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b543302a3707245d454fc49b8ecd2c2d5982b50eb63f3535244fd79a4be0c99d"}, - {file = "coverage-7.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad0f87826c4ebd3ef484502e79b39614e9c03a5d1510cfb623f4a4a051edc6fd"}, - {file = "coverage-7.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:13c6cbbd5f31211d8fdb477f0f7b03438591bdd077054076eec362cf2207b4a7"}, - {file = "coverage-7.3.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fac440c43e9b479d1241fe9d768645e7ccec3fb65dc3a5f6e90675e75c3f3e3a"}, - {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3c9834d5e3df9d2aba0275c9f67989c590e05732439b3318fa37a725dff51e74"}, - {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4c8e31cf29b60859876474034a83f59a14381af50cbe8a9dbaadbf70adc4b214"}, - {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7a9baf8e230f9621f8e1d00c580394a0aa328fdac0df2b3f8384387c44083c0f"}, - {file = "coverage-7.3.0-cp311-cp311-win32.whl", hash = "sha256:ccc51713b5581e12f93ccb9c5e39e8b5d4b16776d584c0f5e9e4e63381356482"}, - {file = "coverage-7.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:887665f00ea4e488501ba755a0e3c2cfd6278e846ada3185f42d391ef95e7e70"}, - {file = "coverage-7.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d000a739f9feed900381605a12a61f7aaced6beae832719ae0d15058a1e81c1b"}, - {file = "coverage-7.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:59777652e245bb1e300e620ce2bef0d341945842e4eb888c23a7f1d9e143c446"}, - {file = "coverage-7.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9737bc49a9255d78da085fa04f628a310c2332b187cd49b958b0e494c125071"}, - {file = "coverage-7.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5247bab12f84a1d608213b96b8af0cbb30d090d705b6663ad794c2f2a5e5b9fe"}, - {file = "coverage-7.3.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2ac9a1de294773b9fa77447ab7e529cf4fe3910f6a0832816e5f3d538cfea9a"}, - {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:85b7335c22455ec12444cec0d600533a238d6439d8d709d545158c1208483873"}, - {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:36ce5d43a072a036f287029a55b5c6a0e9bd73db58961a273b6dc11a2c6eb9c2"}, - {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:211a4576e984f96d9fce61766ffaed0115d5dab1419e4f63d6992b480c2bd60b"}, - {file = "coverage-7.3.0-cp312-cp312-win32.whl", hash = "sha256:56afbf41fa4a7b27f6635bc4289050ac3ab7951b8a821bca46f5b024500e6321"}, - {file = "coverage-7.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:7f297e0c1ae55300ff688568b04ff26b01c13dfbf4c9d2b7d0cb688ac60df479"}, - {file = "coverage-7.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac0dec90e7de0087d3d95fa0533e1d2d722dcc008bc7b60e1143402a04c117c1"}, - {file = "coverage-7.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:438856d3f8f1e27f8e79b5410ae56650732a0dcfa94e756df88c7e2d24851fcd"}, - {file = "coverage-7.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1084393c6bda8875c05e04fce5cfe1301a425f758eb012f010eab586f1f3905e"}, - {file = "coverage-7.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49ab200acf891e3dde19e5aa4b0f35d12d8b4bd805dc0be8792270c71bd56c54"}, - {file = "coverage-7.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a67e6bbe756ed458646e1ef2b0778591ed4d1fcd4b146fc3ba2feb1a7afd4254"}, - {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f39c49faf5344af36042b293ce05c0d9004270d811c7080610b3e713251c9b0"}, - {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7df91fb24c2edaabec4e0eee512ff3bc6ec20eb8dccac2e77001c1fe516c0c84"}, - {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:34f9f0763d5fa3035a315b69b428fe9c34d4fc2f615262d6be3d3bf3882fb985"}, - {file = "coverage-7.3.0-cp38-cp38-win32.whl", hash = "sha256:bac329371d4c0d456e8d5f38a9b0816b446581b5f278474e416ea0c68c47dcd9"}, - {file = "coverage-7.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:b859128a093f135b556b4765658d5d2e758e1fae3e7cc2f8c10f26fe7005e543"}, - {file = "coverage-7.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fc0ed8d310afe013db1eedd37176d0839dc66c96bcfcce8f6607a73ffea2d6ba"}, - {file = "coverage-7.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61260ec93f99f2c2d93d264b564ba912bec502f679793c56f678ba5251f0393"}, - {file = "coverage-7.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97af9554a799bd7c58c0179cc8dbf14aa7ab50e1fd5fa73f90b9b7215874ba28"}, - {file = "coverage-7.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3558e5b574d62f9c46b76120a5c7c16c4612dc2644c3d48a9f4064a705eaee95"}, - {file = "coverage-7.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37d5576d35fcb765fca05654f66aa71e2808d4237d026e64ac8b397ffa66a56a"}, - {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07ea61bcb179f8f05ffd804d2732b09d23a1238642bf7e51dad62082b5019b34"}, - {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:80501d1b2270d7e8daf1b64b895745c3e234289e00d5f0e30923e706f110334e"}, - {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4eddd3153d02204f22aef0825409091a91bf2a20bce06fe0f638f5c19a85de54"}, - {file = "coverage-7.3.0-cp39-cp39-win32.whl", hash = "sha256:2d22172f938455c156e9af2612650f26cceea47dc86ca048fa4e0b2d21646ad3"}, - {file = "coverage-7.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:60f64e2007c9144375dd0f480a54d6070f00bb1a28f65c408370544091c9bc9e"}, - {file = "coverage-7.3.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:5492a6ce3bdb15c6ad66cb68a0244854d9917478877a25671d70378bdc8562d0"}, - {file = "coverage-7.3.0.tar.gz", hash = "sha256:49dbb19cdcafc130f597d9e04a29d0a032ceedf729e41b181f51cd170e6ee865"}, + {file = "coverage-7.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf"}, + {file = "coverage-7.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda"}, + {file = "coverage-7.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a"}, + {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c"}, + {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f"}, + {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6"}, + {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148"}, + {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9"}, + {file = "coverage-7.3.2-cp310-cp310-win32.whl", hash = "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f"}, + {file = "coverage-7.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611"}, + {file = "coverage-7.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c"}, + {file = "coverage-7.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074"}, + {file = "coverage-7.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a"}, + {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3"}, + {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a"}, + {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1"}, + {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c"}, + {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312"}, + {file = "coverage-7.3.2-cp311-cp311-win32.whl", hash = "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640"}, + {file = "coverage-7.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2"}, + {file = "coverage-7.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836"}, + {file = "coverage-7.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63"}, + {file = "coverage-7.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216"}, + {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4"}, + {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf"}, + {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf"}, + {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84"}, + {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a"}, + {file = "coverage-7.3.2-cp312-cp312-win32.whl", hash = "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb"}, + {file = "coverage-7.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed"}, + {file = "coverage-7.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738"}, + {file = "coverage-7.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2"}, + {file = "coverage-7.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2"}, + {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c"}, + {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9"}, + {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82"}, + {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901"}, + {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76"}, + {file = "coverage-7.3.2-cp38-cp38-win32.whl", hash = "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92"}, + {file = "coverage-7.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a"}, + {file = "coverage-7.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce"}, + {file = "coverage-7.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9"}, + {file = "coverage-7.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f"}, + {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25"}, + {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9"}, + {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6"}, + {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc"}, + {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083"}, + {file = "coverage-7.3.2-cp39-cp39-win32.whl", hash = "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce"}, + {file = "coverage-7.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f"}, + {file = "coverage-7.3.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637"}, + {file = "coverage-7.3.2.tar.gz", hash = "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef"}, ] [package.dependencies] @@ -336,6 +347,17 @@ tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.1 [package.extras] toml = ["tomli"] +[[package]] +name = "decorator" +version = "5.1.1" +description = "Decorators for Humans" +optional = false +python-versions = ">=3.5" +files = [ + {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, + {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, +] + [[package]] name = "deprecated" version = "1.2.14" @@ -401,13 +423,13 @@ doc = ["Sphinx", "sphinx-rtd-theme", "sphinxcontrib-spelling"] [[package]] name = "faker" -version = "19.3.1" +version = "19.13.0" description = "Faker is a Python package that generates fake data for you." optional = false python-versions = ">=3.8" files = [ - {file = "Faker-19.3.1-py3-none-any.whl", hash = "sha256:e2722fdf622cf24e974aaba15a3dee97a6f8b98d869bd827ff1af9c87695af46"}, - {file = "Faker-19.3.1.tar.gz", hash = "sha256:a6624d9574623bb27dfca33fff94581cd7b23b562901db8ad59acbde9a52543e"}, + {file = "Faker-19.13.0-py3-none-any.whl", hash = "sha256:da880a76322db7a879c848a0771e129338e0a680a9f695fd9a3e7a6ac82b45e1"}, + {file = "Faker-19.13.0.tar.gz", hash = "sha256:14ccb0aec342d33aa3889a864a56e5b3c2d56bce1b89f9189f4fbc128b9afc1e"}, ] [package.dependencies] @@ -435,13 +457,13 @@ all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)" [[package]] name = "googleapis-common-protos" -version = "1.60.0" +version = "1.61.0" description = "Common protobufs used in Google APIs" optional = false python-versions = ">=3.7" files = [ - {file = "googleapis-common-protos-1.60.0.tar.gz", hash = "sha256:e73ebb404098db405ba95d1e1ae0aa91c3e15a71da031a2eeb6b2e23e7bc3708"}, - {file = "googleapis_common_protos-1.60.0-py2.py3-none-any.whl", hash = "sha256:69f9bbcc6acde92cab2db95ce30a70bd2b81d20b12eff3f1aabaffcbe8a93918"}, + {file = "googleapis-common-protos-1.61.0.tar.gz", hash = "sha256:8a64866a97f6304a7179873a465d6eee97b7a24ec6cfd78e0f575e96b821240b"}, + {file = "googleapis_common_protos-1.61.0-py2.py3-none-any.whl", hash = "sha256:22f1915393bb3245343f6efe87f6fe868532efc12aa26b391b15132e1279f1c0"}, ] [package.dependencies] @@ -452,133 +474,139 @@ grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] [[package]] name = "greenlet" -version = "2.0.2" +version = "3.0.1" description = "Lightweight in-process concurrent programming" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" -files = [ - {file = "greenlet-2.0.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:bdfea8c661e80d3c1c99ad7c3ff74e6e87184895bbaca6ee8cc61209f8b9b85d"}, - {file = "greenlet-2.0.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9d14b83fab60d5e8abe587d51c75b252bcc21683f24699ada8fb275d7712f5a9"}, - {file = "greenlet-2.0.2-cp27-cp27m-win32.whl", hash = "sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74"}, - {file = "greenlet-2.0.2-cp27-cp27m-win_amd64.whl", hash = "sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343"}, - {file = "greenlet-2.0.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae"}, - {file = "greenlet-2.0.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df"}, - {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088"}, - {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb"}, - {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470"}, - {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a51c9751078733d88e013587b108f1b7a1fb106d402fb390740f002b6f6551a"}, - {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91"}, - {file = "greenlet-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645"}, - {file = "greenlet-2.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c"}, - {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca"}, - {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0"}, - {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2"}, - {file = "greenlet-2.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19"}, - {file = "greenlet-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5454276c07d27a740c5892f4907c86327b632127dd9abec42ee62e12427ff7e3"}, - {file = "greenlet-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5"}, - {file = "greenlet-2.0.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6"}, - {file = "greenlet-2.0.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43"}, - {file = "greenlet-2.0.2-cp35-cp35m-win32.whl", hash = "sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a"}, - {file = "greenlet-2.0.2-cp35-cp35m-win_amd64.whl", hash = "sha256:4b58adb399c4d61d912c4c331984d60eb66565175cdf4a34792cd9600f21b394"}, - {file = "greenlet-2.0.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:703f18f3fda276b9a916f0934d2fb6d989bf0b4fb5a64825260eb9bfd52d78f0"}, - {file = "greenlet-2.0.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:32e5b64b148966d9cccc2c8d35a671409e45f195864560829f395a54226408d3"}, - {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dd11f291565a81d71dab10b7033395b7a3a5456e637cf997a6f33ebdf06f8db"}, - {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099"}, - {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75"}, - {file = "greenlet-2.0.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:3c9b12575734155d0c09d6c3e10dbd81665d5c18e1a7c6597df72fd05990c8cf"}, - {file = "greenlet-2.0.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b9ec052b06a0524f0e35bd8790686a1da006bd911dd1ef7d50b77bfbad74e292"}, - {file = "greenlet-2.0.2-cp36-cp36m-win32.whl", hash = "sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9"}, - {file = "greenlet-2.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:9f35ec95538f50292f6d8f2c9c9f8a3c6540bbfec21c9e5b4b751e0a7c20864f"}, - {file = "greenlet-2.0.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b"}, - {file = "greenlet-2.0.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1"}, - {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7"}, - {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2780572ec463d44c1d3ae850239508dbeb9fed38e294c68d19a24d925d9223ca"}, - {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:937e9020b514ceedb9c830c55d5c9872abc90f4b5862f89c0887033ae33c6f73"}, - {file = "greenlet-2.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:36abbf031e1c0f79dd5d596bfaf8e921c41df2bdf54ee1eed921ce1f52999a86"}, - {file = "greenlet-2.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33"}, - {file = "greenlet-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7"}, - {file = "greenlet-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3"}, - {file = "greenlet-2.0.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30"}, - {file = "greenlet-2.0.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b"}, - {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526"}, - {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b"}, - {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acd2162a36d3de67ee896c43effcd5ee3de247eb00354db411feb025aa319857"}, - {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a"}, - {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a"}, - {file = "greenlet-2.0.2-cp38-cp38-win32.whl", hash = "sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249"}, - {file = "greenlet-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40"}, - {file = "greenlet-2.0.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8"}, - {file = "greenlet-2.0.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6"}, - {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df"}, - {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be4ed120b52ae4d974aa40215fcdfde9194d63541c7ded40ee12eb4dda57b76b"}, - {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94c817e84245513926588caf1152e3b559ff794d505555211ca041f032abbb6b"}, - {file = "greenlet-2.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8"}, - {file = "greenlet-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9"}, - {file = "greenlet-2.0.2-cp39-cp39-win32.whl", hash = "sha256:ea9872c80c132f4663822dd2a08d404073a5a9b5ba6155bea72fb2a79d1093b5"}, - {file = "greenlet-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564"}, - {file = "greenlet-2.0.2.tar.gz", hash = "sha256:e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0"}, +python-versions = ">=3.7" +files = [ + {file = "greenlet-3.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f89e21afe925fcfa655965ca8ea10f24773a1791400989ff32f467badfe4a064"}, + {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28e89e232c7593d33cac35425b58950789962011cc274aa43ef8865f2e11f46d"}, + {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8ba29306c5de7717b5761b9ea74f9c72b9e2b834e24aa984da99cbfc70157fd"}, + {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19bbdf1cce0346ef7341705d71e2ecf6f41a35c311137f29b8a2dc2341374565"}, + {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599daf06ea59bfedbec564b1692b0166a0045f32b6f0933b0dd4df59a854caf2"}, + {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b641161c302efbb860ae6b081f406839a8b7d5573f20a455539823802c655f63"}, + {file = "greenlet-3.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d57e20ba591727da0c230ab2c3f200ac9d6d333860d85348816e1dca4cc4792e"}, + {file = "greenlet-3.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5805e71e5b570d490938d55552f5a9e10f477c19400c38bf1d5190d760691846"}, + {file = "greenlet-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:52e93b28db27ae7d208748f45d2db8a7b6a380e0d703f099c949d0f0d80b70e9"}, + {file = "greenlet-3.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f7bfb769f7efa0eefcd039dd19d843a4fbfbac52f1878b1da2ed5793ec9b1a65"}, + {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91e6c7db42638dc45cf2e13c73be16bf83179f7859b07cfc139518941320be96"}, + {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1757936efea16e3f03db20efd0cd50a1c86b06734f9f7338a90c4ba85ec2ad5a"}, + {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19075157a10055759066854a973b3d1325d964d498a805bb68a1f9af4aaef8ec"}, + {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9d21aaa84557d64209af04ff48e0ad5e28c5cca67ce43444e939579d085da72"}, + {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2847e5d7beedb8d614186962c3d774d40d3374d580d2cbdab7f184580a39d234"}, + {file = "greenlet-3.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:97e7ac860d64e2dcba5c5944cfc8fa9ea185cd84061c623536154d5a89237884"}, + {file = "greenlet-3.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b2c02d2ad98116e914d4f3155ffc905fd0c025d901ead3f6ed07385e19122c94"}, + {file = "greenlet-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:22f79120a24aeeae2b4471c711dcf4f8c736a2bb2fabad2a67ac9a55ea72523c"}, + {file = "greenlet-3.0.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:100f78a29707ca1525ea47388cec8a049405147719f47ebf3895e7509c6446aa"}, + {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60d5772e8195f4e9ebf74046a9121bbb90090f6550f81d8956a05387ba139353"}, + {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:daa7197b43c707462f06d2c693ffdbb5991cbb8b80b5b984007de431493a319c"}, + {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea6b8aa9e08eea388c5f7a276fabb1d4b6b9d6e4ceb12cc477c3d352001768a9"}, + {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d11ebbd679e927593978aa44c10fc2092bc454b7d13fdc958d3e9d508aba7d0"}, + {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dbd4c177afb8a8d9ba348d925b0b67246147af806f0b104af4d24f144d461cd5"}, + {file = "greenlet-3.0.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20107edf7c2c3644c67c12205dc60b1bb11d26b2610b276f97d666110d1b511d"}, + {file = "greenlet-3.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8bef097455dea90ffe855286926ae02d8faa335ed8e4067326257cb571fc1445"}, + {file = "greenlet-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:b2d3337dcfaa99698aa2377c81c9ca72fcd89c07e7eb62ece3f23a3fe89b2ce4"}, + {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80ac992f25d10aaebe1ee15df45ca0d7571d0f70b645c08ec68733fb7a020206"}, + {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:337322096d92808f76ad26061a8f5fccb22b0809bea39212cd6c406f6a7060d2"}, + {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9934adbd0f6e476f0ecff3c94626529f344f57b38c9a541f87098710b18af0a"}, + {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc4d815b794fd8868c4d67602692c21bf5293a75e4b607bb92a11e821e2b859a"}, + {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41bdeeb552d814bcd7fb52172b304898a35818107cc8778b5101423c9017b3de"}, + {file = "greenlet-3.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6e6061bf1e9565c29002e3c601cf68569c450be7fc3f7336671af7ddb4657166"}, + {file = "greenlet-3.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:fa24255ae3c0ab67e613556375a4341af04a084bd58764731972bcbc8baeba36"}, + {file = "greenlet-3.0.1-cp37-cp37m-win32.whl", hash = "sha256:b489c36d1327868d207002391f662a1d163bdc8daf10ab2e5f6e41b9b96de3b1"}, + {file = "greenlet-3.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f33f3258aae89da191c6ebaa3bc517c6c4cbc9b9f689e5d8452f7aedbb913fa8"}, + {file = "greenlet-3.0.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d2905ce1df400360463c772b55d8e2518d0e488a87cdea13dd2c71dcb2a1fa16"}, + {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a02d259510b3630f330c86557331a3b0e0c79dac3d166e449a39363beaae174"}, + {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55d62807f1c5a1682075c62436702aaba941daa316e9161e4b6ccebbbf38bda3"}, + {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3fcc780ae8edbb1d050d920ab44790201f027d59fdbd21362340a85c79066a74"}, + {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eddd98afc726f8aee1948858aed9e6feeb1758889dfd869072d4465973f6bfd"}, + {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eabe7090db68c981fca689299c2d116400b553f4b713266b130cfc9e2aa9c5a9"}, + {file = "greenlet-3.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f2f6d303f3dee132b322a14cd8765287b8f86cdc10d2cb6a6fae234ea488888e"}, + {file = "greenlet-3.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d923ff276f1c1f9680d32832f8d6c040fe9306cbfb5d161b0911e9634be9ef0a"}, + {file = "greenlet-3.0.1-cp38-cp38-win32.whl", hash = "sha256:0b6f9f8ca7093fd4433472fd99b5650f8a26dcd8ba410e14094c1e44cd3ceddd"}, + {file = "greenlet-3.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:990066bff27c4fcf3b69382b86f4c99b3652bab2a7e685d968cd4d0cfc6f67c6"}, + {file = "greenlet-3.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ce85c43ae54845272f6f9cd8320d034d7a946e9773c693b27d620edec825e376"}, + {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ee2e967bd7ff85d84a2de09df10e021c9b38c7d91dead95b406ed6350c6997"}, + {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87c8ceb0cf8a5a51b8008b643844b7f4a8264a2c13fcbcd8a8316161725383fe"}, + {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6a8c9d4f8692917a3dc7eb25a6fb337bff86909febe2f793ec1928cd97bedfc"}, + {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fbc5b8f3dfe24784cee8ce0be3da2d8a79e46a276593db6868382d9c50d97b1"}, + {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85d2b77e7c9382f004b41d9c72c85537fac834fb141b0296942d52bf03fe4a3d"}, + {file = "greenlet-3.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:696d8e7d82398e810f2b3622b24e87906763b6ebfd90e361e88eb85b0e554dc8"}, + {file = "greenlet-3.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:329c5a2e5a0ee942f2992c5e3ff40be03e75f745f48847f118a3cfece7a28546"}, + {file = "greenlet-3.0.1-cp39-cp39-win32.whl", hash = "sha256:cf868e08690cb89360eebc73ba4be7fb461cfbc6168dd88e2fbbe6f31812cd57"}, + {file = "greenlet-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:ac4a39d1abae48184d420aa8e5e63efd1b75c8444dd95daa3e03f6c6310e9619"}, + {file = "greenlet-3.0.1.tar.gz", hash = "sha256:816bd9488a94cba78d93e1abb58000e8266fa9cc2aa9ccdd6eb0696acb24005b"}, ] [package.extras] -docs = ["Sphinx", "docutils (<0.18)"] +docs = ["Sphinx"] test = ["objgraph", "psutil"] [[package]] name = "grpcio" -version = "1.57.0" +version = "1.59.2" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.7" files = [ - {file = "grpcio-1.57.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:092fa155b945015754bdf988be47793c377b52b88d546e45c6a9f9579ac7f7b6"}, - {file = "grpcio-1.57.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:2f7349786da979a94690cc5c2b804cab4e8774a3cf59be40d037c4342c906649"}, - {file = "grpcio-1.57.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:82640e57fb86ea1d71ea9ab54f7e942502cf98a429a200b2e743d8672171734f"}, - {file = "grpcio-1.57.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40b72effd4c789de94ce1be2b5f88d7b9b5f7379fe9645f198854112a6567d9a"}, - {file = "grpcio-1.57.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f708a6a17868ad8bf586598bee69abded4996b18adf26fd2d91191383b79019"}, - {file = "grpcio-1.57.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:60fe15288a0a65d5c1cb5b4a62b1850d07336e3ba728257a810317be14f0c527"}, - {file = "grpcio-1.57.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6907b1cf8bb29b058081d2aad677b15757a44ef2d4d8d9130271d2ad5e33efca"}, - {file = "grpcio-1.57.0-cp310-cp310-win32.whl", hash = "sha256:57b183e8b252825c4dd29114d6c13559be95387aafc10a7be645462a0fc98bbb"}, - {file = "grpcio-1.57.0-cp310-cp310-win_amd64.whl", hash = "sha256:7b400807fa749a9eb286e2cd893e501b110b4d356a218426cb9c825a0474ca56"}, - {file = "grpcio-1.57.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:c6ebecfb7a31385393203eb04ed8b6a08f5002f53df3d59e5e795edb80999652"}, - {file = "grpcio-1.57.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:00258cbe3f5188629828363ae8ff78477ce976a6f63fb2bb5e90088396faa82e"}, - {file = "grpcio-1.57.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:23e7d8849a0e58b806253fd206ac105b328171e01b8f18c7d5922274958cc87e"}, - {file = "grpcio-1.57.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5371bcd861e679d63b8274f73ac281751d34bd54eccdbfcd6aa00e692a82cd7b"}, - {file = "grpcio-1.57.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aed90d93b731929e742967e236f842a4a2174dc5db077c8f9ad2c5996f89f63e"}, - {file = "grpcio-1.57.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:fe752639919aad9ffb0dee0d87f29a6467d1ef764f13c4644d212a9a853a078d"}, - {file = "grpcio-1.57.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fada6b07ec4f0befe05218181f4b85176f11d531911b64c715d1875c4736d73a"}, - {file = "grpcio-1.57.0-cp311-cp311-win32.whl", hash = "sha256:bb396952cfa7ad2f01061fbc7dc1ad91dd9d69243bcb8110cf4e36924785a0fe"}, - {file = "grpcio-1.57.0-cp311-cp311-win_amd64.whl", hash = "sha256:e503cb45ed12b924b5b988ba9576dc9949b2f5283b8e33b21dcb6be74a7c58d0"}, - {file = "grpcio-1.57.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:fd173b4cf02b20f60860dc2ffe30115c18972d7d6d2d69df97ac38dee03be5bf"}, - {file = "grpcio-1.57.0-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:d7f8df114d6b4cf5a916b98389aeaf1e3132035420a88beea4e3d977e5f267a5"}, - {file = "grpcio-1.57.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:76c44efa4ede1f42a9d5b2fed1fe9377e73a109bef8675fb0728eb80b0b8e8f2"}, - {file = "grpcio-1.57.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4faea2cfdf762a664ab90589b66f416274887641ae17817de510b8178356bf73"}, - {file = "grpcio-1.57.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c60b83c43faeb6d0a9831f0351d7787a0753f5087cc6fa218d78fdf38e5acef0"}, - {file = "grpcio-1.57.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b363bbb5253e5f9c23d8a0a034dfdf1b7c9e7f12e602fc788c435171e96daccc"}, - {file = "grpcio-1.57.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:f1fb0fd4a1e9b11ac21c30c169d169ef434c6e9344ee0ab27cfa6f605f6387b2"}, - {file = "grpcio-1.57.0-cp37-cp37m-win_amd64.whl", hash = "sha256:34950353539e7d93f61c6796a007c705d663f3be41166358e3d88c45760c7d98"}, - {file = "grpcio-1.57.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:871f9999e0211f9551f368612460442a5436d9444606184652117d6a688c9f51"}, - {file = "grpcio-1.57.0-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:a8a8e560e8dbbdf29288872e91efd22af71e88b0e5736b0daf7773c1fecd99f0"}, - {file = "grpcio-1.57.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:2313b124e475aa9017a9844bdc5eafb2d5abdda9d456af16fc4535408c7d6da6"}, - {file = "grpcio-1.57.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4098b6b638d9e0ca839a81656a2fd4bc26c9486ea707e8b1437d6f9d61c3941"}, - {file = "grpcio-1.57.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e5b58e32ae14658085c16986d11e99abd002ddbf51c8daae8a0671fffb3467f"}, - {file = "grpcio-1.57.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0f80bf37f09e1caba6a8063e56e2b87fa335add314cf2b78ebf7cb45aa7e3d06"}, - {file = "grpcio-1.57.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5b7a4ce8f862fe32b2a10b57752cf3169f5fe2915acfe7e6a1e155db3da99e79"}, - {file = "grpcio-1.57.0-cp38-cp38-win32.whl", hash = "sha256:9338bacf172e942e62e5889b6364e56657fbf8ac68062e8b25c48843e7b202bb"}, - {file = "grpcio-1.57.0-cp38-cp38-win_amd64.whl", hash = "sha256:e1cb52fa2d67d7f7fab310b600f22ce1ff04d562d46e9e0ac3e3403c2bb4cc16"}, - {file = "grpcio-1.57.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:fee387d2fab144e8a34e0e9c5ca0f45c9376b99de45628265cfa9886b1dbe62b"}, - {file = "grpcio-1.57.0-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:b53333627283e7241fcc217323f225c37783b5f0472316edcaa4479a213abfa6"}, - {file = "grpcio-1.57.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:f19ac6ac0a256cf77d3cc926ef0b4e64a9725cc612f97228cd5dc4bd9dbab03b"}, - {file = "grpcio-1.57.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3fdf04e402f12e1de8074458549337febb3b45f21076cc02ef4ff786aff687e"}, - {file = "grpcio-1.57.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5613a2fecc82f95d6c51d15b9a72705553aa0d7c932fad7aed7afb51dc982ee5"}, - {file = "grpcio-1.57.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:b670c2faa92124b7397b42303e4d8eb64a4cd0b7a77e35a9e865a55d61c57ef9"}, - {file = "grpcio-1.57.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7a635589201b18510ff988161b7b573f50c6a48fae9cb567657920ca82022b37"}, - {file = "grpcio-1.57.0-cp39-cp39-win32.whl", hash = "sha256:d78d8b86fcdfa1e4c21f8896614b6cc7ee01a2a758ec0c4382d662f2a62cf766"}, - {file = "grpcio-1.57.0-cp39-cp39-win_amd64.whl", hash = "sha256:20ec6fc4ad47d1b6e12deec5045ec3cd5402d9a1597f738263e98f490fe07056"}, - {file = "grpcio-1.57.0.tar.gz", hash = "sha256:4b089f7ad1eb00a104078bab8015b0ed0ebcb3b589e527ab009c53893fd4e613"}, + {file = "grpcio-1.59.2-cp310-cp310-linux_armv7l.whl", hash = "sha256:d2fa68a96a30dd240be80bbad838a0ac81a61770611ff7952b889485970c4c71"}, + {file = "grpcio-1.59.2-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:cf0dead5a2c5a3347af2cfec7131d4f2a2e03c934af28989c9078f8241a491fa"}, + {file = "grpcio-1.59.2-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:e420ced29b5904cdf9ee5545e23f9406189d8acb6750916c2db4793dada065c6"}, + {file = "grpcio-1.59.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b230028a008ae1d0f430acb227d323ff8a619017415cf334c38b457f814119f"}, + {file = "grpcio-1.59.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a4a3833c0e067f3558538727235cd8a49709bff1003200bbdefa2f09334e4b1"}, + {file = "grpcio-1.59.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6b25ed37c27e652db01be341af93fbcea03d296c024d8a0e680017a268eb85dd"}, + {file = "grpcio-1.59.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73abb8584b0cf74d37f5ef61c10722adc7275502ab71789a8fe3cb7ef04cf6e2"}, + {file = "grpcio-1.59.2-cp310-cp310-win32.whl", hash = "sha256:d6f70406695e3220f09cd7a2f879333279d91aa4a8a1d34303b56d61a8180137"}, + {file = "grpcio-1.59.2-cp310-cp310-win_amd64.whl", hash = "sha256:3c61d641d4f409c5ae46bfdd89ea42ce5ea233dcf69e74ce9ba32b503c727e29"}, + {file = "grpcio-1.59.2-cp311-cp311-linux_armv7l.whl", hash = "sha256:3059668df17627f0e0fa680e9ef8c995c946c792612e9518f5cc1503be14e90b"}, + {file = "grpcio-1.59.2-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:72ca2399097c0b758198f2ff30f7178d680de8a5cfcf3d9b73a63cf87455532e"}, + {file = "grpcio-1.59.2-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:c978f864b35f2261e0819f5cd88b9830b04dc51bcf055aac3c601e525a10d2ba"}, + {file = "grpcio-1.59.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9411e24328a2302e279e70cae6e479f1fddde79629fcb14e03e6d94b3956eabf"}, + {file = "grpcio-1.59.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb7e0fe6ad73b7f06d7e2b689c19a71cf5cc48f0c2bf8608469e51ffe0bd2867"}, + {file = "grpcio-1.59.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c2504eed520958a5b77cc99458297cb7906308cb92327f35fb7fbbad4e9b2188"}, + {file = "grpcio-1.59.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2171c39f355ba5b551c5d5928d65aa6c69807fae195b86ef4a7d125bcdb860a9"}, + {file = "grpcio-1.59.2-cp311-cp311-win32.whl", hash = "sha256:d2794f0e68b3085d99b4f6ff9c089f6fdd02b32b9d3efdfbb55beac1bf22d516"}, + {file = "grpcio-1.59.2-cp311-cp311-win_amd64.whl", hash = "sha256:2067274c88bc6de89c278a672a652b4247d088811ece781a4858b09bdf8448e3"}, + {file = "grpcio-1.59.2-cp312-cp312-linux_armv7l.whl", hash = "sha256:535561990e075fa6bd4b16c4c3c1096b9581b7bb35d96fac4650f1181e428268"}, + {file = "grpcio-1.59.2-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:a213acfbf186b9f35803b52e4ca9addb153fc0b67f82a48f961be7000ecf6721"}, + {file = "grpcio-1.59.2-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:6959fb07e8351e20501ffb8cc4074c39a0b7ef123e1c850a7f8f3afdc3a3da01"}, + {file = "grpcio-1.59.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e82c5cf1495244adf5252f925ac5932e5fd288b3e5ab6b70bec5593074b7236c"}, + {file = "grpcio-1.59.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:023088764012411affe7db183d1ada3ad9daf2e23ddc719ff46d7061de661340"}, + {file = "grpcio-1.59.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:da2d94c15f88cd40d7e67f7919d4f60110d2b9d5b1e08cf354c2be773ab13479"}, + {file = "grpcio-1.59.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:6009386a2df66159f64ac9f20425ae25229b29b9dd0e1d3dd60043f037e2ad7e"}, + {file = "grpcio-1.59.2-cp312-cp312-win32.whl", hash = "sha256:75c6ecb70e809cf1504465174343113f51f24bc61e22a80ae1c859f3f7034c6d"}, + {file = "grpcio-1.59.2-cp312-cp312-win_amd64.whl", hash = "sha256:cbe946b3e6e60a7b4618f091e62a029cb082b109a9d6b53962dd305087c6e4fd"}, + {file = "grpcio-1.59.2-cp37-cp37m-linux_armv7l.whl", hash = "sha256:f8753a6c88d1d0ba64302309eecf20f70d2770f65ca02d83c2452279085bfcd3"}, + {file = "grpcio-1.59.2-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:f1ef0d39bc1feb420caf549b3c657c871cad4ebbcf0580c4d03816b0590de0cf"}, + {file = "grpcio-1.59.2-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:4c93f4abbb54321ee6471e04a00139c80c754eda51064187963ddf98f5cf36a4"}, + {file = "grpcio-1.59.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08d77e682f2bf730a4961eea330e56d2f423c6a9b91ca222e5b1eb24a357b19f"}, + {file = "grpcio-1.59.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ff16d68bf453275466a9a46739061a63584d92f18a0f5b33d19fc97eb69867c"}, + {file = "grpcio-1.59.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4abb717e320e74959517dc8e84a9f48fbe90e9abe19c248541e9418b1ce60acd"}, + {file = "grpcio-1.59.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:36f53c2b3449c015880e7d55a89c992c357f176327b0d2873cdaaf9628a37c69"}, + {file = "grpcio-1.59.2-cp37-cp37m-win_amd64.whl", hash = "sha256:cc3e4cd087f07758b16bef8f31d88dbb1b5da5671d2f03685ab52dece3d7a16e"}, + {file = "grpcio-1.59.2-cp38-cp38-linux_armv7l.whl", hash = "sha256:27f879ae604a7fcf371e59fba6f3ff4635a4c2a64768bd83ff0cac503142fef4"}, + {file = "grpcio-1.59.2-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:7cf05053242f61ba94014dd3a986e11a083400a32664058f80bf4cf817c0b3a1"}, + {file = "grpcio-1.59.2-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:e1727c1c0e394096bb9af185c6923e8ea55a5095b8af44f06903bcc0e06800a2"}, + {file = "grpcio-1.59.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5d573e70a6fe77555fb6143c12d3a7d3fa306632a3034b4e7c59ca09721546f8"}, + {file = "grpcio-1.59.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31176aa88f36020055ace9adff2405a33c8bdbfa72a9c4980e25d91b2f196873"}, + {file = "grpcio-1.59.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:11168ef43e4a43ff1b1a65859f3e0ef1a173e277349e7fb16923ff108160a8cd"}, + {file = "grpcio-1.59.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:53c9aa5ddd6857c0a1cd0287225a2a25873a8e09727c2e95c4aebb1be83a766a"}, + {file = "grpcio-1.59.2-cp38-cp38-win32.whl", hash = "sha256:3b4368b33908f683a363f376dfb747d40af3463a6e5044afee07cf9436addf96"}, + {file = "grpcio-1.59.2-cp38-cp38-win_amd64.whl", hash = "sha256:0a754aff9e3af63bdc4c75c234b86b9d14e14a28a30c4e324aed1a9b873d755f"}, + {file = "grpcio-1.59.2-cp39-cp39-linux_armv7l.whl", hash = "sha256:1f9524d1d701e399462d2c90ba7c193e49d1711cf429c0d3d97c966856e03d00"}, + {file = "grpcio-1.59.2-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:f93dbf58f03146164048be5426ffde298b237a5e059144847e4940f5b80172c3"}, + {file = "grpcio-1.59.2-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:6da6dea3a1bacf99b3c2187e296db9a83029ed9c38fd4c52b7c9b7326d13c828"}, + {file = "grpcio-1.59.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5f09cffa619adfb44799fa4a81c2a1ad77c887187613fb0a8f201ab38d89ba1"}, + {file = "grpcio-1.59.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c35aa9657f5d5116d23b934568e0956bd50c615127810fffe3ac356a914c176a"}, + {file = "grpcio-1.59.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:74100fecaec8a535e380cf5f2fb556ff84957d481c13e54051c52e5baac70541"}, + {file = "grpcio-1.59.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:128e20f57c5f27cb0157e73756d1586b83c1b513ebecc83ea0ac37e4b0e4e758"}, + {file = "grpcio-1.59.2-cp39-cp39-win32.whl", hash = "sha256:686e975a5d16602dc0982c7c703948d17184bd1397e16c8ee03511ecb8c4cdda"}, + {file = "grpcio-1.59.2-cp39-cp39-win_amd64.whl", hash = "sha256:242adc47725b9a499ee77c6a2e36688fa6c96484611f33b1be4c57ab075a92dd"}, + {file = "grpcio-1.59.2.tar.gz", hash = "sha256:d8f9cd4ad1be90b0cf350a2f04a38a36e44a026cac1e036ac593dc48efe91d52"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.57.0)"] +protobuf = ["grpcio-tools (>=1.59.2)"] [[package]] name = "h11" @@ -667,21 +695,21 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs [[package]] name = "importlib-resources" -version = "6.0.1" +version = "6.1.1" description = "Read resources from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_resources-6.0.1-py3-none-any.whl", hash = "sha256:134832a506243891221b88b4ae1213327eea96ceb4e407a00d790bb0626f45cf"}, - {file = "importlib_resources-6.0.1.tar.gz", hash = "sha256:4359457e42708462b9626a04657c6208ad799ceb41e5c58c57ffa0e6a098a5d4"}, + {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"}, + {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"}, ] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"] [[package]] name = "iniconfig" @@ -923,38 +951,38 @@ test = ["mypy (>=1.0)", "pytest (>=7.0.0)"] [[package]] name = "mypy" -version = "1.5.1" +version = "1.6.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f33592ddf9655a4894aef22d134de7393e95fcbdc2d15c1ab65828eee5c66c70"}, - {file = "mypy-1.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:258b22210a4a258ccd077426c7a181d789d1121aca6db73a83f79372f5569ae0"}, - {file = "mypy-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9ec1f695f0c25986e6f7f8778e5ce61659063268836a38c951200c57479cc12"}, - {file = "mypy-1.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:abed92d9c8f08643c7d831300b739562b0a6c9fcb028d211134fc9ab20ccad5d"}, - {file = "mypy-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:a156e6390944c265eb56afa67c74c0636f10283429171018446b732f1a05af25"}, - {file = "mypy-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ac9c21bfe7bc9f7f1b6fae441746e6a106e48fc9de530dea29e8cd37a2c0cc4"}, - {file = "mypy-1.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51cb1323064b1099e177098cb939eab2da42fea5d818d40113957ec954fc85f4"}, - {file = "mypy-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:596fae69f2bfcb7305808c75c00f81fe2829b6236eadda536f00610ac5ec2243"}, - {file = "mypy-1.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:32cb59609b0534f0bd67faebb6e022fe534bdb0e2ecab4290d683d248be1b275"}, - {file = "mypy-1.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:159aa9acb16086b79bbb0016145034a1a05360626046a929f84579ce1666b315"}, - {file = "mypy-1.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f6b0e77db9ff4fda74de7df13f30016a0a663928d669c9f2c057048ba44f09bb"}, - {file = "mypy-1.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:26f71b535dfc158a71264e6dc805a9f8d2e60b67215ca0bfa26e2e1aa4d4d373"}, - {file = "mypy-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc3a600f749b1008cc75e02b6fb3d4db8dbcca2d733030fe7a3b3502902f161"}, - {file = "mypy-1.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:26fb32e4d4afa205b24bf645eddfbb36a1e17e995c5c99d6d00edb24b693406a"}, - {file = "mypy-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:82cb6193de9bbb3844bab4c7cf80e6227d5225cc7625b068a06d005d861ad5f1"}, - {file = "mypy-1.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4a465ea2ca12804d5b34bb056be3a29dc47aea5973b892d0417c6a10a40b2d65"}, - {file = "mypy-1.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9fece120dbb041771a63eb95e4896791386fe287fefb2837258925b8326d6160"}, - {file = "mypy-1.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d28ddc3e3dfeab553e743e532fb95b4e6afad51d4706dd22f28e1e5e664828d2"}, - {file = "mypy-1.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:57b10c56016adce71fba6bc6e9fd45d8083f74361f629390c556738565af8eeb"}, - {file = "mypy-1.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:ff0cedc84184115202475bbb46dd99f8dcb87fe24d5d0ddfc0fe6b8575c88d2f"}, - {file = "mypy-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8f772942d372c8cbac575be99f9cc9d9fb3bd95c8bc2de6c01411e2c84ebca8a"}, - {file = "mypy-1.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5d627124700b92b6bbaa99f27cbe615c8ea7b3402960f6372ea7d65faf376c14"}, - {file = "mypy-1.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:361da43c4f5a96173220eb53340ace68cda81845cd88218f8862dfb0adc8cddb"}, - {file = "mypy-1.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:330857f9507c24de5c5724235e66858f8364a0693894342485e543f5b07c8693"}, - {file = "mypy-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:c543214ffdd422623e9fedd0869166c2f16affe4ba37463975043ef7d2ea8770"}, - {file = "mypy-1.5.1-py3-none-any.whl", hash = "sha256:f757063a83970d67c444f6e01d9550a7402322af3557ce7630d3c957386fa8f5"}, - {file = "mypy-1.5.1.tar.gz", hash = "sha256:b031b9601f1060bf1281feab89697324726ba0c0bae9d7cd7ab4b690940f0b92"}, + {file = "mypy-1.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e5012e5cc2ac628177eaac0e83d622b2dd499e28253d4107a08ecc59ede3fc2c"}, + {file = "mypy-1.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d8fbb68711905f8912e5af474ca8b78d077447d8f3918997fecbf26943ff3cbb"}, + {file = "mypy-1.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21a1ad938fee7d2d96ca666c77b7c494c3c5bd88dff792220e1afbebb2925b5e"}, + {file = "mypy-1.6.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b96ae2c1279d1065413965c607712006205a9ac541895004a1e0d4f281f2ff9f"}, + {file = "mypy-1.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:40b1844d2e8b232ed92e50a4bd11c48d2daa351f9deee6c194b83bf03e418b0c"}, + {file = "mypy-1.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:81af8adaa5e3099469e7623436881eff6b3b06db5ef75e6f5b6d4871263547e5"}, + {file = "mypy-1.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8c223fa57cb154c7eab5156856c231c3f5eace1e0bed9b32a24696b7ba3c3245"}, + {file = "mypy-1.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8032e00ce71c3ceb93eeba63963b864bf635a18f6c0c12da6c13c450eedb183"}, + {file = "mypy-1.6.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4c46b51de523817a0045b150ed11b56f9fff55f12b9edd0f3ed35b15a2809de0"}, + {file = "mypy-1.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:19f905bcfd9e167159b3d63ecd8cb5e696151c3e59a1742e79bc3bcb540c42c7"}, + {file = "mypy-1.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:82e469518d3e9a321912955cc702d418773a2fd1e91c651280a1bda10622f02f"}, + {file = "mypy-1.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d4473c22cc296425bbbce7e9429588e76e05bc7342da359d6520b6427bf76660"}, + {file = "mypy-1.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59a0d7d24dfb26729e0a068639a6ce3500e31d6655df8557156c51c1cb874ce7"}, + {file = "mypy-1.6.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cfd13d47b29ed3bbaafaff7d8b21e90d827631afda134836962011acb5904b71"}, + {file = "mypy-1.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:eb4f18589d196a4cbe5290b435d135dee96567e07c2b2d43b5c4621b6501531a"}, + {file = "mypy-1.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:41697773aa0bf53ff917aa077e2cde7aa50254f28750f9b88884acea38a16169"}, + {file = "mypy-1.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7274b0c57737bd3476d2229c6389b2ec9eefeb090bbaf77777e9d6b1b5a9d143"}, + {file = "mypy-1.6.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbaf4662e498c8c2e352da5f5bca5ab29d378895fa2d980630656178bd607c46"}, + {file = "mypy-1.6.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bb8ccb4724f7d8601938571bf3f24da0da791fe2db7be3d9e79849cb64e0ae85"}, + {file = "mypy-1.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:68351911e85145f582b5aa6cd9ad666c8958bcae897a1bfda8f4940472463c45"}, + {file = "mypy-1.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:49ae115da099dcc0922a7a895c1eec82c1518109ea5c162ed50e3b3594c71208"}, + {file = "mypy-1.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8b27958f8c76bed8edaa63da0739d76e4e9ad4ed325c814f9b3851425582a3cd"}, + {file = "mypy-1.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:925cd6a3b7b55dfba252b7c4561892311c5358c6b5a601847015a1ad4eb7d332"}, + {file = "mypy-1.6.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8f57e6b6927a49550da3d122f0cb983d400f843a8a82e65b3b380d3d7259468f"}, + {file = "mypy-1.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:a43ef1c8ddfdb9575691720b6352761f3f53d85f1b57d7745701041053deff30"}, + {file = "mypy-1.6.1-py3-none-any.whl", hash = "sha256:4cbe68ef919c28ea561165206a2dcb68591c50f3bcf777932323bc208d949cf1"}, + {file = "mypy-1.6.1.tar.gz", hash = "sha256:4d01c00d09a0be62a4ca3f933e315455bde83f37f892ba4b08ce92f3cf44bcc1"}, ] [package.dependencies] @@ -1207,13 +1235,13 @@ files = [ [[package]] name = "packaging" -version = "23.1" +version = "23.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] @@ -1245,13 +1273,13 @@ twisted = ["twisted"] [[package]] name = "platformdirs" -version = "3.10.0" +version = "3.11.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, - {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, + {file = "platformdirs-3.11.0-py3-none-any.whl", hash = "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"}, + {file = "platformdirs-3.11.0.tar.gz", hash = "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3"}, ] [package.extras] @@ -1260,13 +1288,13 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co [[package]] name = "pluggy" -version = "1.2.0" +version = "1.3.0" description = "plugin and hook calling mechanisms for python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"}, - {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"}, + {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, + {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, ] [package.extras] @@ -1289,47 +1317,47 @@ twisted = ["twisted"] [[package]] name = "protobuf" -version = "4.24.1" +version = "4.25.0" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "protobuf-4.24.1-cp310-abi3-win32.whl", hash = "sha256:d414199ca605eeb498adc4d2ba82aedc0379dca4a7c364ff9bc9a179aa28e71b"}, - {file = "protobuf-4.24.1-cp310-abi3-win_amd64.whl", hash = "sha256:5906c5e79ff50fe38b2d49d37db5874e3c8010826f2362f79996d83128a8ed9b"}, - {file = "protobuf-4.24.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:970c701ee16788d74f3de20938520d7a0aebc7e4fff37096a48804c80d2908cf"}, - {file = "protobuf-4.24.1-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:fc361148e902949dcb953bbcb148c99fe8f8854291ad01107e4120361849fd0e"}, - {file = "protobuf-4.24.1-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:5d32363d14aca6e5c9e9d5918ad8fb65b091b6df66740ae9de50ac3916055e43"}, - {file = "protobuf-4.24.1-cp37-cp37m-win32.whl", hash = "sha256:df015c47d6855b8efa0b9be706c70bf7f050a4d5ac6d37fb043fbd95157a0e25"}, - {file = "protobuf-4.24.1-cp37-cp37m-win_amd64.whl", hash = "sha256:d4af4fd9e9418e819be30f8df2a16e72fbad546a7576ac7f3653be92a6966d30"}, - {file = "protobuf-4.24.1-cp38-cp38-win32.whl", hash = "sha256:302e8752c760549ed4c7a508abc86b25d46553c81989343782809e1a062a2ef9"}, - {file = "protobuf-4.24.1-cp38-cp38-win_amd64.whl", hash = "sha256:06437f0d4bb0d5f29e3d392aba69600188d4be5ad1e0a3370e581a9bf75a3081"}, - {file = "protobuf-4.24.1-cp39-cp39-win32.whl", hash = "sha256:0b2b224e9541fe9f046dd7317d05f08769c332b7e4c54d93c7f0f372dedb0b1a"}, - {file = "protobuf-4.24.1-cp39-cp39-win_amd64.whl", hash = "sha256:bd39b9094a4cc003a1f911b847ab379f89059f478c0b611ba1215053e295132e"}, - {file = "protobuf-4.24.1-py3-none-any.whl", hash = "sha256:55dd644adc27d2a624339332755fe077c7f26971045b469ebb9732a69ce1f2ca"}, - {file = "protobuf-4.24.1.tar.gz", hash = "sha256:44837a5ed9c9418ad5d502f89f28ba102e9cd172b6668bc813f21716f9273348"}, + {file = "protobuf-4.25.0-cp310-abi3-win32.whl", hash = "sha256:5c1203ac9f50e4853b0a0bfffd32c67118ef552a33942982eeab543f5c634395"}, + {file = "protobuf-4.25.0-cp310-abi3-win_amd64.whl", hash = "sha256:c40ff8f00aa737938c5378d461637d15c442a12275a81019cc2fef06d81c9419"}, + {file = "protobuf-4.25.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:cf21faba64cd2c9a3ed92b7a67f226296b10159dbb8fbc5e854fc90657d908e4"}, + {file = "protobuf-4.25.0-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:32ac2100b0e23412413d948c03060184d34a7c50b3e5d7524ee96ac2b10acf51"}, + {file = "protobuf-4.25.0-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:683dc44c61f2620b32ce4927de2108f3ebe8ccf2fd716e1e684e5a50da154054"}, + {file = "protobuf-4.25.0-cp38-cp38-win32.whl", hash = "sha256:1a3ba712877e6d37013cdc3476040ea1e313a6c2e1580836a94f76b3c176d575"}, + {file = "protobuf-4.25.0-cp38-cp38-win_amd64.whl", hash = "sha256:b2cf8b5d381f9378afe84618288b239e75665fe58d0f3fd5db400959274296e9"}, + {file = "protobuf-4.25.0-cp39-cp39-win32.whl", hash = "sha256:63714e79b761a37048c9701a37438aa29945cd2417a97076048232c1df07b701"}, + {file = "protobuf-4.25.0-cp39-cp39-win_amd64.whl", hash = "sha256:d94a33db8b7ddbd0af7c467475fb9fde0c705fb315a8433c0e2020942b863a1f"}, + {file = "protobuf-4.25.0-py3-none-any.whl", hash = "sha256:1a53d6f64b00eecf53b65ff4a8c23dc95df1fa1e97bb06b8122e5a64f49fc90a"}, + {file = "protobuf-4.25.0.tar.gz", hash = "sha256:68f7caf0d4f012fd194a301420cf6aa258366144d814f358c5b32558228afa7c"}, ] [[package]] name = "psutil" -version = "5.9.5" +version = "5.9.6" description = "Cross-platform lib for process and system monitoring in Python." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "psutil-5.9.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:be8929ce4313f9f8146caad4272f6abb8bf99fc6cf59344a3167ecd74f4f203f"}, - {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ab8ed1a1d77c95453db1ae00a3f9c50227ebd955437bcf2a574ba8adbf6a74d5"}, - {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:4aef137f3345082a3d3232187aeb4ac4ef959ba3d7c10c33dd73763fbc063da4"}, - {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ea8518d152174e1249c4f2a1c89e3e6065941df2fa13a1ab45327716a23c2b48"}, - {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:acf2aef9391710afded549ff602b5887d7a2349831ae4c26be7c807c0a39fac4"}, - {file = "psutil-5.9.5-cp27-none-win32.whl", hash = "sha256:5b9b8cb93f507e8dbaf22af6a2fd0ccbe8244bf30b1baad6b3954e935157ae3f"}, - {file = "psutil-5.9.5-cp27-none-win_amd64.whl", hash = "sha256:8c5f7c5a052d1d567db4ddd231a9d27a74e8e4a9c3f44b1032762bd7b9fdcd42"}, - {file = "psutil-5.9.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3c6f686f4225553615612f6d9bc21f1c0e305f75d7d8454f9b46e901778e7217"}, - {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a7dd9997128a0d928ed4fb2c2d57e5102bb6089027939f3b722f3a210f9a8da"}, - {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89518112647f1276b03ca97b65cc7f64ca587b1eb0278383017c2a0dcc26cbe4"}, - {file = "psutil-5.9.5-cp36-abi3-win32.whl", hash = "sha256:104a5cc0e31baa2bcf67900be36acde157756b9c44017b86b2c049f11957887d"}, - {file = "psutil-5.9.5-cp36-abi3-win_amd64.whl", hash = "sha256:b258c0c1c9d145a1d5ceffab1134441c4c5113b2417fafff7315a917a026c3c9"}, - {file = "psutil-5.9.5-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:c607bb3b57dc779d55e1554846352b4e358c10fff3abf3514a7a6601beebdb30"}, - {file = "psutil-5.9.5.tar.gz", hash = "sha256:5410638e4df39c54d957fc51ce03048acd8e6d60abc0f5107af51e5fb566eb3c"}, +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +files = [ + {file = "psutil-5.9.6-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:fb8a697f11b0f5994550555fcfe3e69799e5b060c8ecf9e2f75c69302cc35c0d"}, + {file = "psutil-5.9.6-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:91ecd2d9c00db9817a4b4192107cf6954addb5d9d67a969a4f436dbc9200f88c"}, + {file = "psutil-5.9.6-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:10e8c17b4f898d64b121149afb136c53ea8b68c7531155147867b7b1ac9e7e28"}, + {file = "psutil-5.9.6-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:18cd22c5db486f33998f37e2bb054cc62fd06646995285e02a51b1e08da97017"}, + {file = "psutil-5.9.6-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:ca2780f5e038379e520281e4c032dddd086906ddff9ef0d1b9dcf00710e5071c"}, + {file = "psutil-5.9.6-cp27-none-win32.whl", hash = "sha256:70cb3beb98bc3fd5ac9ac617a327af7e7f826373ee64c80efd4eb2856e5051e9"}, + {file = "psutil-5.9.6-cp27-none-win_amd64.whl", hash = "sha256:51dc3d54607c73148f63732c727856f5febec1c7c336f8f41fcbd6315cce76ac"}, + {file = "psutil-5.9.6-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c69596f9fc2f8acd574a12d5f8b7b1ba3765a641ea5d60fb4736bf3c08a8214a"}, + {file = "psutil-5.9.6-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92e0cc43c524834af53e9d3369245e6cc3b130e78e26100d1f63cdb0abeb3d3c"}, + {file = "psutil-5.9.6-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:748c9dd2583ed86347ed65d0035f45fa8c851e8d90354c122ab72319b5f366f4"}, + {file = "psutil-5.9.6-cp36-cp36m-win32.whl", hash = "sha256:3ebf2158c16cc69db777e3c7decb3c0f43a7af94a60d72e87b2823aebac3d602"}, + {file = "psutil-5.9.6-cp36-cp36m-win_amd64.whl", hash = "sha256:ff18b8d1a784b810df0b0fff3bcb50ab941c3b8e2c8de5726f9c71c601c611aa"}, + {file = "psutil-5.9.6-cp37-abi3-win32.whl", hash = "sha256:a6f01f03bf1843280f4ad16f4bde26b817847b4c1a0db59bf6419807bc5ce05c"}, + {file = "psutil-5.9.6-cp37-abi3-win_amd64.whl", hash = "sha256:6e5fb8dc711a514da83098bc5234264e551ad980cec5f85dabf4d38ed6f15e9a"}, + {file = "psutil-5.9.6-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:daecbcbd29b289aac14ece28eca6a3e60aa361754cf6da3dfb20d4d32b6c7f57"}, + {file = "psutil-5.9.6.tar.gz", hash = "sha256:e4b92ddcd7dd4cdd3f900180ea1e104932c7bce234fb88976e2a3b296441225a"}, ] [package.extras] @@ -1337,38 +1365,51 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] [[package]] name = "psycopg2" -version = "2.9.7" +version = "2.9.9" description = "psycopg2 - Python-PostgreSQL Database Adapter" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "psycopg2-2.9.7-cp310-cp310-win32.whl", hash = "sha256:1a6a2d609bce44f78af4556bea0c62a5e7f05c23e5ea9c599e07678995609084"}, - {file = "psycopg2-2.9.7-cp310-cp310-win_amd64.whl", hash = "sha256:b22ed9c66da2589a664e0f1ca2465c29b75aaab36fa209d4fb916025fb9119e5"}, - {file = "psycopg2-2.9.7-cp311-cp311-win32.whl", hash = "sha256:44d93a0109dfdf22fe399b419bcd7fa589d86895d3931b01fb321d74dadc68f1"}, - {file = "psycopg2-2.9.7-cp311-cp311-win_amd64.whl", hash = "sha256:91e81a8333a0037babfc9fe6d11e997a9d4dac0f38c43074886b0d9dead94fe9"}, - {file = "psycopg2-2.9.7-cp37-cp37m-win32.whl", hash = "sha256:d1210fcf99aae6f728812d1d2240afc1dc44b9e6cba526a06fb8134f969957c2"}, - {file = "psycopg2-2.9.7-cp37-cp37m-win_amd64.whl", hash = "sha256:e9b04cbef584310a1ac0f0d55bb623ca3244c87c51187645432e342de9ae81a8"}, - {file = "psycopg2-2.9.7-cp38-cp38-win32.whl", hash = "sha256:d5c5297e2fbc8068d4255f1e606bfc9291f06f91ec31b2a0d4c536210ac5c0a2"}, - {file = "psycopg2-2.9.7-cp38-cp38-win_amd64.whl", hash = "sha256:8275abf628c6dc7ec834ea63f6f3846bf33518907a2b9b693d41fd063767a866"}, - {file = "psycopg2-2.9.7-cp39-cp39-win32.whl", hash = "sha256:c7949770cafbd2f12cecc97dea410c514368908a103acf519f2a346134caa4d5"}, - {file = "psycopg2-2.9.7-cp39-cp39-win_amd64.whl", hash = "sha256:b6bd7d9d3a7a63faae6edf365f0ed0e9b0a1aaf1da3ca146e6b043fb3eb5d723"}, - {file = "psycopg2-2.9.7.tar.gz", hash = "sha256:f00cc35bd7119f1fed17b85bd1007855194dde2cbd8de01ab8ebb17487440ad8"}, + {file = "psycopg2-2.9.9-cp310-cp310-win32.whl", hash = "sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516"}, + {file = "psycopg2-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3"}, + {file = "psycopg2-2.9.9-cp311-cp311-win32.whl", hash = "sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372"}, + {file = "psycopg2-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981"}, + {file = "psycopg2-2.9.9-cp312-cp312-win32.whl", hash = "sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024"}, + {file = "psycopg2-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693"}, + {file = "psycopg2-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa"}, + {file = "psycopg2-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a"}, + {file = "psycopg2-2.9.9-cp38-cp38-win32.whl", hash = "sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c"}, + {file = "psycopg2-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e"}, + {file = "psycopg2-2.9.9-cp39-cp39-win32.whl", hash = "sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59"}, + {file = "psycopg2-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913"}, + {file = "psycopg2-2.9.9.tar.gz", hash = "sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156"}, +] + +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] [[package]] name = "pydantic" -version = "2.3.0" +version = "2.4.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic-2.3.0-py3-none-any.whl", hash = "sha256:45b5e446c6dfaad9444819a293b921a40e1db1aa61ea08aede0522529ce90e81"}, - {file = "pydantic-2.3.0.tar.gz", hash = "sha256:1607cc106602284cd4a00882986570472f193fde9cb1259bceeaedb26aa79a6d"}, + {file = "pydantic-2.4.2-py3-none-any.whl", hash = "sha256:bc3ddf669d234f4220e6e1c4d96b061abe0998185a8d7855c0126782b7abc8c1"}, + {file = "pydantic-2.4.2.tar.gz", hash = "sha256:94f336138093a5d7f426aac732dcfe7ab4eb4da243c88f891d65deb4a2556ee7"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.6.3" +pydantic-core = "2.10.1" typing-extensions = ">=4.6.1" [package.extras] @@ -1376,117 +1417,117 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.6.3" +version = "2.10.1" description = "" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic_core-2.6.3-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:1a0ddaa723c48af27d19f27f1c73bdc615c73686d763388c8683fe34ae777bad"}, - {file = "pydantic_core-2.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5cfde4fab34dd1e3a3f7f3db38182ab6c95e4ea91cf322242ee0be5c2f7e3d2f"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5493a7027bfc6b108e17c3383959485087d5942e87eb62bbac69829eae9bc1f7"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84e87c16f582f5c753b7f39a71bd6647255512191be2d2dbf49458c4ef024588"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:522a9c4a4d1924facce7270c84b5134c5cabcb01513213662a2e89cf28c1d309"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaafc776e5edc72b3cad1ccedb5fd869cc5c9a591f1213aa9eba31a781be9ac1"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a750a83b2728299ca12e003d73d1264ad0440f60f4fc9cee54acc489249b728"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e8b374ef41ad5c461efb7a140ce4730661aadf85958b5c6a3e9cf4e040ff4bb"}, - {file = "pydantic_core-2.6.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b594b64e8568cf09ee5c9501ede37066b9fc41d83d58f55b9952e32141256acd"}, - {file = "pydantic_core-2.6.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2a20c533cb80466c1d42a43a4521669ccad7cf2967830ac62c2c2f9cece63e7e"}, - {file = "pydantic_core-2.6.3-cp310-none-win32.whl", hash = "sha256:04fe5c0a43dec39aedba0ec9579001061d4653a9b53a1366b113aca4a3c05ca7"}, - {file = "pydantic_core-2.6.3-cp310-none-win_amd64.whl", hash = "sha256:6bf7d610ac8f0065a286002a23bcce241ea8248c71988bda538edcc90e0c39ad"}, - {file = "pydantic_core-2.6.3-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:6bcc1ad776fffe25ea5c187a028991c031a00ff92d012ca1cc4714087e575973"}, - {file = "pydantic_core-2.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:df14f6332834444b4a37685810216cc8fe1fe91f447332cd56294c984ecbff1c"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b7486d85293f7f0bbc39b34e1d8aa26210b450bbd3d245ec3d732864009819"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a892b5b1871b301ce20d40b037ffbe33d1407a39639c2b05356acfef5536d26a"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:883daa467865e5766931e07eb20f3e8152324f0adf52658f4d302242c12e2c32"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4eb77df2964b64ba190eee00b2312a1fd7a862af8918ec70fc2d6308f76ac64"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce8c84051fa292a5dc54018a40e2a1926fd17980a9422c973e3ebea017aa8da"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22134a4453bd59b7d1e895c455fe277af9d9d9fbbcb9dc3f4a97b8693e7e2c9b"}, - {file = "pydantic_core-2.6.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:02e1c385095efbd997311d85c6021d32369675c09bcbfff3b69d84e59dc103f6"}, - {file = "pydantic_core-2.6.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d79f1f2f7ebdb9b741296b69049ff44aedd95976bfee38eb4848820628a99b50"}, - {file = "pydantic_core-2.6.3-cp311-none-win32.whl", hash = "sha256:430ddd965ffd068dd70ef4e4d74f2c489c3a313adc28e829dd7262cc0d2dd1e8"}, - {file = "pydantic_core-2.6.3-cp311-none-win_amd64.whl", hash = "sha256:84f8bb34fe76c68c9d96b77c60cef093f5e660ef8e43a6cbfcd991017d375950"}, - {file = "pydantic_core-2.6.3-cp311-none-win_arm64.whl", hash = "sha256:5a2a3c9ef904dcdadb550eedf3291ec3f229431b0084666e2c2aa8ff99a103a2"}, - {file = "pydantic_core-2.6.3-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:8421cf496e746cf8d6b677502ed9a0d1e4e956586cd8b221e1312e0841c002d5"}, - {file = "pydantic_core-2.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bb128c30cf1df0ab78166ded1ecf876620fb9aac84d2413e8ea1594b588c735d"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37a822f630712817b6ecc09ccc378192ef5ff12e2c9bae97eb5968a6cdf3b862"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:240a015102a0c0cc8114f1cba6444499a8a4d0333e178bc504a5c2196defd456"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f90e5e3afb11268628c89f378f7a1ea3f2fe502a28af4192e30a6cdea1e7d5e"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:340e96c08de1069f3d022a85c2a8c63529fd88709468373b418f4cf2c949fb0e"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1480fa4682e8202b560dcdc9eeec1005f62a15742b813c88cdc01d44e85308e5"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f14546403c2a1d11a130b537dda28f07eb6c1805a43dae4617448074fd49c282"}, - {file = "pydantic_core-2.6.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a87c54e72aa2ef30189dc74427421e074ab4561cf2bf314589f6af5b37f45e6d"}, - {file = "pydantic_core-2.6.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f93255b3e4d64785554e544c1c76cd32f4a354fa79e2eeca5d16ac2e7fdd57aa"}, - {file = "pydantic_core-2.6.3-cp312-none-win32.whl", hash = "sha256:f70dc00a91311a1aea124e5f64569ea44c011b58433981313202c46bccbec0e1"}, - {file = "pydantic_core-2.6.3-cp312-none-win_amd64.whl", hash = "sha256:23470a23614c701b37252618e7851e595060a96a23016f9a084f3f92f5ed5881"}, - {file = "pydantic_core-2.6.3-cp312-none-win_arm64.whl", hash = "sha256:1ac1750df1b4339b543531ce793b8fd5c16660a95d13aecaab26b44ce11775e9"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:a53e3195f134bde03620d87a7e2b2f2046e0e5a8195e66d0f244d6d5b2f6d31b"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:f2969e8f72c6236c51f91fbb79c33821d12a811e2a94b7aa59c65f8dbdfad34a"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:672174480a85386dd2e681cadd7d951471ad0bb028ed744c895f11f9d51b9ebe"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:002d0ea50e17ed982c2d65b480bd975fc41086a5a2f9c924ef8fc54419d1dea3"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ccc13afee44b9006a73d2046068d4df96dc5b333bf3509d9a06d1b42db6d8bf"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:439a0de139556745ae53f9cc9668c6c2053444af940d3ef3ecad95b079bc9987"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d63b7545d489422d417a0cae6f9898618669608750fc5e62156957e609e728a5"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b44c42edc07a50a081672e25dfe6022554b47f91e793066a7b601ca290f71e42"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1c721bfc575d57305dd922e6a40a8fe3f762905851d694245807a351ad255c58"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5e4a2cf8c4543f37f5dc881de6c190de08096c53986381daebb56a355be5dfe6"}, - {file = "pydantic_core-2.6.3-cp37-none-win32.whl", hash = "sha256:d9b4916b21931b08096efed090327f8fe78e09ae8f5ad44e07f5c72a7eedb51b"}, - {file = "pydantic_core-2.6.3-cp37-none-win_amd64.whl", hash = "sha256:a8acc9dedd304da161eb071cc7ff1326aa5b66aadec9622b2574ad3ffe225525"}, - {file = "pydantic_core-2.6.3-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:5e9c068f36b9f396399d43bfb6defd4cc99c36215f6ff33ac8b9c14ba15bdf6b"}, - {file = "pydantic_core-2.6.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e61eae9b31799c32c5f9b7be906be3380e699e74b2db26c227c50a5fc7988698"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85463560c67fc65cd86153a4975d0b720b6d7725cf7ee0b2d291288433fc21b"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9616567800bdc83ce136e5847d41008a1d602213d024207b0ff6cab6753fe645"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e9b65a55bbabda7fccd3500192a79f6e474d8d36e78d1685496aad5f9dbd92c"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f468d520f47807d1eb5d27648393519655eadc578d5dd862d06873cce04c4d1b"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9680dd23055dd874173a3a63a44e7f5a13885a4cfd7e84814be71be24fba83db"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a718d56c4d55efcfc63f680f207c9f19c8376e5a8a67773535e6f7e80e93170"}, - {file = "pydantic_core-2.6.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8ecbac050856eb6c3046dea655b39216597e373aa8e50e134c0e202f9c47efec"}, - {file = "pydantic_core-2.6.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:788be9844a6e5c4612b74512a76b2153f1877cd845410d756841f6c3420230eb"}, - {file = "pydantic_core-2.6.3-cp38-none-win32.whl", hash = "sha256:07a1aec07333bf5adebd8264047d3dc518563d92aca6f2f5b36f505132399efc"}, - {file = "pydantic_core-2.6.3-cp38-none-win_amd64.whl", hash = "sha256:621afe25cc2b3c4ba05fff53525156d5100eb35c6e5a7cf31d66cc9e1963e378"}, - {file = "pydantic_core-2.6.3-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:813aab5bfb19c98ae370952b6f7190f1e28e565909bfc219a0909db168783465"}, - {file = "pydantic_core-2.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:50555ba3cb58f9861b7a48c493636b996a617db1a72c18da4d7f16d7b1b9952b"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19e20f8baedd7d987bd3f8005c146e6bcbda7cdeefc36fad50c66adb2dd2da48"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b0a5d7edb76c1c57b95df719af703e796fc8e796447a1da939f97bfa8a918d60"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f06e21ad0b504658a3a9edd3d8530e8cea5723f6ea5d280e8db8efc625b47e49"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea053cefa008fda40f92aab937fb9f183cf8752e41dbc7bc68917884454c6362"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:171a4718860790f66d6c2eda1d95dd1edf64f864d2e9f9115840840cf5b5713f"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ed7ceca6aba5331ece96c0e328cd52f0dcf942b8895a1ed2642de50800b79d3"}, - {file = "pydantic_core-2.6.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:acafc4368b289a9f291e204d2c4c75908557d4f36bd3ae937914d4529bf62a76"}, - {file = "pydantic_core-2.6.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1aa712ba150d5105814e53cb141412217146fedc22621e9acff9236d77d2a5ef"}, - {file = "pydantic_core-2.6.3-cp39-none-win32.whl", hash = "sha256:44b4f937b992394a2e81a5c5ce716f3dcc1237281e81b80c748b2da6dd5cf29a"}, - {file = "pydantic_core-2.6.3-cp39-none-win_amd64.whl", hash = "sha256:9b33bf9658cb29ac1a517c11e865112316d09687d767d7a0e4a63d5c640d1b17"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d7050899026e708fb185e174c63ebc2c4ee7a0c17b0a96ebc50e1f76a231c057"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99faba727727b2e59129c59542284efebbddade4f0ae6a29c8b8d3e1f437beb7"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fa159b902d22b283b680ef52b532b29554ea2a7fc39bf354064751369e9dbd7"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:046af9cfb5384f3684eeb3f58a48698ddab8dd870b4b3f67f825353a14441418"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:930bfe73e665ebce3f0da2c6d64455098aaa67e1a00323c74dc752627879fc67"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:85cc4d105747d2aa3c5cf3e37dac50141bff779545ba59a095f4a96b0a460e70"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b25afe9d5c4f60dcbbe2b277a79be114e2e65a16598db8abee2a2dcde24f162b"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e49ce7dc9f925e1fb010fc3d555250139df61fa6e5a0a95ce356329602c11ea9"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:2dd50d6a1aef0426a1d0199190c6c43ec89812b1f409e7fe44cb0fbf6dfa733c"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6595b0d8c8711e8e1dc389d52648b923b809f68ac1c6f0baa525c6440aa0daa"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ef724a059396751aef71e847178d66ad7fc3fc969a1a40c29f5aac1aa5f8784"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3c8945a105f1589ce8a693753b908815e0748f6279959a4530f6742e1994dcb6"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c8c6660089a25d45333cb9db56bb9e347241a6d7509838dbbd1931d0e19dbc7f"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:692b4ff5c4e828a38716cfa92667661a39886e71136c97b7dac26edef18767f7"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:f1a5d8f18877474c80b7711d870db0eeef9442691fcdb00adabfc97e183ee0b0"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:3796a6152c545339d3b1652183e786df648ecdf7c4f9347e1d30e6750907f5bb"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b962700962f6e7a6bd77e5f37320cabac24b4c0f76afeac05e9f93cf0c620014"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ea80269077003eaa59723bac1d8bacd2cd15ae30456f2890811efc1e3d4413"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c0ebbebae71ed1e385f7dfd9b74c1cff09fed24a6df43d326dd7f12339ec34"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:252851b38bad3bfda47b104ffd077d4f9604a10cb06fe09d020016a25107bf98"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:6656a0ae383d8cd7cc94e91de4e526407b3726049ce8d7939049cbfa426518c8"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d9140ded382a5b04a1c030b593ed9bf3088243a0a8b7fa9f071a5736498c5483"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d38bbcef58220f9c81e42c255ef0bf99735d8f11edef69ab0b499da77105158a"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:c9d469204abcca28926cbc28ce98f28e50e488767b084fb3fbdf21af11d3de26"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:48c1ed8b02ffea4d5c9c220eda27af02b8149fe58526359b3c07eb391cb353a2"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b2b1bfed698fa410ab81982f681f5b1996d3d994ae8073286515ac4d165c2e7"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf9d42a71a4d7a7c1f14f629e5c30eac451a6fc81827d2beefd57d014c006c4a"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4292ca56751aebbe63a84bbfc3b5717abb09b14d4b4442cc43fd7c49a1529efd"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7dc2ce039c7290b4ef64334ec7e6ca6494de6eecc81e21cb4f73b9b39991408c"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:615a31b1629e12445c0e9fc8339b41aaa6cc60bd53bf802d5fe3d2c0cda2ae8d"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1fa1f6312fb84e8c281f32b39affe81984ccd484da6e9d65b3d18c202c666149"}, - {file = "pydantic_core-2.6.3.tar.gz", hash = "sha256:1508f37ba9e3ddc0189e6ff4e2228bd2d3c3a4641cbe8c07177162f76ed696c7"}, + {file = "pydantic_core-2.10.1-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:d64728ee14e667ba27c66314b7d880b8eeb050e58ffc5fec3b7a109f8cddbd63"}, + {file = "pydantic_core-2.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:48525933fea744a3e7464c19bfede85df4aba79ce90c60b94d8b6e1eddd67096"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef337945bbd76cce390d1b2496ccf9f90b1c1242a3a7bc242ca4a9fc5993427a"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1392e0638af203cee360495fd2cfdd6054711f2db5175b6e9c3c461b76f5175"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0675ba5d22de54d07bccde38997e780044dcfa9a71aac9fd7d4d7a1d2e3e65f7"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:128552af70a64660f21cb0eb4876cbdadf1a1f9d5de820fed6421fa8de07c893"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f6e6aed5818c264412ac0598b581a002a9f050cb2637a84979859e70197aa9e"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ecaac27da855b8d73f92123e5f03612b04c5632fd0a476e469dfc47cd37d6b2e"}, + {file = "pydantic_core-2.10.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b3c01c2fb081fced3bbb3da78510693dc7121bb893a1f0f5f4b48013201f362e"}, + {file = "pydantic_core-2.10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:92f675fefa977625105708492850bcbc1182bfc3e997f8eecb866d1927c98ae6"}, + {file = "pydantic_core-2.10.1-cp310-none-win32.whl", hash = "sha256:420a692b547736a8d8703c39ea935ab5d8f0d2573f8f123b0a294e49a73f214b"}, + {file = "pydantic_core-2.10.1-cp310-none-win_amd64.whl", hash = "sha256:0880e239827b4b5b3e2ce05e6b766a7414e5f5aedc4523be6b68cfbc7f61c5d0"}, + {file = "pydantic_core-2.10.1-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:073d4a470b195d2b2245d0343569aac7e979d3a0dcce6c7d2af6d8a920ad0bea"}, + {file = "pydantic_core-2.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:600d04a7b342363058b9190d4e929a8e2e715c5682a70cc37d5ded1e0dd370b4"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39215d809470f4c8d1881758575b2abfb80174a9e8daf8f33b1d4379357e417c"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eeb3d3d6b399ffe55f9a04e09e635554012f1980696d6b0aca3e6cf42a17a03b"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a7a7902bf75779bc12ccfc508bfb7a4c47063f748ea3de87135d433a4cca7a2f"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3625578b6010c65964d177626fde80cf60d7f2e297d56b925cb5cdeda6e9925a"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:caa48fc31fc7243e50188197b5f0c4228956f97b954f76da157aae7f67269ae8"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:07ec6d7d929ae9c68f716195ce15e745b3e8fa122fc67698ac6498d802ed0fa4"}, + {file = "pydantic_core-2.10.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e6f31a17acede6a8cd1ae2d123ce04d8cca74056c9d456075f4f6f85de055607"}, + {file = "pydantic_core-2.10.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d8f1ebca515a03e5654f88411420fea6380fc841d1bea08effb28184e3d4899f"}, + {file = "pydantic_core-2.10.1-cp311-none-win32.whl", hash = "sha256:6db2eb9654a85ada248afa5a6db5ff1cf0f7b16043a6b070adc4a5be68c716d6"}, + {file = "pydantic_core-2.10.1-cp311-none-win_amd64.whl", hash = "sha256:4a5be350f922430997f240d25f8219f93b0c81e15f7b30b868b2fddfc2d05f27"}, + {file = "pydantic_core-2.10.1-cp311-none-win_arm64.whl", hash = "sha256:5fdb39f67c779b183b0c853cd6b45f7db84b84e0571b3ef1c89cdb1dfc367325"}, + {file = "pydantic_core-2.10.1-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:b1f22a9ab44de5f082216270552aa54259db20189e68fc12484873d926426921"}, + {file = "pydantic_core-2.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8572cadbf4cfa95fb4187775b5ade2eaa93511f07947b38f4cd67cf10783b118"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db9a28c063c7c00844ae42a80203eb6d2d6bbb97070cfa00194dff40e6f545ab"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0e2a35baa428181cb2270a15864ec6286822d3576f2ed0f4cd7f0c1708472aff"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05560ab976012bf40f25d5225a58bfa649bb897b87192a36c6fef1ab132540d7"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6495008733c7521a89422d7a68efa0a0122c99a5861f06020ef5b1f51f9ba7c"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ac492c686defc8e6133e3a2d9eaf5261b3df26b8ae97450c1647286750b901"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8282bab177a9a3081fd3d0a0175a07a1e2bfb7fcbbd949519ea0980f8a07144d"}, + {file = "pydantic_core-2.10.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:aafdb89fdeb5fe165043896817eccd6434aee124d5ee9b354f92cd574ba5e78f"}, + {file = "pydantic_core-2.10.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f6defd966ca3b187ec6c366604e9296f585021d922e666b99c47e78738b5666c"}, + {file = "pydantic_core-2.10.1-cp312-none-win32.whl", hash = "sha256:7c4d1894fe112b0864c1fa75dffa045720a194b227bed12f4be7f6045b25209f"}, + {file = "pydantic_core-2.10.1-cp312-none-win_amd64.whl", hash = "sha256:5994985da903d0b8a08e4935c46ed8daf5be1cf217489e673910951dc533d430"}, + {file = "pydantic_core-2.10.1-cp312-none-win_arm64.whl", hash = "sha256:0d8a8adef23d86d8eceed3e32e9cca8879c7481c183f84ed1a8edc7df073af94"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:9badf8d45171d92387410b04639d73811b785b5161ecadabf056ea14d62d4ede"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:ebedb45b9feb7258fac0a268a3f6bec0a2ea4d9558f3d6f813f02ff3a6dc6698"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfe1090245c078720d250d19cb05d67e21a9cd7c257698ef139bc41cf6c27b4f"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e357571bb0efd65fd55f18db0a2fb0ed89d0bb1d41d906b138f088933ae618bb"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b3dcd587b69bbf54fc04ca157c2323b8911033e827fffaecf0cafa5a892a0904"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c120c9ce3b163b985a3b966bb701114beb1da4b0468b9b236fc754783d85aa3"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15d6bca84ffc966cc9976b09a18cf9543ed4d4ecbd97e7086f9ce9327ea48891"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5cabb9710f09d5d2e9e2748c3e3e20d991a4c5f96ed8f1132518f54ab2967221"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:82f55187a5bebae7d81d35b1e9aaea5e169d44819789837cdd4720d768c55d15"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1d40f55222b233e98e3921df7811c27567f0e1a4411b93d4c5c0f4ce131bc42f"}, + {file = "pydantic_core-2.10.1-cp37-none-win32.whl", hash = "sha256:14e09ff0b8fe6e46b93d36a878f6e4a3a98ba5303c76bb8e716f4878a3bee92c"}, + {file = "pydantic_core-2.10.1-cp37-none-win_amd64.whl", hash = "sha256:1396e81b83516b9d5c9e26a924fa69164156c148c717131f54f586485ac3c15e"}, + {file = "pydantic_core-2.10.1-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6835451b57c1b467b95ffb03a38bb75b52fb4dc2762bb1d9dbed8de31ea7d0fc"}, + {file = "pydantic_core-2.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b00bc4619f60c853556b35f83731bd817f989cba3e97dc792bb8c97941b8053a"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fa467fd300a6f046bdb248d40cd015b21b7576c168a6bb20aa22e595c8ffcdd"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d99277877daf2efe074eae6338453a4ed54a2d93fb4678ddfe1209a0c93a2468"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa7db7558607afeccb33c0e4bf1c9a9a835e26599e76af6fe2fcea45904083a6"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aad7bd686363d1ce4ee930ad39f14e1673248373f4a9d74d2b9554f06199fb58"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:443fed67d33aa85357464f297e3d26e570267d1af6fef1c21ca50921d2976302"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:042462d8d6ba707fd3ce9649e7bf268633a41018d6a998fb5fbacb7e928a183e"}, + {file = "pydantic_core-2.10.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ecdbde46235f3d560b18be0cb706c8e8ad1b965e5c13bbba7450c86064e96561"}, + {file = "pydantic_core-2.10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ed550ed05540c03f0e69e6d74ad58d026de61b9eaebebbaaf8873e585cbb18de"}, + {file = "pydantic_core-2.10.1-cp38-none-win32.whl", hash = "sha256:8cdbbd92154db2fec4ec973d45c565e767ddc20aa6dbaf50142676484cbff8ee"}, + {file = "pydantic_core-2.10.1-cp38-none-win_amd64.whl", hash = "sha256:9f6f3e2598604956480f6c8aa24a3384dbf6509fe995d97f6ca6103bb8c2534e"}, + {file = "pydantic_core-2.10.1-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:655f8f4c8d6a5963c9a0687793da37b9b681d9ad06f29438a3b2326d4e6b7970"}, + {file = "pydantic_core-2.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e570ffeb2170e116a5b17e83f19911020ac79d19c96f320cbfa1fa96b470185b"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64322bfa13e44c6c30c518729ef08fda6026b96d5c0be724b3c4ae4da939f875"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:485a91abe3a07c3a8d1e082ba29254eea3e2bb13cbbd4351ea4e5a21912cc9b0"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7c2b8eb9fc872e68b46eeaf835e86bccc3a58ba57d0eedc109cbb14177be531"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a5cb87bdc2e5f620693148b5f8f842d293cae46c5f15a1b1bf7ceeed324a740c"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25bd966103890ccfa028841a8f30cebcf5875eeac8c4bde4fe221364c92f0c9a"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f323306d0556351735b54acbf82904fe30a27b6a7147153cbe6e19aaaa2aa429"}, + {file = "pydantic_core-2.10.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0c27f38dc4fbf07b358b2bc90edf35e82d1703e22ff2efa4af4ad5de1b3833e7"}, + {file = "pydantic_core-2.10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f1365e032a477c1430cfe0cf2856679529a2331426f8081172c4a74186f1d595"}, + {file = "pydantic_core-2.10.1-cp39-none-win32.whl", hash = "sha256:a1c311fd06ab3b10805abb72109f01a134019739bd3286b8ae1bc2fc4e50c07a"}, + {file = "pydantic_core-2.10.1-cp39-none-win_amd64.whl", hash = "sha256:ae8a8843b11dc0b03b57b52793e391f0122e740de3df1474814c700d2622950a"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d43002441932f9a9ea5d6f9efaa2e21458221a3a4b417a14027a1d530201ef1b"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fcb83175cc4936a5425dde3356f079ae03c0802bbdf8ff82c035f8a54b333521"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:962ed72424bf1f72334e2f1e61b68f16c0e596f024ca7ac5daf229f7c26e4208"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2cf5bb4dd67f20f3bbc1209ef572a259027c49e5ff694fa56bed62959b41e1f9"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e544246b859f17373bed915182ab841b80849ed9cf23f1f07b73b7c58baee5fb"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c0877239307b7e69d025b73774e88e86ce82f6ba6adf98f41069d5b0b78bd1bf"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:53df009d1e1ba40f696f8995683e067e3967101d4bb4ea6f667931b7d4a01357"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a1254357f7e4c82e77c348dabf2d55f1d14d19d91ff025004775e70a6ef40ada"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:524ff0ca3baea164d6d93a32c58ac79eca9f6cf713586fdc0adb66a8cdeab96a"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f0ac9fb8608dbc6eaf17956bf623c9119b4db7dbb511650910a82e261e6600f"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:320f14bd4542a04ab23747ff2c8a778bde727158b606e2661349557f0770711e"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:63974d168b6233b4ed6a0046296803cb13c56637a7b8106564ab575926572a55"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:417243bf599ba1f1fef2bb8c543ceb918676954734e2dcb82bf162ae9d7bd514"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dda81e5ec82485155a19d9624cfcca9be88a405e2857354e5b089c2a982144b2"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:14cfbb00959259e15d684505263d5a21732b31248a5dd4941f73a3be233865b9"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:631cb7415225954fdcc2a024119101946793e5923f6c4d73a5914d27eb3d3a05"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:bec7dd208a4182e99c5b6c501ce0b1f49de2802448d4056091f8e630b28e9a52"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:149b8a07712f45b332faee1a2258d8ef1fb4a36f88c0c17cb687f205c5dc6e7d"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d966c47f9dd73c2d32a809d2be529112d509321c5310ebf54076812e6ecd884"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7eb037106f5c6b3b0b864ad226b0b7ab58157124161d48e4b30c4a43fef8bc4b"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:154ea7c52e32dce13065dbb20a4a6f0cc012b4f667ac90d648d36b12007fa9f7"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e562617a45b5a9da5be4abe72b971d4f00bf8555eb29bb91ec2ef2be348cd132"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:f23b55eb5464468f9e0e9a9935ce3ed2a870608d5f534025cd5536bca25b1402"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:e9121b4009339b0f751955baf4543a0bfd6bc3f8188f8056b1a25a2d45099934"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:0523aeb76e03f753b58be33b26540880bac5aa54422e4462404c432230543f33"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e0e2959ef5d5b8dc9ef21e1a305a21a36e254e6a34432d00c72a92fdc5ecda5"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da01bec0a26befab4898ed83b362993c844b9a607a86add78604186297eb047e"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2e9072d71c1f6cfc79a36d4484c82823c560e6f5599c43c1ca6b5cdbd54f881"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f36a3489d9e28fe4b67be9992a23029c3cec0babc3bd9afb39f49844a8c721c5"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f64f82cc3443149292b32387086d02a6c7fb39b8781563e0ca7b8d7d9cf72bd7"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b4a6db486ac8e99ae696e09efc8b2b9fea67b63c8f88ba7a1a16c24a057a0776"}, + {file = "pydantic_core-2.10.1.tar.gz", hash = "sha256:0f8682dbdd2f67f8e1edddcbffcc29f60a6182b4901c367fc8c1c40d30bb0a82"}, ] [package.dependencies] @@ -1509,17 +1550,17 @@ python-dotenv = ">=0.21.0" [[package]] name = "pylint" -version = "2.17.5" +version = "2.17.7" description = "python code static checker" optional = false python-versions = ">=3.7.2" files = [ - {file = "pylint-2.17.5-py3-none-any.whl", hash = "sha256:73995fb8216d3bed149c8d51bba25b2c52a8251a2c8ac846ec668ce38fab5413"}, - {file = "pylint-2.17.5.tar.gz", hash = "sha256:f7b601cbc06fef7e62a754e2b41294c2aa31f1cb659624b9a85bcba29eaf8252"}, + {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, + {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, ] [package.dependencies] -astroid = ">=2.15.6,<=2.17.0-dev0" +astroid = ">=2.15.8,<=2.17.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ {version = ">=0.2", markers = "python_version < \"3.11\""}, @@ -1538,13 +1579,13 @@ testutils = ["gitpython (>3)"] [[package]] name = "pytest" -version = "7.4.0" +version = "7.4.3" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"}, - {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"}, + {file = "pytest-7.4.3-py3-none-any.whl", hash = "sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac"}, + {file = "pytest-7.4.3.tar.gz", hash = "sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5"}, ] [package.dependencies] @@ -1625,6 +1666,21 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] +[[package]] +name = "retry" +version = "0.9.2" +description = "Easy to use retry decorator." +optional = false +python-versions = "*" +files = [ + {file = "retry-0.9.2-py2.py3-none-any.whl", hash = "sha256:ccddf89761fa2c726ab29391837d4327f819ea14d244c232a1d24c67a2f98606"}, + {file = "retry-0.9.2.tar.gz", hash = "sha256:f8bfa8b99b69c4506d6f5bd3b0aabf77f98cdb17f3c9fc3f5ca820033336fba4"}, +] + +[package.dependencies] +decorator = ">=3.4.2" +py = ">=1.4.26,<2.0.0" + [[package]] name = "rfc3986" version = "1.5.0" @@ -1644,19 +1700,19 @@ idna2008 = ["idna"] [[package]] name = "setuptools" -version = "68.1.2" +version = "68.2.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-68.1.2-py3-none-any.whl", hash = "sha256:3d8083eed2d13afc9426f227b24fd1659489ec107c0e86cec2ffdde5c92e790b"}, - {file = "setuptools-68.1.2.tar.gz", hash = "sha256:3d4dfa6d95f1b101d695a6160a7626e15583af71a5f52176efa5d39a054d475d"}, + {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, + {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5,<=7.1.2)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -1682,52 +1738,60 @@ files = [ [[package]] name = "sqlalchemy" -version = "2.0.20" +version = "2.0.23" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.20-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:759b51346aa388c2e606ee206c0bc6f15a5299f6174d1e10cadbe4530d3c7a98"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1506e988ebeaaf316f183da601f24eedd7452e163010ea63dbe52dc91c7fc70e"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5768c268df78bacbde166b48be788b83dddaa2a5974b8810af422ddfe68a9bc8"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3f0dd6d15b6dc8b28a838a5c48ced7455c3e1fb47b89da9c79cc2090b072a50"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:243d0fb261f80a26774829bc2cee71df3222587ac789b7eaf6555c5b15651eed"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6eb6d77c31e1bf4268b4d61b549c341cbff9842f8e115ba6904249c20cb78a61"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-win32.whl", hash = "sha256:bcb04441f370cbe6e37c2b8d79e4af9e4789f626c595899d94abebe8b38f9a4d"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-win_amd64.whl", hash = "sha256:d32b5ffef6c5bcb452723a496bad2d4c52b346240c59b3e6dba279f6dcc06c14"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dd81466bdbc82b060c3c110b2937ab65ace41dfa7b18681fdfad2f37f27acdd7"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6fe7d61dc71119e21ddb0094ee994418c12f68c61b3d263ebaae50ea8399c4d4"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4e571af672e1bb710b3cc1a9794b55bce1eae5aed41a608c0401885e3491179"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3364b7066b3c7f4437dd345d47271f1251e0cfb0aba67e785343cdbdb0fff08c"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1be86ccea0c965a1e8cd6ccf6884b924c319fcc85765f16c69f1ae7148eba64b"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1d35d49a972649b5080557c603110620a86aa11db350d7a7cb0f0a3f611948a0"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-win32.whl", hash = "sha256:27d554ef5d12501898d88d255c54eef8414576f34672e02fe96d75908993cf53"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-win_amd64.whl", hash = "sha256:411e7f140200c02c4b953b3dbd08351c9f9818d2bd591b56d0fa0716bd014f1e"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3c6aceebbc47db04f2d779db03afeaa2c73ea3f8dcd3987eb9efdb987ffa09a3"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d3f175410a6db0ad96b10bfbb0a5530ecd4fcf1e2b5d83d968dd64791f810ed"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea8186be85da6587456c9ddc7bf480ebad1a0e6dcbad3967c4821233a4d4df57"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c3d99ba99007dab8233f635c32b5cd24fb1df8d64e17bc7df136cedbea427897"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:76fdfc0f6f5341987474ff48e7a66c3cd2b8a71ddda01fa82fedb180b961630a"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-win32.whl", hash = "sha256:d3793dcf5bc4d74ae1e9db15121250c2da476e1af8e45a1d9a52b1513a393459"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-win_amd64.whl", hash = "sha256:79fde625a0a55220d3624e64101ed68a059c1c1f126c74f08a42097a72ff66a9"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:599ccd23a7146e126be1c7632d1d47847fa9f333104d03325c4e15440fc7d927"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1a58052b5a93425f656675673ef1f7e005a3b72e3f2c91b8acca1b27ccadf5f4"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79543f945be7a5ada9943d555cf9b1531cfea49241809dd1183701f94a748624"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63e73da7fb030ae0a46a9ffbeef7e892f5def4baf8064786d040d45c1d6d1dc5"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3ce5e81b800a8afc870bb8e0a275d81957e16f8c4b62415a7b386f29a0cb9763"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb0d3e94c2a84215532d9bcf10229476ffd3b08f481c53754113b794afb62d14"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-win32.whl", hash = "sha256:8dd77fd6648b677d7742d2c3cc105a66e2681cc5e5fb247b88c7a7b78351cf74"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-win_amd64.whl", hash = "sha256:6f8a934f9dfdf762c844e5164046a9cea25fabbc9ec865c023fe7f300f11ca4a"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:26a3399eaf65e9ab2690c07bd5cf898b639e76903e0abad096cd609233ce5208"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4cde2e1096cbb3e62002efdb7050113aa5f01718035ba9f29f9d89c3758e7e4e"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b09ba72e4e6d341bb5bdd3564f1cea6095d4c3632e45dc69375a1dbe4e26ec"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b74eeafaa11372627ce94e4dc88a6751b2b4d263015b3523e2b1e57291102f0"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:77d37c1b4e64c926fa3de23e8244b964aab92963d0f74d98cbc0783a9e04f501"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:eefebcc5c555803065128401a1e224a64607259b5eb907021bf9b175f315d2a6"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-win32.whl", hash = "sha256:3423dc2a3b94125094897118b52bdf4d37daf142cbcf26d48af284b763ab90e9"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-win_amd64.whl", hash = "sha256:5ed61e3463021763b853628aef8bc5d469fe12d95f82c74ef605049d810f3267"}, - {file = "SQLAlchemy-2.0.20-py3-none-any.whl", hash = "sha256:63a368231c53c93e2b67d0c5556a9836fdcd383f7e3026a39602aad775b14acf"}, - {file = "SQLAlchemy-2.0.20.tar.gz", hash = "sha256:ca8a5ff2aa7f3ade6c498aaafce25b1eaeabe4e42b73e25519183e4566a16fc6"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:638c2c0b6b4661a4fd264f6fb804eccd392745c5887f9317feb64bb7cb03b3ea"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3b5036aa326dc2df50cba3c958e29b291a80f604b1afa4c8ce73e78e1c9f01d"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:787af80107fb691934a01889ca8f82a44adedbf5ef3d6ad7d0f0b9ac557e0c34"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c14eba45983d2f48f7546bb32b47937ee2cafae353646295f0e99f35b14286ab"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0666031df46b9badba9bed00092a1ffa3aa063a5e68fa244acd9f08070e936d3"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:89a01238fcb9a8af118eaad3ffcc5dedaacbd429dc6fdc43fe430d3a941ff965"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-win32.whl", hash = "sha256:cabafc7837b6cec61c0e1e5c6d14ef250b675fa9c3060ed8a7e38653bd732ff8"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-win_amd64.whl", hash = "sha256:87a3d6b53c39cd173990de2f5f4b83431d534a74f0e2f88bd16eabb5667e65c6"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d5578e6863eeb998980c212a39106ea139bdc0b3f73291b96e27c929c90cd8e1"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:62d9e964870ea5ade4bc870ac4004c456efe75fb50404c03c5fd61f8bc669a72"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c80c38bd2ea35b97cbf7c21aeb129dcbebbf344ee01a7141016ab7b851464f8e"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75eefe09e98043cff2fb8af9796e20747ae870c903dc61d41b0c2e55128f958d"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd45a5b6c68357578263d74daab6ff9439517f87da63442d244f9f23df56138d"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a86cb7063e2c9fb8e774f77fbf8475516d270a3e989da55fa05d08089d77f8c4"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-win32.whl", hash = "sha256:b41f5d65b54cdf4934ecede2f41b9c60c9f785620416e8e6c48349ab18643855"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-win_amd64.whl", hash = "sha256:9ca922f305d67605668e93991aaf2c12239c78207bca3b891cd51a4515c72e22"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d0f7fb0c7527c41fa6fcae2be537ac137f636a41b4c5a4c58914541e2f436b45"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7c424983ab447dab126c39d3ce3be5bee95700783204a72549c3dceffe0fc8f4"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f508ba8f89e0a5ecdfd3761f82dda2a3d7b678a626967608f4273e0dba8f07ac"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6463aa765cf02b9247e38b35853923edbf2f6fd1963df88706bc1d02410a5577"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e599a51acf3cc4d31d1a0cf248d8f8d863b6386d2b6782c5074427ebb7803bda"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fd54601ef9cc455a0c61e5245f690c8a3ad67ddb03d3b91c361d076def0b4c60"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-win32.whl", hash = "sha256:42d0b0290a8fb0165ea2c2781ae66e95cca6e27a2fbe1016ff8db3112ac1e846"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-win_amd64.whl", hash = "sha256:227135ef1e48165f37590b8bfc44ed7ff4c074bf04dc8d6f8e7f1c14a94aa6ca"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:14aebfe28b99f24f8a4c1346c48bc3d63705b1f919a24c27471136d2f219f02d"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e983fa42164577d073778d06d2cc5d020322425a509a08119bdcee70ad856bf"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e0dc9031baa46ad0dd5a269cb7a92a73284d1309228be1d5935dac8fb3cae24"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5f94aeb99f43729960638e7468d4688f6efccb837a858b34574e01143cf11f89"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:63bfc3acc970776036f6d1d0e65faa7473be9f3135d37a463c5eba5efcdb24c8"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-win32.whl", hash = "sha256:f48ed89dd11c3c586f45e9eec1e437b355b3b6f6884ea4a4c3111a3358fd0c18"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-win_amd64.whl", hash = "sha256:1e018aba8363adb0599e745af245306cb8c46b9ad0a6fc0a86745b6ff7d940fc"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:64ac935a90bc479fee77f9463f298943b0e60005fe5de2aa654d9cdef46c54df"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c4722f3bc3c1c2fcc3702dbe0016ba31148dd6efcd2a2fd33c1b4897c6a19693"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4af79c06825e2836de21439cb2a6ce22b2ca129bad74f359bddd173f39582bf5"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:683ef58ca8eea4747737a1c35c11372ffeb84578d3aab8f3e10b1d13d66f2bc4"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d4041ad05b35f1f4da481f6b811b4af2f29e83af253bf37c3c4582b2c68934ab"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aeb397de65a0a62f14c257f36a726945a7f7bb60253462e8602d9b97b5cbe204"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-win32.whl", hash = "sha256:42ede90148b73fe4ab4a089f3126b2cfae8cfefc955c8174d697bb46210c8306"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-win_amd64.whl", hash = "sha256:964971b52daab357d2c0875825e36584d58f536e920f2968df8d581054eada4b"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:616fe7bcff0a05098f64b4478b78ec2dfa03225c23734d83d6c169eb41a93e55"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0e680527245895aba86afbd5bef6c316831c02aa988d1aad83c47ffe92655e74"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9585b646ffb048c0250acc7dad92536591ffe35dba624bb8fd9b471e25212a35"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4895a63e2c271ffc7a81ea424b94060f7b3b03b4ea0cd58ab5bb676ed02f4221"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:cc1d21576f958c42d9aec68eba5c1a7d715e5fc07825a629015fe8e3b0657fb0"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:967c0b71156f793e6662dd839da54f884631755275ed71f1539c95bbada9aaab"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-win32.whl", hash = "sha256:0a8c6aa506893e25a04233bc721c6b6cf844bafd7250535abb56cb6cc1368884"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-win_amd64.whl", hash = "sha256:f3420d00d2cb42432c1d0e44540ae83185ccbbc67a6054dcc8ab5387add6620b"}, + {file = "SQLAlchemy-2.0.23-py3-none-any.whl", hash = "sha256:31952bbc527d633b9479f5f81e8b9dfada00b91d6baba021a869095f1a97006d"}, + {file = "SQLAlchemy-2.0.23.tar.gz", hash = "sha256:c1bda93cbbe4aa2aa0aa8655c5aeda505cd219ff3e8da91d1d329e143e4aff69"}, ] [package.dependencies] @@ -1736,6 +1800,7 @@ typing-extensions = ">=4.2.0" [package.extras] aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"] +aioodbc = ["aioodbc", "greenlet (!=0.4.17)"] aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"] asyncio = ["greenlet (!=0.4.17)"] asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] @@ -1746,7 +1811,7 @@ mssql-pyodbc = ["pyodbc"] mypy = ["mypy (>=0.910)"] mysql = ["mysqlclient (>=1.4.0)"] mysql-connector = ["mysql-connector-python"] -oracle = ["cx-oracle (>=7)"] +oracle = ["cx-oracle (>=8)"] oracle-oracledb = ["oracledb (>=1.0.1)"] postgresql = ["psycopg2 (>=2.7)"] postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] @@ -1789,24 +1854,24 @@ files = [ [[package]] name = "tomlkit" -version = "0.12.1" +version = "0.12.2" description = "Style preserving TOML library" optional = false python-versions = ">=3.7" files = [ - {file = "tomlkit-0.12.1-py3-none-any.whl", hash = "sha256:712cbd236609acc6a3e2e97253dfc52d4c2082982a88f61b640ecf0817eab899"}, - {file = "tomlkit-0.12.1.tar.gz", hash = "sha256:38e1ff8edb991273ec9f6181244a6a391ac30e9f5098e7535640ea6be97a7c86"}, + {file = "tomlkit-0.12.2-py3-none-any.whl", hash = "sha256:eeea7ac7563faeab0a1ed8fe12c2e5a51c61f933f2502f7e9db0241a65163ad0"}, + {file = "tomlkit-0.12.2.tar.gz", hash = "sha256:df32fab589a81f0d7dc525a4267b6d7a64ee99619cbd1eeb0fae32c1dd426977"}, ] [[package]] name = "typing-extensions" -version = "4.7.1" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.8.0" +description = "Backported and Experimental Type Hints for Python 3.8+" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, - {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, + {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, + {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, ] [[package]] @@ -1931,20 +1996,20 @@ files = [ [[package]] name = "zipp" -version = "3.16.2" +version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, - {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "57d63022956f3e4cf1d5afb92532d82f397f159c0c0fbdec9bed0505416ccea0" +content-hash = "368b363b028fe53ac732e478c2574dbd8dbfc1c4beb9fe743e9c2de7dba80c3f" diff --git a/mula/pyproject.toml b/mula/pyproject.toml index d5c6fff9343..673ad503645 100644 --- a/mula/pyproject.toml +++ b/mula/pyproject.toml @@ -17,9 +17,9 @@ pydantic = "^2.1.1" pydantic-settings= "^2.0.2" python-dotenv = "^1.0.0" requests = "^2.31.0" +retry = "^0.9.2" sqlalchemy = "^2.0.19" typing-extensions = "^4.5.0" -uvicorn = "^0.17.1" # OpenTelemetry opentelemetry-sdk = "^1.19.0" @@ -40,6 +40,7 @@ psutil = "^5.9.5" pytest = "^7.2.2" pytest-cov = "^4.0.0" httpx = "^0.23.3" +uvicorn = "^0.17.1" [build-system] requires = ["setuptools>=59", "wheel"] diff --git a/mula/requirements-dev.txt b/mula/requirements-dev.txt index cbe5efb69ee..5dd0d92cb9e 100644 --- a/mula/requirements-dev.txt +++ b/mula/requirements-dev.txt @@ -1,182 +1,196 @@ -alembic==1.11.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3db4ce81a9072e1b5aa44c2d202add24553182672a12daf21608d6f62a8f9cf9 \ - --hash=sha256:d6c96c2482740592777c400550a523bc7a9aada4e210cae2e733354ddae6f6f8 -annotated-types==0.5.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:47cdc3490d9ac1506ce92c7aaa76c579dc3509ff11e098fc867e5130ab7be802 \ - --hash=sha256:58da39888f92c276ad970249761ebea80ba544b77acddaa1a4d6cf78287d45fd -anyio==3.7.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780 \ - --hash=sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5 +alembic==1.12.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:47d52e3dfb03666ed945becb723d6482e52190917fdb47071440cfdba05d92cb \ + --hash=sha256:bca5877e9678b454706347bc10b97cb7d67f300320fa5c3a94423e8266e2823f +annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ + --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d +anyio==4.0.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f \ + --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed -astroid==2.15.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:389656ca57b6108f939cf5d2f9a2a825a3be50ba9d589670f393236e0a03b91c \ - --hash=sha256:903f024859b7c7687d7a7f3a3f73b17301f8e42dfd9cc9df9d4418172d3e2dbd +astroid==2.15.8 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c \ + --hash=sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a backoff==2.2.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -black==23.7.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:01ede61aac8c154b55f35301fac3e730baf0c9cf8120f65a9cd61a81cfb4a0c3 \ - --hash=sha256:022a582720b0d9480ed82576c920a8c1dde97cc38ff11d8d8859b3bd6ca9eedb \ - --hash=sha256:25cc308838fe71f7065df53aedd20327969d05671bac95b38fdf37ebe70ac087 \ - --hash=sha256:27eb7a0c71604d5de083757fbdb245b1a4fae60e9596514c6ec497eb63f95320 \ - --hash=sha256:327a8c2550ddc573b51e2c352adb88143464bb9d92c10416feb86b0f5aee5ff6 \ - --hash=sha256:47e56d83aad53ca140da0af87678fb38e44fd6bc0af71eebab2d1f59b1acf1d3 \ - --hash=sha256:501387a9edcb75d7ae8a4412bb8749900386eaef258f1aefab18adddea1936bc \ - --hash=sha256:552513d5cd5694590d7ef6f46e1767a4df9af168d449ff767b13b084c020e63f \ - --hash=sha256:5c4bc552ab52f6c1c506ccae05681fab58c3f72d59ae6e6639e8885e94fe2587 \ - --hash=sha256:642496b675095d423f9b8448243336f8ec71c9d4d57ec17bf795b67f08132a91 \ - --hash=sha256:6d1c6022b86f83b632d06f2b02774134def5d4d4f1dac8bef16d90cda18ba28a \ - --hash=sha256:7f3bf2dec7d541b4619b8ce526bda74a6b0bffc480a163fed32eb8b3c9aed8ad \ - --hash=sha256:831d8f54c3a8c8cf55f64d0422ee875eecac26f5f649fb6c1df65316b67c8926 \ - --hash=sha256:8417dbd2f57b5701492cd46edcecc4f9208dc75529bcf76c514864e48da867d9 \ - --hash=sha256:86cee259349b4448adb4ef9b204bb4467aae74a386bce85d56ba4f5dc0da27be \ - --hash=sha256:893695a76b140881531062d48476ebe4a48f5d1e9388177e175d76234ca247cd \ - --hash=sha256:9fd59d418c60c0348505f2ddf9609c1e1de8e7493eab96198fc89d9f865e7a96 \ - --hash=sha256:ad0014efc7acf0bd745792bd0d8857413652979200ab924fbf239062adc12491 \ - --hash=sha256:b5b0ee6d96b345a8b420100b7d71ebfdd19fab5e8301aff48ec270042cd40ac2 \ - --hash=sha256:c333286dc3ddca6fdff74670b911cccedacb4ef0a60b34e491b8a67c833b343a \ - --hash=sha256:f9062af71c59c004cd519e2fb8f5d25d39e46d3af011b41ab43b9c74e27e236f \ - --hash=sha256:fb074d8b213749fa1d077d630db0d5f8cc3b2ae63587ad4116e8a436e9bbe995 +black==23.11.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:250d7e60f323fcfc8ea6c800d5eba12f7967400eb6c2d21ae85ad31c204fb1f4 \ + --hash=sha256:2a9acad1451632021ee0d146c8765782a0c3846e0e0ea46659d7c4f89d9b212b \ + --hash=sha256:412f56bab20ac85927f3a959230331de5614aecda1ede14b373083f62ec24e6f \ + --hash=sha256:421f3e44aa67138ab1b9bfbc22ee3780b22fa5b291e4db8ab7eee95200726b07 \ + --hash=sha256:45aa1d4675964946e53ab81aeec7a37613c1cb71647b5394779e6efb79d6d187 \ + --hash=sha256:4c44b7211a3a0570cc097e81135faa5f261264f4dfaa22bd5ee2875a4e773bd6 \ + --hash=sha256:4c68855825ff432d197229846f971bc4d6666ce90492e5b02013bcaca4d9ab05 \ + --hash=sha256:5133f5507007ba08d8b7b263c7aa0f931af5ba88a29beacc4b2dc23fcefe9c06 \ + --hash=sha256:54caaa703227c6e0c87b76326d0862184729a69b73d3b7305b6288e1d830067e \ + --hash=sha256:58e5f4d08a205b11800332920e285bd25e1a75c54953e05502052738fe16b3b5 \ + --hash=sha256:698c1e0d5c43354ec5d6f4d914d0d553a9ada56c85415700b81dc90125aac244 \ + --hash=sha256:6c1cac07e64433f646a9a838cdc00c9768b3c362805afc3fce341af0e6a9ae9f \ + --hash=sha256:760415ccc20f9e8747084169110ef75d545f3b0932ee21368f63ac0fee86b221 \ + --hash=sha256:7f622b6822f02bfaf2a5cd31fdb7cd86fcf33dab6ced5185c35f5db98260b055 \ + --hash=sha256:cf57719e581cfd48c4efe28543fea3d139c6b6f1238b3f0102a9c73992cbb479 \ + --hash=sha256:d136ef5b418c81660ad847efe0e55c58c8208b77a57a28a503a5f345ccf01394 \ + --hash=sha256:dbea0bb8575c6b6303cc65017b46351dc5953eea5c0a59d7b7e3a2d2f433a911 \ + --hash=sha256:fc7f6a44d52747e65a02558e1d807c82df1d66ffa80a601862040a43ec2e3142 certifi==2023.7.22 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 \ --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9 -charset-normalizer==3.2.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96 \ - --hash=sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c \ - --hash=sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710 \ - --hash=sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706 \ - --hash=sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020 \ - --hash=sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252 \ - --hash=sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad \ - --hash=sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329 \ - --hash=sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a \ - --hash=sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f \ - --hash=sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6 \ - --hash=sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4 \ - --hash=sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a \ - --hash=sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46 \ - --hash=sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2 \ - --hash=sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23 \ - --hash=sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace \ - --hash=sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd \ - --hash=sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982 \ - --hash=sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10 \ - --hash=sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2 \ - --hash=sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea \ - --hash=sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09 \ - --hash=sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5 \ - --hash=sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149 \ - --hash=sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489 \ - --hash=sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9 \ - --hash=sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80 \ - --hash=sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592 \ - --hash=sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3 \ - --hash=sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6 \ - --hash=sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed \ - --hash=sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c \ - --hash=sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200 \ - --hash=sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a \ - --hash=sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e \ - --hash=sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d \ - --hash=sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6 \ - --hash=sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623 \ - --hash=sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669 \ - --hash=sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3 \ - --hash=sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa \ - --hash=sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9 \ - --hash=sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2 \ - --hash=sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f \ - --hash=sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1 \ - --hash=sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4 \ - --hash=sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a \ - --hash=sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8 \ - --hash=sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3 \ - --hash=sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029 \ - --hash=sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f \ - --hash=sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959 \ - --hash=sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22 \ - --hash=sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7 \ - --hash=sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952 \ - --hash=sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346 \ - --hash=sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e \ - --hash=sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d \ - --hash=sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299 \ - --hash=sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd \ - --hash=sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a \ - --hash=sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3 \ - --hash=sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037 \ - --hash=sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94 \ - --hash=sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c \ - --hash=sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858 \ - --hash=sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a \ - --hash=sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449 \ - --hash=sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c \ - --hash=sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918 \ - --hash=sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1 \ - --hash=sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c \ - --hash=sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac \ - --hash=sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa +charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ + --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ + --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ + --hash=sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8 \ + --hash=sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09 \ + --hash=sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185 \ + --hash=sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574 \ + --hash=sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e \ + --hash=sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519 \ + --hash=sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898 \ + --hash=sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269 \ + --hash=sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3 \ + --hash=sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f \ + --hash=sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6 \ + --hash=sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8 \ + --hash=sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a \ + --hash=sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73 \ + --hash=sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc \ + --hash=sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714 \ + --hash=sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2 \ + --hash=sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc \ + --hash=sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce \ + --hash=sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d \ + --hash=sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e \ + --hash=sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6 \ + --hash=sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269 \ + --hash=sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96 \ + --hash=sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d \ + --hash=sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a \ + --hash=sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4 \ + --hash=sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77 \ + --hash=sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d \ + --hash=sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0 \ + --hash=sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed \ + --hash=sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068 \ + --hash=sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac \ + --hash=sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25 \ + --hash=sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8 \ + --hash=sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab \ + --hash=sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26 \ + --hash=sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2 \ + --hash=sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db \ + --hash=sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f \ + --hash=sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5 \ + --hash=sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99 \ + --hash=sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c \ + --hash=sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d \ + --hash=sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811 \ + --hash=sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa \ + --hash=sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a \ + --hash=sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03 \ + --hash=sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b \ + --hash=sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04 \ + --hash=sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c \ + --hash=sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001 \ + --hash=sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458 \ + --hash=sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389 \ + --hash=sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99 \ + --hash=sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985 \ + --hash=sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537 \ + --hash=sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238 \ + --hash=sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f \ + --hash=sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d \ + --hash=sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796 \ + --hash=sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a \ + --hash=sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143 \ + --hash=sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8 \ + --hash=sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c \ + --hash=sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5 \ + --hash=sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5 \ + --hash=sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711 \ + --hash=sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4 \ + --hash=sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6 \ + --hash=sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c \ + --hash=sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7 \ + --hash=sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4 \ + --hash=sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b \ + --hash=sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae \ + --hash=sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12 \ + --hash=sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c \ + --hash=sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae \ + --hash=sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8 \ + --hash=sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887 \ + --hash=sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b \ + --hash=sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4 \ + --hash=sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f \ + --hash=sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5 \ + --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ + --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ + --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -coverage[toml]==7.3.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:07ea61bcb179f8f05ffd804d2732b09d23a1238642bf7e51dad62082b5019b34 \ - --hash=sha256:1084393c6bda8875c05e04fce5cfe1301a425f758eb012f010eab586f1f3905e \ - --hash=sha256:13c6cbbd5f31211d8fdb477f0f7b03438591bdd077054076eec362cf2207b4a7 \ - --hash=sha256:211a4576e984f96d9fce61766ffaed0115d5dab1419e4f63d6992b480c2bd60b \ - --hash=sha256:2d22172f938455c156e9af2612650f26cceea47dc86ca048fa4e0b2d21646ad3 \ - --hash=sha256:34f9f0763d5fa3035a315b69b428fe9c34d4fc2f615262d6be3d3bf3882fb985 \ - --hash=sha256:3558e5b574d62f9c46b76120a5c7c16c4612dc2644c3d48a9f4064a705eaee95 \ - --hash=sha256:36ce5d43a072a036f287029a55b5c6a0e9bd73db58961a273b6dc11a2c6eb9c2 \ - --hash=sha256:37d5576d35fcb765fca05654f66aa71e2808d4237d026e64ac8b397ffa66a56a \ - --hash=sha256:3c9834d5e3df9d2aba0275c9f67989c590e05732439b3318fa37a725dff51e74 \ - --hash=sha256:438856d3f8f1e27f8e79b5410ae56650732a0dcfa94e756df88c7e2d24851fcd \ - --hash=sha256:477c9430ad5d1b80b07f3c12f7120eef40bfbf849e9e7859e53b9c93b922d2af \ - --hash=sha256:49ab200acf891e3dde19e5aa4b0f35d12d8b4bd805dc0be8792270c71bd56c54 \ - --hash=sha256:49dbb19cdcafc130f597d9e04a29d0a032ceedf729e41b181f51cd170e6ee865 \ - --hash=sha256:4c8e31cf29b60859876474034a83f59a14381af50cbe8a9dbaadbf70adc4b214 \ - --hash=sha256:4eddd3153d02204f22aef0825409091a91bf2a20bce06fe0f638f5c19a85de54 \ - --hash=sha256:5247bab12f84a1d608213b96b8af0cbb30d090d705b6663ad794c2f2a5e5b9fe \ - --hash=sha256:5492a6ce3bdb15c6ad66cb68a0244854d9917478877a25671d70378bdc8562d0 \ - --hash=sha256:56afbf41fa4a7b27f6635bc4289050ac3ab7951b8a821bca46f5b024500e6321 \ - --hash=sha256:59777652e245bb1e300e620ce2bef0d341945842e4eb888c23a7f1d9e143c446 \ - --hash=sha256:60f64e2007c9144375dd0f480a54d6070f00bb1a28f65c408370544091c9bc9e \ - --hash=sha256:63c5b8ecbc3b3d5eb3a9d873dec60afc0cd5ff9d9f1c75981d8c31cfe4df8527 \ - --hash=sha256:68d8a0426b49c053013e631c0cdc09b952d857efa8f68121746b339912d27a12 \ - --hash=sha256:74c160285f2dfe0acf0f72d425f3e970b21b6de04157fc65adc9fd07ee44177f \ - --hash=sha256:7a9baf8e230f9621f8e1d00c580394a0aa328fdac0df2b3f8384387c44083c0f \ - --hash=sha256:7df91fb24c2edaabec4e0eee512ff3bc6ec20eb8dccac2e77001c1fe516c0c84 \ - --hash=sha256:7f297e0c1ae55300ff688568b04ff26b01c13dfbf4c9d2b7d0cb688ac60df479 \ - --hash=sha256:80501d1b2270d7e8daf1b64b895745c3e234289e00d5f0e30923e706f110334e \ - --hash=sha256:85b7335c22455ec12444cec0d600533a238d6439d8d709d545158c1208483873 \ - --hash=sha256:887665f00ea4e488501ba755a0e3c2cfd6278e846ada3185f42d391ef95e7e70 \ - --hash=sha256:8f39c49faf5344af36042b293ce05c0d9004270d811c7080610b3e713251c9b0 \ - --hash=sha256:90b6e2f0f66750c5a1178ffa9370dec6c508a8ca5265c42fbad3ccac210a7977 \ - --hash=sha256:96d7d761aea65b291a98c84e1250cd57b5b51726821a6f2f8df65db89363be51 \ - --hash=sha256:97af9554a799bd7c58c0179cc8dbf14aa7ab50e1fd5fa73f90b9b7215874ba28 \ - --hash=sha256:97c44f4ee13bce914272589b6b41165bbb650e48fdb7bd5493a38bde8de730a1 \ - --hash=sha256:a67e6bbe756ed458646e1ef2b0778591ed4d1fcd4b146fc3ba2feb1a7afd4254 \ - --hash=sha256:ac0dec90e7de0087d3d95fa0533e1d2d722dcc008bc7b60e1143402a04c117c1 \ - --hash=sha256:ad0f87826c4ebd3ef484502e79b39614e9c03a5d1510cfb623f4a4a051edc6fd \ - --hash=sha256:b3eb0c93e2ea6445b2173da48cb548364f8f65bf68f3d090404080d338e3a689 \ - --hash=sha256:b543302a3707245d454fc49b8ecd2c2d5982b50eb63f3535244fd79a4be0c99d \ - --hash=sha256:b859128a093f135b556b4765658d5d2e758e1fae3e7cc2f8c10f26fe7005e543 \ - --hash=sha256:bac329371d4c0d456e8d5f38a9b0816b446581b5f278474e416ea0c68c47dcd9 \ - --hash=sha256:c02cfa6c36144ab334d556989406837336c1d05215a9bdf44c0bc1d1ac1cb637 \ - --hash=sha256:c9737bc49a9255d78da085fa04f628a310c2332b187cd49b958b0e494c125071 \ - --hash=sha256:ccc51713b5581e12f93ccb9c5e39e8b5d4b16776d584c0f5e9e4e63381356482 \ - --hash=sha256:ce2ee86ca75f9f96072295c5ebb4ef2a43cecf2870b0ca5e7a1cbdd929cf67e1 \ - --hash=sha256:d000a739f9feed900381605a12a61f7aaced6beae832719ae0d15058a1e81c1b \ - --hash=sha256:db76a1bcb51f02b2007adacbed4c88b6dee75342c37b05d1822815eed19edee5 \ - --hash=sha256:e2ac9a1de294773b9fa77447ab7e529cf4fe3910f6a0832816e5f3d538cfea9a \ - --hash=sha256:e61260ec93f99f2c2d93d264b564ba912bec502f679793c56f678ba5251f0393 \ - --hash=sha256:fac440c43e9b479d1241fe9d768645e7ccec3fb65dc3a5f6e90675e75c3f3e3a \ - --hash=sha256:fc0ed8d310afe013db1eedd37176d0839dc66c96bcfcce8f6607a73ffea2d6ba +coverage[toml]==7.3.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1 \ + --hash=sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63 \ + --hash=sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9 \ + --hash=sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312 \ + --hash=sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3 \ + --hash=sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb \ + --hash=sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25 \ + --hash=sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92 \ + --hash=sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda \ + --hash=sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148 \ + --hash=sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6 \ + --hash=sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216 \ + --hash=sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a \ + --hash=sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640 \ + --hash=sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836 \ + --hash=sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c \ + --hash=sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f \ + --hash=sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2 \ + --hash=sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901 \ + --hash=sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed \ + --hash=sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a \ + --hash=sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074 \ + --hash=sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc \ + --hash=sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84 \ + --hash=sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083 \ + --hash=sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f \ + --hash=sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c \ + --hash=sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c \ + --hash=sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637 \ + --hash=sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2 \ + --hash=sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82 \ + --hash=sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f \ + --hash=sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce \ + --hash=sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef \ + --hash=sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f \ + --hash=sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611 \ + --hash=sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c \ + --hash=sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76 \ + --hash=sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9 \ + --hash=sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce \ + --hash=sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9 \ + --hash=sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf \ + --hash=sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf \ + --hash=sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9 \ + --hash=sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6 \ + --hash=sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2 \ + --hash=sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a \ + --hash=sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a \ + --hash=sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf \ + --hash=sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738 \ + --hash=sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a \ + --hash=sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4 +decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ + --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 @@ -189,122 +203,128 @@ exceptiongroup==1.1.3 ; python_version >= "3.8" and python_version < "3.11" \ factory-boy==3.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:a2cdbdb63228177aa4f1c52f4b6d83fab2b8623bf602c7dedd7eb83c0f69c04c \ --hash=sha256:bc76d97d1a65bbd9842a6d722882098eb549ec8ee1081f9fb2e8ff29f0c300f1 -faker==19.3.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:a6624d9574623bb27dfca33fff94581cd7b23b562901db8ad59acbde9a52543e \ - --hash=sha256:e2722fdf622cf24e974aaba15a3dee97a6f8b98d869bd827ff1af9c87695af46 +faker==19.13.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:14ccb0aec342d33aa3889a864a56e5b3c2d56bce1b89f9189f4fbc128b9afc1e \ + --hash=sha256:da880a76322db7a879c848a0771e129338e0a680a9f695fd9a3e7a6ac82b45e1 fastapi==0.101.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:7b32000d14ca9992f7461117b81e4ef9ff0c07936af641b4fe40e67d5f9d63cb \ --hash=sha256:aef5f8676eb1b8389952e1fe734abe20f04b71f6936afcc53b320ba79b686a4b -googleapis-common-protos==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:69f9bbcc6acde92cab2db95ce30a70bd2b81d20b12eff3f1aabaffcbe8a93918 \ - --hash=sha256:e73ebb404098db405ba95d1e1ae0aa91c3e15a71da031a2eeb6b2e23e7bc3708 -greenlet==2.0.2 ; python_version >= "3.8" and python_version < "4.0" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") \ - --hash=sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a \ - --hash=sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a \ - --hash=sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43 \ - --hash=sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33 \ - --hash=sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8 \ - --hash=sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088 \ - --hash=sha256:2780572ec463d44c1d3ae850239508dbeb9fed38e294c68d19a24d925d9223ca \ - --hash=sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343 \ - --hash=sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645 \ - --hash=sha256:2dd11f291565a81d71dab10b7033395b7a3a5456e637cf997a6f33ebdf06f8db \ - --hash=sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df \ - --hash=sha256:32e5b64b148966d9cccc2c8d35a671409e45f195864560829f395a54226408d3 \ - --hash=sha256:36abbf031e1c0f79dd5d596bfaf8e921c41df2bdf54ee1eed921ce1f52999a86 \ - --hash=sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2 \ - --hash=sha256:3a51c9751078733d88e013587b108f1b7a1fb106d402fb390740f002b6f6551a \ - --hash=sha256:3c9b12575734155d0c09d6c3e10dbd81665d5c18e1a7c6597df72fd05990c8cf \ - --hash=sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7 \ - --hash=sha256:4b58adb399c4d61d912c4c331984d60eb66565175cdf4a34792cd9600f21b394 \ - --hash=sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40 \ - --hash=sha256:5454276c07d27a740c5892f4907c86327b632127dd9abec42ee62e12427ff7e3 \ - --hash=sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6 \ - --hash=sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74 \ - --hash=sha256:703f18f3fda276b9a916f0934d2fb6d989bf0b4fb5a64825260eb9bfd52d78f0 \ - --hash=sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3 \ - --hash=sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91 \ - --hash=sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5 \ - --hash=sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9 \ - --hash=sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8 \ - --hash=sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b \ - --hash=sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6 \ - --hash=sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb \ - --hash=sha256:937e9020b514ceedb9c830c55d5c9872abc90f4b5862f89c0887033ae33c6f73 \ - --hash=sha256:94c817e84245513926588caf1152e3b559ff794d505555211ca041f032abbb6b \ - --hash=sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df \ - --hash=sha256:9d14b83fab60d5e8abe587d51c75b252bcc21683f24699ada8fb275d7712f5a9 \ - --hash=sha256:9f35ec95538f50292f6d8f2c9c9f8a3c6540bbfec21c9e5b4b751e0a7c20864f \ - --hash=sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0 \ - --hash=sha256:acd2162a36d3de67ee896c43effcd5ee3de247eb00354db411feb025aa319857 \ - --hash=sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a \ - --hash=sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249 \ - --hash=sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30 \ - --hash=sha256:b9ec052b06a0524f0e35bd8790686a1da006bd911dd1ef7d50b77bfbad74e292 \ - --hash=sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b \ - --hash=sha256:bdfea8c661e80d3c1c99ad7c3ff74e6e87184895bbaca6ee8cc61209f8b9b85d \ - --hash=sha256:be4ed120b52ae4d974aa40215fcdfde9194d63541c7ded40ee12eb4dda57b76b \ - --hash=sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c \ - --hash=sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca \ - --hash=sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7 \ - --hash=sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75 \ - --hash=sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae \ - --hash=sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b \ - --hash=sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470 \ - --hash=sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564 \ - --hash=sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9 \ - --hash=sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099 \ - --hash=sha256:e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0 \ - --hash=sha256:ea9872c80c132f4663822dd2a08d404073a5a9b5ba6155bea72fb2a79d1093b5 \ - --hash=sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19 \ - --hash=sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1 \ - --hash=sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526 -grpcio==1.57.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00258cbe3f5188629828363ae8ff78477ce976a6f63fb2bb5e90088396faa82e \ - --hash=sha256:092fa155b945015754bdf988be47793c377b52b88d546e45c6a9f9579ac7f7b6 \ - --hash=sha256:0f80bf37f09e1caba6a8063e56e2b87fa335add314cf2b78ebf7cb45aa7e3d06 \ - --hash=sha256:20ec6fc4ad47d1b6e12deec5045ec3cd5402d9a1597f738263e98f490fe07056 \ - --hash=sha256:2313b124e475aa9017a9844bdc5eafb2d5abdda9d456af16fc4535408c7d6da6 \ - --hash=sha256:23e7d8849a0e58b806253fd206ac105b328171e01b8f18c7d5922274958cc87e \ - --hash=sha256:2f708a6a17868ad8bf586598bee69abded4996b18adf26fd2d91191383b79019 \ - --hash=sha256:2f7349786da979a94690cc5c2b804cab4e8774a3cf59be40d037c4342c906649 \ - --hash=sha256:34950353539e7d93f61c6796a007c705d663f3be41166358e3d88c45760c7d98 \ - --hash=sha256:40b72effd4c789de94ce1be2b5f88d7b9b5f7379fe9645f198854112a6567d9a \ - --hash=sha256:4b089f7ad1eb00a104078bab8015b0ed0ebcb3b589e527ab009c53893fd4e613 \ - --hash=sha256:4faea2cfdf762a664ab90589b66f416274887641ae17817de510b8178356bf73 \ - --hash=sha256:5371bcd861e679d63b8274f73ac281751d34bd54eccdbfcd6aa00e692a82cd7b \ - --hash=sha256:5613a2fecc82f95d6c51d15b9a72705553aa0d7c932fad7aed7afb51dc982ee5 \ - --hash=sha256:57b183e8b252825c4dd29114d6c13559be95387aafc10a7be645462a0fc98bbb \ - --hash=sha256:5b7a4ce8f862fe32b2a10b57752cf3169f5fe2915acfe7e6a1e155db3da99e79 \ - --hash=sha256:5e5b58e32ae14658085c16986d11e99abd002ddbf51c8daae8a0671fffb3467f \ - --hash=sha256:60fe15288a0a65d5c1cb5b4a62b1850d07336e3ba728257a810317be14f0c527 \ - --hash=sha256:6907b1cf8bb29b058081d2aad677b15757a44ef2d4d8d9130271d2ad5e33efca \ - --hash=sha256:76c44efa4ede1f42a9d5b2fed1fe9377e73a109bef8675fb0728eb80b0b8e8f2 \ - --hash=sha256:7a635589201b18510ff988161b7b573f50c6a48fae9cb567657920ca82022b37 \ - --hash=sha256:7b400807fa749a9eb286e2cd893e501b110b4d356a218426cb9c825a0474ca56 \ - --hash=sha256:82640e57fb86ea1d71ea9ab54f7e942502cf98a429a200b2e743d8672171734f \ - --hash=sha256:871f9999e0211f9551f368612460442a5436d9444606184652117d6a688c9f51 \ - --hash=sha256:9338bacf172e942e62e5889b6364e56657fbf8ac68062e8b25c48843e7b202bb \ - --hash=sha256:a8a8e560e8dbbdf29288872e91efd22af71e88b0e5736b0daf7773c1fecd99f0 \ - --hash=sha256:aed90d93b731929e742967e236f842a4a2174dc5db077c8f9ad2c5996f89f63e \ - --hash=sha256:b363bbb5253e5f9c23d8a0a034dfdf1b7c9e7f12e602fc788c435171e96daccc \ - --hash=sha256:b4098b6b638d9e0ca839a81656a2fd4bc26c9486ea707e8b1437d6f9d61c3941 \ - --hash=sha256:b53333627283e7241fcc217323f225c37783b5f0472316edcaa4479a213abfa6 \ - --hash=sha256:b670c2faa92124b7397b42303e4d8eb64a4cd0b7a77e35a9e865a55d61c57ef9 \ - --hash=sha256:bb396952cfa7ad2f01061fbc7dc1ad91dd9d69243bcb8110cf4e36924785a0fe \ - --hash=sha256:c60b83c43faeb6d0a9831f0351d7787a0753f5087cc6fa218d78fdf38e5acef0 \ - --hash=sha256:c6ebecfb7a31385393203eb04ed8b6a08f5002f53df3d59e5e795edb80999652 \ - --hash=sha256:d78d8b86fcdfa1e4c21f8896614b6cc7ee01a2a758ec0c4382d662f2a62cf766 \ - --hash=sha256:d7f8df114d6b4cf5a916b98389aeaf1e3132035420a88beea4e3d977e5f267a5 \ - --hash=sha256:e1cb52fa2d67d7f7fab310b600f22ce1ff04d562d46e9e0ac3e3403c2bb4cc16 \ - --hash=sha256:e3fdf04e402f12e1de8074458549337febb3b45f21076cc02ef4ff786aff687e \ - --hash=sha256:e503cb45ed12b924b5b988ba9576dc9949b2f5283b8e33b21dcb6be74a7c58d0 \ - --hash=sha256:f19ac6ac0a256cf77d3cc926ef0b4e64a9725cc612f97228cd5dc4bd9dbab03b \ - --hash=sha256:f1fb0fd4a1e9b11ac21c30c169d169ef434c6e9344ee0ab27cfa6f605f6387b2 \ - --hash=sha256:fada6b07ec4f0befe05218181f4b85176f11d531911b64c715d1875c4736d73a \ - --hash=sha256:fd173b4cf02b20f60860dc2ffe30115c18972d7d6d2d69df97ac38dee03be5bf \ - --hash=sha256:fe752639919aad9ffb0dee0d87f29a6467d1ef764f13c4644d212a9a853a078d \ - --hash=sha256:fee387d2fab144e8a34e0e9c5ca0f45c9376b99de45628265cfa9886b1dbe62b +googleapis-common-protos==1.61.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:22f1915393bb3245343f6efe87f6fe868532efc12aa26b391b15132e1279f1c0 \ + --hash=sha256:8a64866a97f6304a7179873a465d6eee97b7a24ec6cfd78e0f575e96b821240b +greenlet==3.0.1 ; python_version >= "3.8" and python_version < "4.0" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") \ + --hash=sha256:0a02d259510b3630f330c86557331a3b0e0c79dac3d166e449a39363beaae174 \ + --hash=sha256:0b6f9f8ca7093fd4433472fd99b5650f8a26dcd8ba410e14094c1e44cd3ceddd \ + --hash=sha256:100f78a29707ca1525ea47388cec8a049405147719f47ebf3895e7509c6446aa \ + --hash=sha256:1757936efea16e3f03db20efd0cd50a1c86b06734f9f7338a90c4ba85ec2ad5a \ + --hash=sha256:19075157a10055759066854a973b3d1325d964d498a805bb68a1f9af4aaef8ec \ + --hash=sha256:19bbdf1cce0346ef7341705d71e2ecf6f41a35c311137f29b8a2dc2341374565 \ + --hash=sha256:20107edf7c2c3644c67c12205dc60b1bb11d26b2610b276f97d666110d1b511d \ + --hash=sha256:22f79120a24aeeae2b4471c711dcf4f8c736a2bb2fabad2a67ac9a55ea72523c \ + --hash=sha256:2847e5d7beedb8d614186962c3d774d40d3374d580d2cbdab7f184580a39d234 \ + --hash=sha256:28e89e232c7593d33cac35425b58950789962011cc274aa43ef8865f2e11f46d \ + --hash=sha256:329c5a2e5a0ee942f2992c5e3ff40be03e75f745f48847f118a3cfece7a28546 \ + --hash=sha256:337322096d92808f76ad26061a8f5fccb22b0809bea39212cd6c406f6a7060d2 \ + --hash=sha256:3fcc780ae8edbb1d050d920ab44790201f027d59fdbd21362340a85c79066a74 \ + --hash=sha256:41bdeeb552d814bcd7fb52172b304898a35818107cc8778b5101423c9017b3de \ + --hash=sha256:4eddd98afc726f8aee1948858aed9e6feeb1758889dfd869072d4465973f6bfd \ + --hash=sha256:52e93b28db27ae7d208748f45d2db8a7b6a380e0d703f099c949d0f0d80b70e9 \ + --hash=sha256:55d62807f1c5a1682075c62436702aaba941daa316e9161e4b6ccebbbf38bda3 \ + --hash=sha256:5805e71e5b570d490938d55552f5a9e10f477c19400c38bf1d5190d760691846 \ + --hash=sha256:599daf06ea59bfedbec564b1692b0166a0045f32b6f0933b0dd4df59a854caf2 \ + --hash=sha256:60d5772e8195f4e9ebf74046a9121bbb90090f6550f81d8956a05387ba139353 \ + --hash=sha256:696d8e7d82398e810f2b3622b24e87906763b6ebfd90e361e88eb85b0e554dc8 \ + --hash=sha256:6e6061bf1e9565c29002e3c601cf68569c450be7fc3f7336671af7ddb4657166 \ + --hash=sha256:80ac992f25d10aaebe1ee15df45ca0d7571d0f70b645c08ec68733fb7a020206 \ + --hash=sha256:816bd9488a94cba78d93e1abb58000e8266fa9cc2aa9ccdd6eb0696acb24005b \ + --hash=sha256:85d2b77e7c9382f004b41d9c72c85537fac834fb141b0296942d52bf03fe4a3d \ + --hash=sha256:87c8ceb0cf8a5a51b8008b643844b7f4a8264a2c13fcbcd8a8316161725383fe \ + --hash=sha256:89ee2e967bd7ff85d84a2de09df10e021c9b38c7d91dead95b406ed6350c6997 \ + --hash=sha256:8bef097455dea90ffe855286926ae02d8faa335ed8e4067326257cb571fc1445 \ + --hash=sha256:8d11ebbd679e927593978aa44c10fc2092bc454b7d13fdc958d3e9d508aba7d0 \ + --hash=sha256:91e6c7db42638dc45cf2e13c73be16bf83179f7859b07cfc139518941320be96 \ + --hash=sha256:97e7ac860d64e2dcba5c5944cfc8fa9ea185cd84061c623536154d5a89237884 \ + --hash=sha256:990066bff27c4fcf3b69382b86f4c99b3652bab2a7e685d968cd4d0cfc6f67c6 \ + --hash=sha256:9fbc5b8f3dfe24784cee8ce0be3da2d8a79e46a276593db6868382d9c50d97b1 \ + --hash=sha256:ac4a39d1abae48184d420aa8e5e63efd1b75c8444dd95daa3e03f6c6310e9619 \ + --hash=sha256:b2c02d2ad98116e914d4f3155ffc905fd0c025d901ead3f6ed07385e19122c94 \ + --hash=sha256:b2d3337dcfaa99698aa2377c81c9ca72fcd89c07e7eb62ece3f23a3fe89b2ce4 \ + --hash=sha256:b489c36d1327868d207002391f662a1d163bdc8daf10ab2e5f6e41b9b96de3b1 \ + --hash=sha256:b641161c302efbb860ae6b081f406839a8b7d5573f20a455539823802c655f63 \ + --hash=sha256:b8ba29306c5de7717b5761b9ea74f9c72b9e2b834e24aa984da99cbfc70157fd \ + --hash=sha256:b9934adbd0f6e476f0ecff3c94626529f344f57b38c9a541f87098710b18af0a \ + --hash=sha256:ce85c43ae54845272f6f9cd8320d034d7a946e9773c693b27d620edec825e376 \ + --hash=sha256:cf868e08690cb89360eebc73ba4be7fb461cfbc6168dd88e2fbbe6f31812cd57 \ + --hash=sha256:d2905ce1df400360463c772b55d8e2518d0e488a87cdea13dd2c71dcb2a1fa16 \ + --hash=sha256:d57e20ba591727da0c230ab2c3f200ac9d6d333860d85348816e1dca4cc4792e \ + --hash=sha256:d6a8c9d4f8692917a3dc7eb25a6fb337bff86909febe2f793ec1928cd97bedfc \ + --hash=sha256:d923ff276f1c1f9680d32832f8d6c040fe9306cbfb5d161b0911e9634be9ef0a \ + --hash=sha256:daa7197b43c707462f06d2c693ffdbb5991cbb8b80b5b984007de431493a319c \ + --hash=sha256:dbd4c177afb8a8d9ba348d925b0b67246147af806f0b104af4d24f144d461cd5 \ + --hash=sha256:dc4d815b794fd8868c4d67602692c21bf5293a75e4b607bb92a11e821e2b859a \ + --hash=sha256:e9d21aaa84557d64209af04ff48e0ad5e28c5cca67ce43444e939579d085da72 \ + --hash=sha256:ea6b8aa9e08eea388c5f7a276fabb1d4b6b9d6e4ceb12cc477c3d352001768a9 \ + --hash=sha256:eabe7090db68c981fca689299c2d116400b553f4b713266b130cfc9e2aa9c5a9 \ + --hash=sha256:f2f6d303f3dee132b322a14cd8765287b8f86cdc10d2cb6a6fae234ea488888e \ + --hash=sha256:f33f3258aae89da191c6ebaa3bc517c6c4cbc9b9f689e5d8452f7aedbb913fa8 \ + --hash=sha256:f7bfb769f7efa0eefcd039dd19d843a4fbfbac52f1878b1da2ed5793ec9b1a65 \ + --hash=sha256:f89e21afe925fcfa655965ca8ea10f24773a1791400989ff32f467badfe4a064 \ + --hash=sha256:fa24255ae3c0ab67e613556375a4341af04a084bd58764731972bcbc8baeba36 +grpcio==1.59.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:023088764012411affe7db183d1ada3ad9daf2e23ddc719ff46d7061de661340 \ + --hash=sha256:08d77e682f2bf730a4961eea330e56d2f423c6a9b91ca222e5b1eb24a357b19f \ + --hash=sha256:0a4a3833c0e067f3558538727235cd8a49709bff1003200bbdefa2f09334e4b1 \ + --hash=sha256:0a754aff9e3af63bdc4c75c234b86b9d14e14a28a30c4e324aed1a9b873d755f \ + --hash=sha256:11168ef43e4a43ff1b1a65859f3e0ef1a173e277349e7fb16923ff108160a8cd \ + --hash=sha256:128e20f57c5f27cb0157e73756d1586b83c1b513ebecc83ea0ac37e4b0e4e758 \ + --hash=sha256:1f9524d1d701e399462d2c90ba7c193e49d1711cf429c0d3d97c966856e03d00 \ + --hash=sha256:1ff16d68bf453275466a9a46739061a63584d92f18a0f5b33d19fc97eb69867c \ + --hash=sha256:2067274c88bc6de89c278a672a652b4247d088811ece781a4858b09bdf8448e3 \ + --hash=sha256:2171c39f355ba5b551c5d5928d65aa6c69807fae195b86ef4a7d125bcdb860a9 \ + --hash=sha256:242adc47725b9a499ee77c6a2e36688fa6c96484611f33b1be4c57ab075a92dd \ + --hash=sha256:27f879ae604a7fcf371e59fba6f3ff4635a4c2a64768bd83ff0cac503142fef4 \ + --hash=sha256:2b230028a008ae1d0f430acb227d323ff8a619017415cf334c38b457f814119f \ + --hash=sha256:3059668df17627f0e0fa680e9ef8c995c946c792612e9518f5cc1503be14e90b \ + --hash=sha256:31176aa88f36020055ace9adff2405a33c8bdbfa72a9c4980e25d91b2f196873 \ + --hash=sha256:36f53c2b3449c015880e7d55a89c992c357f176327b0d2873cdaaf9628a37c69 \ + --hash=sha256:3b4368b33908f683a363f376dfb747d40af3463a6e5044afee07cf9436addf96 \ + --hash=sha256:3c61d641d4f409c5ae46bfdd89ea42ce5ea233dcf69e74ce9ba32b503c727e29 \ + --hash=sha256:4abb717e320e74959517dc8e84a9f48fbe90e9abe19c248541e9418b1ce60acd \ + --hash=sha256:4c93f4abbb54321ee6471e04a00139c80c754eda51064187963ddf98f5cf36a4 \ + --hash=sha256:535561990e075fa6bd4b16c4c3c1096b9581b7bb35d96fac4650f1181e428268 \ + --hash=sha256:53c9aa5ddd6857c0a1cd0287225a2a25873a8e09727c2e95c4aebb1be83a766a \ + --hash=sha256:5d573e70a6fe77555fb6143c12d3a7d3fa306632a3034b4e7c59ca09721546f8 \ + --hash=sha256:6009386a2df66159f64ac9f20425ae25229b29b9dd0e1d3dd60043f037e2ad7e \ + --hash=sha256:686e975a5d16602dc0982c7c703948d17184bd1397e16c8ee03511ecb8c4cdda \ + --hash=sha256:6959fb07e8351e20501ffb8cc4074c39a0b7ef123e1c850a7f8f3afdc3a3da01 \ + --hash=sha256:6b25ed37c27e652db01be341af93fbcea03d296c024d8a0e680017a268eb85dd \ + --hash=sha256:6da6dea3a1bacf99b3c2187e296db9a83029ed9c38fd4c52b7c9b7326d13c828 \ + --hash=sha256:72ca2399097c0b758198f2ff30f7178d680de8a5cfcf3d9b73a63cf87455532e \ + --hash=sha256:73abb8584b0cf74d37f5ef61c10722adc7275502ab71789a8fe3cb7ef04cf6e2 \ + --hash=sha256:74100fecaec8a535e380cf5f2fb556ff84957d481c13e54051c52e5baac70541 \ + --hash=sha256:75c6ecb70e809cf1504465174343113f51f24bc61e22a80ae1c859f3f7034c6d \ + --hash=sha256:7cf05053242f61ba94014dd3a986e11a083400a32664058f80bf4cf817c0b3a1 \ + --hash=sha256:9411e24328a2302e279e70cae6e479f1fddde79629fcb14e03e6d94b3956eabf \ + --hash=sha256:a213acfbf186b9f35803b52e4ca9addb153fc0b67f82a48f961be7000ecf6721 \ + --hash=sha256:bb7e0fe6ad73b7f06d7e2b689c19a71cf5cc48f0c2bf8608469e51ffe0bd2867 \ + --hash=sha256:c2504eed520958a5b77cc99458297cb7906308cb92327f35fb7fbbad4e9b2188 \ + --hash=sha256:c35aa9657f5d5116d23b934568e0956bd50c615127810fffe3ac356a914c176a \ + --hash=sha256:c5f09cffa619adfb44799fa4a81c2a1ad77c887187613fb0a8f201ab38d89ba1 \ + --hash=sha256:c978f864b35f2261e0819f5cd88b9830b04dc51bcf055aac3c601e525a10d2ba \ + --hash=sha256:cbe946b3e6e60a7b4618f091e62a029cb082b109a9d6b53962dd305087c6e4fd \ + --hash=sha256:cc3e4cd087f07758b16bef8f31d88dbb1b5da5671d2f03685ab52dece3d7a16e \ + --hash=sha256:cf0dead5a2c5a3347af2cfec7131d4f2a2e03c934af28989c9078f8241a491fa \ + --hash=sha256:d2794f0e68b3085d99b4f6ff9c089f6fdd02b32b9d3efdfbb55beac1bf22d516 \ + --hash=sha256:d2fa68a96a30dd240be80bbad838a0ac81a61770611ff7952b889485970c4c71 \ + --hash=sha256:d6f70406695e3220f09cd7a2f879333279d91aa4a8a1d34303b56d61a8180137 \ + --hash=sha256:d8f9cd4ad1be90b0cf350a2f04a38a36e44a026cac1e036ac593dc48efe91d52 \ + --hash=sha256:da2d94c15f88cd40d7e67f7919d4f60110d2b9d5b1e08cf354c2be773ab13479 \ + --hash=sha256:e1727c1c0e394096bb9af185c6923e8ea55a5095b8af44f06903bcc0e06800a2 \ + --hash=sha256:e420ced29b5904cdf9ee5545e23f9406189d8acb6750916c2db4793dada065c6 \ + --hash=sha256:e82c5cf1495244adf5252f925ac5932e5fd288b3e5ab6b70bec5593074b7236c \ + --hash=sha256:f1ef0d39bc1feb420caf549b3c657c871cad4ebbcf0580c4d03816b0590de0cf \ + --hash=sha256:f8753a6c88d1d0ba64302309eecf20f70d2770f65ca02d83c2452279085bfcd3 \ + --hash=sha256:f93dbf58f03146164048be5426ffde298b237a5e059144847e4940f5b80172c3 h11==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 @@ -320,9 +340,9 @@ idna==3.4 ; python_version >= "3.8" and python_version < "4.0" \ importlib-metadata==6.8.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb \ --hash=sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743 -importlib-resources==6.0.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:134832a506243891221b88b4ae1213327eea96ceb4e407a00d790bb0626f45cf \ - --hash=sha256:4359457e42708462b9626a04657c6208ad799ceb41e5c58c57ffa0e6a098a5d4 +importlib-resources==6.1.1 ; python_version >= "3.8" and python_version < "3.9" \ + --hash=sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a \ + --hash=sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6 iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 @@ -491,34 +511,34 @@ mmh3==4.0.1 ; python_version >= "3.8" and python_version < "4.0" \ mypy-extensions==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \ --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782 -mypy==1.5.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:159aa9acb16086b79bbb0016145034a1a05360626046a929f84579ce1666b315 \ - --hash=sha256:258b22210a4a258ccd077426c7a181d789d1121aca6db73a83f79372f5569ae0 \ - --hash=sha256:26f71b535dfc158a71264e6dc805a9f8d2e60b67215ca0bfa26e2e1aa4d4d373 \ - --hash=sha256:26fb32e4d4afa205b24bf645eddfbb36a1e17e995c5c99d6d00edb24b693406a \ - --hash=sha256:2fc3a600f749b1008cc75e02b6fb3d4db8dbcca2d733030fe7a3b3502902f161 \ - --hash=sha256:32cb59609b0534f0bd67faebb6e022fe534bdb0e2ecab4290d683d248be1b275 \ - --hash=sha256:330857f9507c24de5c5724235e66858f8364a0693894342485e543f5b07c8693 \ - --hash=sha256:361da43c4f5a96173220eb53340ace68cda81845cd88218f8862dfb0adc8cddb \ - --hash=sha256:4a465ea2ca12804d5b34bb056be3a29dc47aea5973b892d0417c6a10a40b2d65 \ - --hash=sha256:51cb1323064b1099e177098cb939eab2da42fea5d818d40113957ec954fc85f4 \ - --hash=sha256:57b10c56016adce71fba6bc6e9fd45d8083f74361f629390c556738565af8eeb \ - --hash=sha256:596fae69f2bfcb7305808c75c00f81fe2829b6236eadda536f00610ac5ec2243 \ - --hash=sha256:5d627124700b92b6bbaa99f27cbe615c8ea7b3402960f6372ea7d65faf376c14 \ - --hash=sha256:6ac9c21bfe7bc9f7f1b6fae441746e6a106e48fc9de530dea29e8cd37a2c0cc4 \ - --hash=sha256:82cb6193de9bbb3844bab4c7cf80e6227d5225cc7625b068a06d005d861ad5f1 \ - --hash=sha256:8f772942d372c8cbac575be99f9cc9d9fb3bd95c8bc2de6c01411e2c84ebca8a \ - --hash=sha256:9fece120dbb041771a63eb95e4896791386fe287fefb2837258925b8326d6160 \ - --hash=sha256:a156e6390944c265eb56afa67c74c0636f10283429171018446b732f1a05af25 \ - --hash=sha256:a9ec1f695f0c25986e6f7f8778e5ce61659063268836a38c951200c57479cc12 \ - --hash=sha256:abed92d9c8f08643c7d831300b739562b0a6c9fcb028d211134fc9ab20ccad5d \ - --hash=sha256:b031b9601f1060bf1281feab89697324726ba0c0bae9d7cd7ab4b690940f0b92 \ - --hash=sha256:c543214ffdd422623e9fedd0869166c2f16affe4ba37463975043ef7d2ea8770 \ - --hash=sha256:d28ddc3e3dfeab553e743e532fb95b4e6afad51d4706dd22f28e1e5e664828d2 \ - --hash=sha256:f33592ddf9655a4894aef22d134de7393e95fcbdc2d15c1ab65828eee5c66c70 \ - --hash=sha256:f6b0e77db9ff4fda74de7df13f30016a0a663928d669c9f2c057048ba44f09bb \ - --hash=sha256:f757063a83970d67c444f6e01d9550a7402322af3557ce7630d3c957386fa8f5 \ - --hash=sha256:ff0cedc84184115202475bbb46dd99f8dcb87fe24d5d0ddfc0fe6b8575c88d2f +mypy==1.6.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:19f905bcfd9e167159b3d63ecd8cb5e696151c3e59a1742e79bc3bcb540c42c7 \ + --hash=sha256:21a1ad938fee7d2d96ca666c77b7c494c3c5bd88dff792220e1afbebb2925b5e \ + --hash=sha256:40b1844d2e8b232ed92e50a4bd11c48d2daa351f9deee6c194b83bf03e418b0c \ + --hash=sha256:41697773aa0bf53ff917aa077e2cde7aa50254f28750f9b88884acea38a16169 \ + --hash=sha256:49ae115da099dcc0922a7a895c1eec82c1518109ea5c162ed50e3b3594c71208 \ + --hash=sha256:4c46b51de523817a0045b150ed11b56f9fff55f12b9edd0f3ed35b15a2809de0 \ + --hash=sha256:4cbe68ef919c28ea561165206a2dcb68591c50f3bcf777932323bc208d949cf1 \ + --hash=sha256:4d01c00d09a0be62a4ca3f933e315455bde83f37f892ba4b08ce92f3cf44bcc1 \ + --hash=sha256:59a0d7d24dfb26729e0a068639a6ce3500e31d6655df8557156c51c1cb874ce7 \ + --hash=sha256:68351911e85145f582b5aa6cd9ad666c8958bcae897a1bfda8f4940472463c45 \ + --hash=sha256:7274b0c57737bd3476d2229c6389b2ec9eefeb090bbaf77777e9d6b1b5a9d143 \ + --hash=sha256:81af8adaa5e3099469e7623436881eff6b3b06db5ef75e6f5b6d4871263547e5 \ + --hash=sha256:82e469518d3e9a321912955cc702d418773a2fd1e91c651280a1bda10622f02f \ + --hash=sha256:8b27958f8c76bed8edaa63da0739d76e4e9ad4ed325c814f9b3851425582a3cd \ + --hash=sha256:8c223fa57cb154c7eab5156856c231c3f5eace1e0bed9b32a24696b7ba3c3245 \ + --hash=sha256:8f57e6b6927a49550da3d122f0cb983d400f843a8a82e65b3b380d3d7259468f \ + --hash=sha256:925cd6a3b7b55dfba252b7c4561892311c5358c6b5a601847015a1ad4eb7d332 \ + --hash=sha256:a43ef1c8ddfdb9575691720b6352761f3f53d85f1b57d7745701041053deff30 \ + --hash=sha256:a8032e00ce71c3ceb93eeba63963b864bf635a18f6c0c12da6c13c450eedb183 \ + --hash=sha256:b96ae2c1279d1065413965c607712006205a9ac541895004a1e0d4f281f2ff9f \ + --hash=sha256:bb8ccb4724f7d8601938571bf3f24da0da791fe2db7be3d9e79849cb64e0ae85 \ + --hash=sha256:bbaf4662e498c8c2e352da5f5bca5ab29d378895fa2d980630656178bd607c46 \ + --hash=sha256:cfd13d47b29ed3bbaafaff7d8b21e90d827631afda134836962011acb5904b71 \ + --hash=sha256:d4473c22cc296425bbbce7e9429588e76e05bc7342da359d6520b6427bf76660 \ + --hash=sha256:d8fbb68711905f8912e5af474ca8b78d077447d8f3918997fecbf26943ff3cbb \ + --hash=sha256:e5012e5cc2ac628177eaac0e83d622b2dd499e28253d4107a08ecc59ede3fc2c \ + --hash=sha256:eb4f18589d196a4cbe5290b435d135dee96567e07c2b2d43b5c4621b6501531a opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 @@ -558,187 +578,192 @@ opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.8" and python_ opentelemetry-util-http==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3 \ --hash=sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5 -packaging==23.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \ - --hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f +packaging==23.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ + --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 pathspec==0.11.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20 \ --hash=sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3 pika==1.3.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0779a7c1fafd805672796085560d290213a465e4f6f76a6fb19e378d8041a14f \ --hash=sha256:b2a327ddddf8570b4965b3576ac77091b850262d34ce8c1d8cb4e4146aa4145f -platformdirs==3.10.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d \ - --hash=sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d -pluggy==1.2.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849 \ - --hash=sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3 +platformdirs==3.11.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3 \ + --hash=sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e +pluggy==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12 \ + --hash=sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7 prometheus-client==0.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0836af6eb2c8f4fed712b2f279f6c0a8bbab29f9f4aa15276b91c7cb0d1616ab \ --hash=sha256:a03e35b359f14dd1630898543e2120addfdeacd1a6069c1367ae90fd93ad3f48 -protobuf==4.24.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:06437f0d4bb0d5f29e3d392aba69600188d4be5ad1e0a3370e581a9bf75a3081 \ - --hash=sha256:0b2b224e9541fe9f046dd7317d05f08769c332b7e4c54d93c7f0f372dedb0b1a \ - --hash=sha256:302e8752c760549ed4c7a508abc86b25d46553c81989343782809e1a062a2ef9 \ - --hash=sha256:44837a5ed9c9418ad5d502f89f28ba102e9cd172b6668bc813f21716f9273348 \ - --hash=sha256:55dd644adc27d2a624339332755fe077c7f26971045b469ebb9732a69ce1f2ca \ - --hash=sha256:5906c5e79ff50fe38b2d49d37db5874e3c8010826f2362f79996d83128a8ed9b \ - --hash=sha256:5d32363d14aca6e5c9e9d5918ad8fb65b091b6df66740ae9de50ac3916055e43 \ - --hash=sha256:970c701ee16788d74f3de20938520d7a0aebc7e4fff37096a48804c80d2908cf \ - --hash=sha256:bd39b9094a4cc003a1f911b847ab379f89059f478c0b611ba1215053e295132e \ - --hash=sha256:d414199ca605eeb498adc4d2ba82aedc0379dca4a7c364ff9bc9a179aa28e71b \ - --hash=sha256:d4af4fd9e9418e819be30f8df2a16e72fbad546a7576ac7f3653be92a6966d30 \ - --hash=sha256:df015c47d6855b8efa0b9be706c70bf7f050a4d5ac6d37fb043fbd95157a0e25 \ - --hash=sha256:fc361148e902949dcb953bbcb148c99fe8f8854291ad01107e4120361849fd0e -psutil==5.9.5 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:104a5cc0e31baa2bcf67900be36acde157756b9c44017b86b2c049f11957887d \ - --hash=sha256:3c6f686f4225553615612f6d9bc21f1c0e305f75d7d8454f9b46e901778e7217 \ - --hash=sha256:4aef137f3345082a3d3232187aeb4ac4ef959ba3d7c10c33dd73763fbc063da4 \ - --hash=sha256:5410638e4df39c54d957fc51ce03048acd8e6d60abc0f5107af51e5fb566eb3c \ - --hash=sha256:5b9b8cb93f507e8dbaf22af6a2fd0ccbe8244bf30b1baad6b3954e935157ae3f \ - --hash=sha256:7a7dd9997128a0d928ed4fb2c2d57e5102bb6089027939f3b722f3a210f9a8da \ - --hash=sha256:89518112647f1276b03ca97b65cc7f64ca587b1eb0278383017c2a0dcc26cbe4 \ - --hash=sha256:8c5f7c5a052d1d567db4ddd231a9d27a74e8e4a9c3f44b1032762bd7b9fdcd42 \ - --hash=sha256:ab8ed1a1d77c95453db1ae00a3f9c50227ebd955437bcf2a574ba8adbf6a74d5 \ - --hash=sha256:acf2aef9391710afded549ff602b5887d7a2349831ae4c26be7c807c0a39fac4 \ - --hash=sha256:b258c0c1c9d145a1d5ceffab1134441c4c5113b2417fafff7315a917a026c3c9 \ - --hash=sha256:be8929ce4313f9f8146caad4272f6abb8bf99fc6cf59344a3167ecd74f4f203f \ - --hash=sha256:c607bb3b57dc779d55e1554846352b4e358c10fff3abf3514a7a6601beebdb30 \ - --hash=sha256:ea8518d152174e1249c4f2a1c89e3e6065941df2fa13a1ab45327716a23c2b48 -psycopg2==2.9.7 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1a6a2d609bce44f78af4556bea0c62a5e7f05c23e5ea9c599e07678995609084 \ - --hash=sha256:44d93a0109dfdf22fe399b419bcd7fa589d86895d3931b01fb321d74dadc68f1 \ - --hash=sha256:8275abf628c6dc7ec834ea63f6f3846bf33518907a2b9b693d41fd063767a866 \ - --hash=sha256:91e81a8333a0037babfc9fe6d11e997a9d4dac0f38c43074886b0d9dead94fe9 \ - --hash=sha256:b22ed9c66da2589a664e0f1ca2465c29b75aaab36fa209d4fb916025fb9119e5 \ - --hash=sha256:b6bd7d9d3a7a63faae6edf365f0ed0e9b0a1aaf1da3ca146e6b043fb3eb5d723 \ - --hash=sha256:c7949770cafbd2f12cecc97dea410c514368908a103acf519f2a346134caa4d5 \ - --hash=sha256:d1210fcf99aae6f728812d1d2240afc1dc44b9e6cba526a06fb8134f969957c2 \ - --hash=sha256:d5c5297e2fbc8068d4255f1e606bfc9291f06f91ec31b2a0d4c536210ac5c0a2 \ - --hash=sha256:e9b04cbef584310a1ac0f0d55bb623ca3244c87c51187645432e342de9ae81a8 \ - --hash=sha256:f00cc35bd7119f1fed17b85bd1007855194dde2cbd8de01ab8ebb17487440ad8 -pydantic-core==2.6.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:002d0ea50e17ed982c2d65b480bd975fc41086a5a2f9c924ef8fc54419d1dea3 \ - --hash=sha256:02e1c385095efbd997311d85c6021d32369675c09bcbfff3b69d84e59dc103f6 \ - --hash=sha256:046af9cfb5384f3684eeb3f58a48698ddab8dd870b4b3f67f825353a14441418 \ - --hash=sha256:04fe5c0a43dec39aedba0ec9579001061d4653a9b53a1366b113aca4a3c05ca7 \ - --hash=sha256:07a1aec07333bf5adebd8264047d3dc518563d92aca6f2f5b36f505132399efc \ - --hash=sha256:1480fa4682e8202b560dcdc9eeec1005f62a15742b813c88cdc01d44e85308e5 \ - --hash=sha256:1508f37ba9e3ddc0189e6ff4e2228bd2d3c3a4641cbe8c07177162f76ed696c7 \ - --hash=sha256:171a4718860790f66d6c2eda1d95dd1edf64f864d2e9f9115840840cf5b5713f \ - --hash=sha256:19e20f8baedd7d987bd3f8005c146e6bcbda7cdeefc36fad50c66adb2dd2da48 \ - --hash=sha256:1a0ddaa723c48af27d19f27f1c73bdc615c73686d763388c8683fe34ae777bad \ - --hash=sha256:1aa712ba150d5105814e53cb141412217146fedc22621e9acff9236d77d2a5ef \ - --hash=sha256:1ac1750df1b4339b543531ce793b8fd5c16660a95d13aecaab26b44ce11775e9 \ - --hash=sha256:1c721bfc575d57305dd922e6a40a8fe3f762905851d694245807a351ad255c58 \ - --hash=sha256:1ce8c84051fa292a5dc54018a40e2a1926fd17980a9422c973e3ebea017aa8da \ - --hash=sha256:1fa1f6312fb84e8c281f32b39affe81984ccd484da6e9d65b3d18c202c666149 \ - --hash=sha256:22134a4453bd59b7d1e895c455fe277af9d9d9fbbcb9dc3f4a97b8693e7e2c9b \ - --hash=sha256:23470a23614c701b37252618e7851e595060a96a23016f9a084f3f92f5ed5881 \ - --hash=sha256:240a015102a0c0cc8114f1cba6444499a8a4d0333e178bc504a5c2196defd456 \ - --hash=sha256:252851b38bad3bfda47b104ffd077d4f9604a10cb06fe09d020016a25107bf98 \ - --hash=sha256:2a20c533cb80466c1d42a43a4521669ccad7cf2967830ac62c2c2f9cece63e7e \ - --hash=sha256:2dd50d6a1aef0426a1d0199190c6c43ec89812b1f409e7fe44cb0fbf6dfa733c \ - --hash=sha256:340e96c08de1069f3d022a85c2a8c63529fd88709468373b418f4cf2c949fb0e \ - --hash=sha256:3796a6152c545339d3b1652183e786df648ecdf7c4f9347e1d30e6750907f5bb \ - --hash=sha256:37a822f630712817b6ecc09ccc378192ef5ff12e2c9bae97eb5968a6cdf3b862 \ - --hash=sha256:3a750a83b2728299ca12e003d73d1264ad0440f60f4fc9cee54acc489249b728 \ - --hash=sha256:3c8945a105f1589ce8a693753b908815e0748f6279959a4530f6742e1994dcb6 \ - --hash=sha256:3ccc13afee44b9006a73d2046068d4df96dc5b333bf3509d9a06d1b42db6d8bf \ - --hash=sha256:3f90e5e3afb11268628c89f378f7a1ea3f2fe502a28af4192e30a6cdea1e7d5e \ - --hash=sha256:4292ca56751aebbe63a84bbfc3b5717abb09b14d4b4442cc43fd7c49a1529efd \ - --hash=sha256:430ddd965ffd068dd70ef4e4d74f2c489c3a313adc28e829dd7262cc0d2dd1e8 \ - --hash=sha256:439a0de139556745ae53f9cc9668c6c2053444af940d3ef3ecad95b079bc9987 \ - --hash=sha256:44b4f937b992394a2e81a5c5ce716f3dcc1237281e81b80c748b2da6dd5cf29a \ - --hash=sha256:48c1ed8b02ffea4d5c9c220eda27af02b8149fe58526359b3c07eb391cb353a2 \ - --hash=sha256:4ef724a059396751aef71e847178d66ad7fc3fc969a1a40c29f5aac1aa5f8784 \ - --hash=sha256:50555ba3cb58f9861b7a48c493636b996a617db1a72c18da4d7f16d7b1b9952b \ - --hash=sha256:522a9c4a4d1924facce7270c84b5134c5cabcb01513213662a2e89cf28c1d309 \ - --hash=sha256:5493a7027bfc6b108e17c3383959485087d5942e87eb62bbac69829eae9bc1f7 \ - --hash=sha256:56ea80269077003eaa59723bac1d8bacd2cd15ae30456f2890811efc1e3d4413 \ - --hash=sha256:5a2a3c9ef904dcdadb550eedf3291ec3f229431b0084666e2c2aa8ff99a103a2 \ - --hash=sha256:5cfde4fab34dd1e3a3f7f3db38182ab6c95e4ea91cf322242ee0be5c2f7e3d2f \ - --hash=sha256:5e4a2cf8c4543f37f5dc881de6c190de08096c53986381daebb56a355be5dfe6 \ - --hash=sha256:5e9c068f36b9f396399d43bfb6defd4cc99c36215f6ff33ac8b9c14ba15bdf6b \ - --hash=sha256:5ed7ceca6aba5331ece96c0e328cd52f0dcf942b8895a1ed2642de50800b79d3 \ - --hash=sha256:5fa159b902d22b283b680ef52b532b29554ea2a7fc39bf354064751369e9dbd7 \ - --hash=sha256:615a31b1629e12445c0e9fc8339b41aaa6cc60bd53bf802d5fe3d2c0cda2ae8d \ - --hash=sha256:621afe25cc2b3c4ba05fff53525156d5100eb35c6e5a7cf31d66cc9e1963e378 \ - --hash=sha256:6656a0ae383d8cd7cc94e91de4e526407b3726049ce8d7939049cbfa426518c8 \ - --hash=sha256:672174480a85386dd2e681cadd7d951471ad0bb028ed744c895f11f9d51b9ebe \ - --hash=sha256:692b4ff5c4e828a38716cfa92667661a39886e71136c97b7dac26edef18767f7 \ - --hash=sha256:6bcc1ad776fffe25ea5c187a028991c031a00ff92d012ca1cc4714087e575973 \ - --hash=sha256:6bf7d610ac8f0065a286002a23bcce241ea8248c71988bda538edcc90e0c39ad \ - --hash=sha256:75c0ebbebae71ed1e385f7dfd9b74c1cff09fed24a6df43d326dd7f12339ec34 \ - --hash=sha256:788be9844a6e5c4612b74512a76b2153f1877cd845410d756841f6c3420230eb \ - --hash=sha256:7dc2ce039c7290b4ef64334ec7e6ca6494de6eecc81e21cb4f73b9b39991408c \ - --hash=sha256:813aab5bfb19c98ae370952b6f7190f1e28e565909bfc219a0909db168783465 \ - --hash=sha256:8421cf496e746cf8d6b677502ed9a0d1e4e956586cd8b221e1312e0841c002d5 \ - --hash=sha256:84e87c16f582f5c753b7f39a71bd6647255512191be2d2dbf49458c4ef024588 \ - --hash=sha256:84f8bb34fe76c68c9d96b77c60cef093f5e660ef8e43a6cbfcd991017d375950 \ - --hash=sha256:85cc4d105747d2aa3c5cf3e37dac50141bff779545ba59a095f4a96b0a460e70 \ - --hash=sha256:883daa467865e5766931e07eb20f3e8152324f0adf52658f4d302242c12e2c32 \ - --hash=sha256:8b2b1bfed698fa410ab81982f681f5b1996d3d994ae8073286515ac4d165c2e7 \ - --hash=sha256:8ecbac050856eb6c3046dea655b39216597e373aa8e50e134c0e202f9c47efec \ - --hash=sha256:930bfe73e665ebce3f0da2c6d64455098aaa67e1a00323c74dc752627879fc67 \ - --hash=sha256:9616567800bdc83ce136e5847d41008a1d602213d024207b0ff6cab6753fe645 \ - --hash=sha256:9680dd23055dd874173a3a63a44e7f5a13885a4cfd7e84814be71be24fba83db \ - --hash=sha256:99faba727727b2e59129c59542284efebbddade4f0ae6a29c8b8d3e1f437beb7 \ - --hash=sha256:9a718d56c4d55efcfc63f680f207c9f19c8376e5a8a67773535e6f7e80e93170 \ - --hash=sha256:9b33bf9658cb29ac1a517c11e865112316d09687d767d7a0e4a63d5c640d1b17 \ - --hash=sha256:9e8b374ef41ad5c461efb7a140ce4730661aadf85958b5c6a3e9cf4e040ff4bb \ - --hash=sha256:9e9b65a55bbabda7fccd3500192a79f6e474d8d36e78d1685496aad5f9dbd92c \ - --hash=sha256:a0b7486d85293f7f0bbc39b34e1d8aa26210b450bbd3d245ec3d732864009819 \ - --hash=sha256:a53e3195f134bde03620d87a7e2b2f2046e0e5a8195e66d0f244d6d5b2f6d31b \ - --hash=sha256:a87c54e72aa2ef30189dc74427421e074ab4561cf2bf314589f6af5b37f45e6d \ - --hash=sha256:a892b5b1871b301ce20d40b037ffbe33d1407a39639c2b05356acfef5536d26a \ - --hash=sha256:a8acc9dedd304da161eb071cc7ff1326aa5b66aadec9622b2574ad3ffe225525 \ - --hash=sha256:aaafc776e5edc72b3cad1ccedb5fd869cc5c9a591f1213aa9eba31a781be9ac1 \ - --hash=sha256:acafc4368b289a9f291e204d2c4c75908557d4f36bd3ae937914d4529bf62a76 \ - --hash=sha256:b0a5d7edb76c1c57b95df719af703e796fc8e796447a1da939f97bfa8a918d60 \ - --hash=sha256:b25afe9d5c4f60dcbbe2b277a79be114e2e65a16598db8abee2a2dcde24f162b \ - --hash=sha256:b44c42edc07a50a081672e25dfe6022554b47f91e793066a7b601ca290f71e42 \ - --hash=sha256:b594b64e8568cf09ee5c9501ede37066b9fc41d83d58f55b9952e32141256acd \ - --hash=sha256:b962700962f6e7a6bd77e5f37320cabac24b4c0f76afeac05e9f93cf0c620014 \ - --hash=sha256:bb128c30cf1df0ab78166ded1ecf876620fb9aac84d2413e8ea1594b588c735d \ - --hash=sha256:bf9d42a71a4d7a7c1f14f629e5c30eac451a6fc81827d2beefd57d014c006c4a \ - --hash=sha256:c6595b0d8c8711e8e1dc389d52648b923b809f68ac1c6f0baa525c6440aa0daa \ - --hash=sha256:c8c6660089a25d45333cb9db56bb9e347241a6d7509838dbbd1931d0e19dbc7f \ - --hash=sha256:c9d469204abcca28926cbc28ce98f28e50e488767b084fb3fbdf21af11d3de26 \ - --hash=sha256:d38bbcef58220f9c81e42c255ef0bf99735d8f11edef69ab0b499da77105158a \ - --hash=sha256:d4eb77df2964b64ba190eee00b2312a1fd7a862af8918ec70fc2d6308f76ac64 \ - --hash=sha256:d63b7545d489422d417a0cae6f9898618669608750fc5e62156957e609e728a5 \ - --hash=sha256:d7050899026e708fb185e174c63ebc2c4ee7a0c17b0a96ebc50e1f76a231c057 \ - --hash=sha256:d79f1f2f7ebdb9b741296b69049ff44aedd95976bfee38eb4848820628a99b50 \ - --hash=sha256:d85463560c67fc65cd86153a4975d0b720b6d7725cf7ee0b2d291288433fc21b \ - --hash=sha256:d9140ded382a5b04a1c030b593ed9bf3088243a0a8b7fa9f071a5736498c5483 \ - --hash=sha256:d9b4916b21931b08096efed090327f8fe78e09ae8f5ad44e07f5c72a7eedb51b \ - --hash=sha256:df14f6332834444b4a37685810216cc8fe1fe91f447332cd56294c984ecbff1c \ - --hash=sha256:e49ce7dc9f925e1fb010fc3d555250139df61fa6e5a0a95ce356329602c11ea9 \ - --hash=sha256:e61eae9b31799c32c5f9b7be906be3380e699e74b2db26c227c50a5fc7988698 \ - --hash=sha256:ea053cefa008fda40f92aab937fb9f183cf8752e41dbc7bc68917884454c6362 \ - --hash=sha256:f06e21ad0b504658a3a9edd3d8530e8cea5723f6ea5d280e8db8efc625b47e49 \ - --hash=sha256:f14546403c2a1d11a130b537dda28f07eb6c1805a43dae4617448074fd49c282 \ - --hash=sha256:f1a5d8f18877474c80b7711d870db0eeef9442691fcdb00adabfc97e183ee0b0 \ - --hash=sha256:f2969e8f72c6236c51f91fbb79c33821d12a811e2a94b7aa59c65f8dbdfad34a \ - --hash=sha256:f468d520f47807d1eb5d27648393519655eadc578d5dd862d06873cce04c4d1b \ - --hash=sha256:f70dc00a91311a1aea124e5f64569ea44c011b58433981313202c46bccbec0e1 \ - --hash=sha256:f93255b3e4d64785554e544c1c76cd32f4a354fa79e2eeca5d16ac2e7fdd57aa +protobuf==4.25.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1a3ba712877e6d37013cdc3476040ea1e313a6c2e1580836a94f76b3c176d575 \ + --hash=sha256:1a53d6f64b00eecf53b65ff4a8c23dc95df1fa1e97bb06b8122e5a64f49fc90a \ + --hash=sha256:32ac2100b0e23412413d948c03060184d34a7c50b3e5d7524ee96ac2b10acf51 \ + --hash=sha256:5c1203ac9f50e4853b0a0bfffd32c67118ef552a33942982eeab543f5c634395 \ + --hash=sha256:63714e79b761a37048c9701a37438aa29945cd2417a97076048232c1df07b701 \ + --hash=sha256:683dc44c61f2620b32ce4927de2108f3ebe8ccf2fd716e1e684e5a50da154054 \ + --hash=sha256:68f7caf0d4f012fd194a301420cf6aa258366144d814f358c5b32558228afa7c \ + --hash=sha256:b2cf8b5d381f9378afe84618288b239e75665fe58d0f3fd5db400959274296e9 \ + --hash=sha256:c40ff8f00aa737938c5378d461637d15c442a12275a81019cc2fef06d81c9419 \ + --hash=sha256:cf21faba64cd2c9a3ed92b7a67f226296b10159dbb8fbc5e854fc90657d908e4 \ + --hash=sha256:d94a33db8b7ddbd0af7c467475fb9fde0c705fb315a8433c0e2020942b863a1f +psutil==5.9.6 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:10e8c17b4f898d64b121149afb136c53ea8b68c7531155147867b7b1ac9e7e28 \ + --hash=sha256:18cd22c5db486f33998f37e2bb054cc62fd06646995285e02a51b1e08da97017 \ + --hash=sha256:3ebf2158c16cc69db777e3c7decb3c0f43a7af94a60d72e87b2823aebac3d602 \ + --hash=sha256:51dc3d54607c73148f63732c727856f5febec1c7c336f8f41fcbd6315cce76ac \ + --hash=sha256:6e5fb8dc711a514da83098bc5234264e551ad980cec5f85dabf4d38ed6f15e9a \ + --hash=sha256:70cb3beb98bc3fd5ac9ac617a327af7e7f826373ee64c80efd4eb2856e5051e9 \ + --hash=sha256:748c9dd2583ed86347ed65d0035f45fa8c851e8d90354c122ab72319b5f366f4 \ + --hash=sha256:91ecd2d9c00db9817a4b4192107cf6954addb5d9d67a969a4f436dbc9200f88c \ + --hash=sha256:92e0cc43c524834af53e9d3369245e6cc3b130e78e26100d1f63cdb0abeb3d3c \ + --hash=sha256:a6f01f03bf1843280f4ad16f4bde26b817847b4c1a0db59bf6419807bc5ce05c \ + --hash=sha256:c69596f9fc2f8acd574a12d5f8b7b1ba3765a641ea5d60fb4736bf3c08a8214a \ + --hash=sha256:ca2780f5e038379e520281e4c032dddd086906ddff9ef0d1b9dcf00710e5071c \ + --hash=sha256:daecbcbd29b289aac14ece28eca6a3e60aa361754cf6da3dfb20d4d32b6c7f57 \ + --hash=sha256:e4b92ddcd7dd4cdd3f900180ea1e104932c7bce234fb88976e2a3b296441225a \ + --hash=sha256:fb8a697f11b0f5994550555fcfe3e69799e5b060c8ecf9e2f75c69302cc35c0d \ + --hash=sha256:ff18b8d1a784b810df0b0fff3bcb50ab941c3b8e2c8de5726f9c71c601c611aa +psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ + --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ + --hash=sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3 \ + --hash=sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa \ + --hash=sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a \ + --hash=sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693 \ + --hash=sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372 \ + --hash=sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e \ + --hash=sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59 \ + --hash=sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156 \ + --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ + --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ + --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c +py==1.11.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719 \ + --hash=sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378 +pydantic-core==2.10.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:042462d8d6ba707fd3ce9649e7bf268633a41018d6a998fb5fbacb7e928a183e \ + --hash=sha256:0523aeb76e03f753b58be33b26540880bac5aa54422e4462404c432230543f33 \ + --hash=sha256:05560ab976012bf40f25d5225a58bfa649bb897b87192a36c6fef1ab132540d7 \ + --hash=sha256:0675ba5d22de54d07bccde38997e780044dcfa9a71aac9fd7d4d7a1d2e3e65f7 \ + --hash=sha256:073d4a470b195d2b2245d0343569aac7e979d3a0dcce6c7d2af6d8a920ad0bea \ + --hash=sha256:07ec6d7d929ae9c68f716195ce15e745b3e8fa122fc67698ac6498d802ed0fa4 \ + --hash=sha256:0880e239827b4b5b3e2ce05e6b766a7414e5f5aedc4523be6b68cfbc7f61c5d0 \ + --hash=sha256:0c27f38dc4fbf07b358b2bc90edf35e82d1703e22ff2efa4af4ad5de1b3833e7 \ + --hash=sha256:0d8a8adef23d86d8eceed3e32e9cca8879c7481c183f84ed1a8edc7df073af94 \ + --hash=sha256:0e2a35baa428181cb2270a15864ec6286822d3576f2ed0f4cd7f0c1708472aff \ + --hash=sha256:0f8682dbdd2f67f8e1edddcbffcc29f60a6182b4901c367fc8c1c40d30bb0a82 \ + --hash=sha256:0fa467fd300a6f046bdb248d40cd015b21b7576c168a6bb20aa22e595c8ffcdd \ + --hash=sha256:128552af70a64660f21cb0eb4876cbdadf1a1f9d5de820fed6421fa8de07c893 \ + --hash=sha256:1396e81b83516b9d5c9e26a924fa69164156c148c717131f54f586485ac3c15e \ + --hash=sha256:149b8a07712f45b332faee1a2258d8ef1fb4a36f88c0c17cb687f205c5dc6e7d \ + --hash=sha256:14ac492c686defc8e6133e3a2d9eaf5261b3df26b8ae97450c1647286750b901 \ + --hash=sha256:14cfbb00959259e15d684505263d5a21732b31248a5dd4941f73a3be233865b9 \ + --hash=sha256:14e09ff0b8fe6e46b93d36a878f6e4a3a98ba5303c76bb8e716f4878a3bee92c \ + --hash=sha256:154ea7c52e32dce13065dbb20a4a6f0cc012b4f667ac90d648d36b12007fa9f7 \ + --hash=sha256:15d6bca84ffc966cc9976b09a18cf9543ed4d4ecbd97e7086f9ce9327ea48891 \ + --hash=sha256:1d40f55222b233e98e3921df7811c27567f0e1a4411b93d4c5c0f4ce131bc42f \ + --hash=sha256:25bd966103890ccfa028841a8f30cebcf5875eeac8c4bde4fe221364c92f0c9a \ + --hash=sha256:2cf5bb4dd67f20f3bbc1209ef572a259027c49e5ff694fa56bed62959b41e1f9 \ + --hash=sha256:2e0e2959ef5d5b8dc9ef21e1a305a21a36e254e6a34432d00c72a92fdc5ecda5 \ + --hash=sha256:320f14bd4542a04ab23747ff2c8a778bde727158b606e2661349557f0770711e \ + --hash=sha256:3625578b6010c65964d177626fde80cf60d7f2e297d56b925cb5cdeda6e9925a \ + --hash=sha256:39215d809470f4c8d1881758575b2abfb80174a9e8daf8f33b1d4379357e417c \ + --hash=sha256:3f0ac9fb8608dbc6eaf17956bf623c9119b4db7dbb511650910a82e261e6600f \ + --hash=sha256:417243bf599ba1f1fef2bb8c543ceb918676954734e2dcb82bf162ae9d7bd514 \ + --hash=sha256:420a692b547736a8d8703c39ea935ab5d8f0d2573f8f123b0a294e49a73f214b \ + --hash=sha256:443fed67d33aa85357464f297e3d26e570267d1af6fef1c21ca50921d2976302 \ + --hash=sha256:48525933fea744a3e7464c19bfede85df4aba79ce90c60b94d8b6e1eddd67096 \ + --hash=sha256:485a91abe3a07c3a8d1e082ba29254eea3e2bb13cbbd4351ea4e5a21912cc9b0 \ + --hash=sha256:4a5be350f922430997f240d25f8219f93b0c81e15f7b30b868b2fddfc2d05f27 \ + --hash=sha256:4d966c47f9dd73c2d32a809d2be529112d509321c5310ebf54076812e6ecd884 \ + --hash=sha256:524ff0ca3baea164d6d93a32c58ac79eca9f6cf713586fdc0adb66a8cdeab96a \ + --hash=sha256:53df009d1e1ba40f696f8995683e067e3967101d4bb4ea6f667931b7d4a01357 \ + --hash=sha256:5994985da903d0b8a08e4935c46ed8daf5be1cf217489e673910951dc533d430 \ + --hash=sha256:5cabb9710f09d5d2e9e2748c3e3e20d991a4c5f96ed8f1132518f54ab2967221 \ + --hash=sha256:5fdb39f67c779b183b0c853cd6b45f7db84b84e0571b3ef1c89cdb1dfc367325 \ + --hash=sha256:600d04a7b342363058b9190d4e929a8e2e715c5682a70cc37d5ded1e0dd370b4 \ + --hash=sha256:631cb7415225954fdcc2a024119101946793e5923f6c4d73a5914d27eb3d3a05 \ + --hash=sha256:63974d168b6233b4ed6a0046296803cb13c56637a7b8106564ab575926572a55 \ + --hash=sha256:64322bfa13e44c6c30c518729ef08fda6026b96d5c0be724b3c4ae4da939f875 \ + --hash=sha256:655f8f4c8d6a5963c9a0687793da37b9b681d9ad06f29438a3b2326d4e6b7970 \ + --hash=sha256:6835451b57c1b467b95ffb03a38bb75b52fb4dc2762bb1d9dbed8de31ea7d0fc \ + --hash=sha256:6db2eb9654a85ada248afa5a6db5ff1cf0f7b16043a6b070adc4a5be68c716d6 \ + --hash=sha256:7c4d1894fe112b0864c1fa75dffa045720a194b227bed12f4be7f6045b25209f \ + --hash=sha256:7eb037106f5c6b3b0b864ad226b0b7ab58157124161d48e4b30c4a43fef8bc4b \ + --hash=sha256:8282bab177a9a3081fd3d0a0175a07a1e2bfb7fcbbd949519ea0980f8a07144d \ + --hash=sha256:82f55187a5bebae7d81d35b1e9aaea5e169d44819789837cdd4720d768c55d15 \ + --hash=sha256:8572cadbf4cfa95fb4187775b5ade2eaa93511f07947b38f4cd67cf10783b118 \ + --hash=sha256:8cdbbd92154db2fec4ec973d45c565e767ddc20aa6dbaf50142676484cbff8ee \ + --hash=sha256:8f6e6aed5818c264412ac0598b581a002a9f050cb2637a84979859e70197aa9e \ + --hash=sha256:92f675fefa977625105708492850bcbc1182bfc3e997f8eecb866d1927c98ae6 \ + --hash=sha256:962ed72424bf1f72334e2f1e61b68f16c0e596f024ca7ac5daf229f7c26e4208 \ + --hash=sha256:9badf8d45171d92387410b04639d73811b785b5161ecadabf056ea14d62d4ede \ + --hash=sha256:9c120c9ce3b163b985a3b966bb701114beb1da4b0468b9b236fc754783d85aa3 \ + --hash=sha256:9f6f3e2598604956480f6c8aa24a3384dbf6509fe995d97f6ca6103bb8c2534e \ + --hash=sha256:a1254357f7e4c82e77c348dabf2d55f1d14d19d91ff025004775e70a6ef40ada \ + --hash=sha256:a1392e0638af203cee360495fd2cfdd6054711f2db5175b6e9c3c461b76f5175 \ + --hash=sha256:a1c311fd06ab3b10805abb72109f01a134019739bd3286b8ae1bc2fc4e50c07a \ + --hash=sha256:a5cb87bdc2e5f620693148b5f8f842d293cae46c5f15a1b1bf7ceeed324a740c \ + --hash=sha256:a7a7902bf75779bc12ccfc508bfb7a4c47063f748ea3de87135d433a4cca7a2f \ + --hash=sha256:aad7bd686363d1ce4ee930ad39f14e1673248373f4a9d74d2b9554f06199fb58 \ + --hash=sha256:aafdb89fdeb5fe165043896817eccd6434aee124d5ee9b354f92cd574ba5e78f \ + --hash=sha256:ae8a8843b11dc0b03b57b52793e391f0122e740de3df1474814c700d2622950a \ + --hash=sha256:b00bc4619f60c853556b35f83731bd817f989cba3e97dc792bb8c97941b8053a \ + --hash=sha256:b1f22a9ab44de5f082216270552aa54259db20189e68fc12484873d926426921 \ + --hash=sha256:b3c01c2fb081fced3bbb3da78510693dc7121bb893a1f0f5f4b48013201f362e \ + --hash=sha256:b3dcd587b69bbf54fc04ca157c2323b8911033e827fffaecf0cafa5a892a0904 \ + --hash=sha256:b4a6db486ac8e99ae696e09efc8b2b9fea67b63c8f88ba7a1a16c24a057a0776 \ + --hash=sha256:bec7dd208a4182e99c5b6c501ce0b1f49de2802448d4056091f8e630b28e9a52 \ + --hash=sha256:c0877239307b7e69d025b73774e88e86ce82f6ba6adf98f41069d5b0b78bd1bf \ + --hash=sha256:caa48fc31fc7243e50188197b5f0c4228956f97b954f76da157aae7f67269ae8 \ + --hash=sha256:cfe1090245c078720d250d19cb05d67e21a9cd7c257698ef139bc41cf6c27b4f \ + --hash=sha256:d43002441932f9a9ea5d6f9efaa2e21458221a3a4b417a14027a1d530201ef1b \ + --hash=sha256:d64728ee14e667ba27c66314b7d880b8eeb050e58ffc5fec3b7a109f8cddbd63 \ + --hash=sha256:d6495008733c7521a89422d7a68efa0a0122c99a5861f06020ef5b1f51f9ba7c \ + --hash=sha256:d8f1ebca515a03e5654f88411420fea6380fc841d1bea08effb28184e3d4899f \ + --hash=sha256:d99277877daf2efe074eae6338453a4ed54a2d93fb4678ddfe1209a0c93a2468 \ + --hash=sha256:da01bec0a26befab4898ed83b362993c844b9a607a86add78604186297eb047e \ + --hash=sha256:db9a28c063c7c00844ae42a80203eb6d2d6bbb97070cfa00194dff40e6f545ab \ + --hash=sha256:dda81e5ec82485155a19d9624cfcca9be88a405e2857354e5b089c2a982144b2 \ + --hash=sha256:e357571bb0efd65fd55f18db0a2fb0ed89d0bb1d41d906b138f088933ae618bb \ + --hash=sha256:e544246b859f17373bed915182ab841b80849ed9cf23f1f07b73b7c58baee5fb \ + --hash=sha256:e562617a45b5a9da5be4abe72b971d4f00bf8555eb29bb91ec2ef2be348cd132 \ + --hash=sha256:e570ffeb2170e116a5b17e83f19911020ac79d19c96f320cbfa1fa96b470185b \ + --hash=sha256:e6f31a17acede6a8cd1ae2d123ce04d8cca74056c9d456075f4f6f85de055607 \ + --hash=sha256:e9121b4009339b0f751955baf4543a0bfd6bc3f8188f8056b1a25a2d45099934 \ + --hash=sha256:ebedb45b9feb7258fac0a268a3f6bec0a2ea4d9558f3d6f813f02ff3a6dc6698 \ + --hash=sha256:ecaac27da855b8d73f92123e5f03612b04c5632fd0a476e469dfc47cd37d6b2e \ + --hash=sha256:ecdbde46235f3d560b18be0cb706c8e8ad1b965e5c13bbba7450c86064e96561 \ + --hash=sha256:ed550ed05540c03f0e69e6d74ad58d026de61b9eaebebbaaf8873e585cbb18de \ + --hash=sha256:eeb3d3d6b399ffe55f9a04e09e635554012f1980696d6b0aca3e6cf42a17a03b \ + --hash=sha256:ef337945bbd76cce390d1b2496ccf9f90b1c1242a3a7bc242ca4a9fc5993427a \ + --hash=sha256:f1365e032a477c1430cfe0cf2856679529a2331426f8081172c4a74186f1d595 \ + --hash=sha256:f23b55eb5464468f9e0e9a9935ce3ed2a870608d5f534025cd5536bca25b1402 \ + --hash=sha256:f2e9072d71c1f6cfc79a36d4484c82823c560e6f5599c43c1ca6b5cdbd54f881 \ + --hash=sha256:f323306d0556351735b54acbf82904fe30a27b6a7147153cbe6e19aaaa2aa429 \ + --hash=sha256:f36a3489d9e28fe4b67be9992a23029c3cec0babc3bd9afb39f49844a8c721c5 \ + --hash=sha256:f64f82cc3443149292b32387086d02a6c7fb39b8781563e0ca7b8d7d9cf72bd7 \ + --hash=sha256:f6defd966ca3b187ec6c366604e9296f585021d922e666b99c47e78738b5666c \ + --hash=sha256:f7c2b8eb9fc872e68b46eeaf835e86bccc3a58ba57d0eedc109cbb14177be531 \ + --hash=sha256:fa7db7558607afeccb33c0e4bf1c9a9a835e26599e76af6fe2fcea45904083a6 \ + --hash=sha256:fcb83175cc4936a5425dde3356f079ae03c0802bbdf8ff82c035f8a54b333521 pydantic-settings==2.0.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:962dc3672495aad6ae96a4390fac7e593591e144625e5112d359f8f67fb75945 \ --hash=sha256:ddd907b066622bd67603b75e2ff791875540dc485b7307c4fffc015719da8625 -pydantic==2.3.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1607cc106602284cd4a00882986570472f193fde9cb1259bceeaedb26aa79a6d \ - --hash=sha256:45b5e446c6dfaad9444819a293b921a40e1db1aa61ea08aede0522529ce90e81 -pylint==2.17.5 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:73995fb8216d3bed149c8d51bba25b2c52a8251a2c8ac846ec668ce38fab5413 \ - --hash=sha256:f7b601cbc06fef7e62a754e2b41294c2aa31f1cb659624b9a85bcba29eaf8252 +pydantic==2.4.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:94f336138093a5d7f426aac732dcfe7ab4eb4da243c88f891d65deb4a2556ee7 \ + --hash=sha256:bc3ddf669d234f4220e6e1c4d96b061abe0998185a8d7855c0126782b7abc8c1 +pylint==2.17.7 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87 \ + --hash=sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad pytest-cov==4.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6 \ --hash=sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a -pytest==7.4.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32 \ - --hash=sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a +pytest==7.4.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac \ + --hash=sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5 python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 @@ -748,72 +773,83 @@ python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 +retry==0.9.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:ccddf89761fa2c726ab29391837d4327f819ea14d244c232a1d24c67a2f98606 \ + --hash=sha256:f8bfa8b99b69c4506d6f5bd3b0aabf77f98cdb17f3c9fc3f5ca820033336fba4 rfc3986[idna2008]==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835 \ --hash=sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97 -setuptools==68.1.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3d4dfa6d95f1b101d695a6160a7626e15583af71a5f52176efa5d39a054d475d \ - --hash=sha256:3d8083eed2d13afc9426f227b24fd1659489ec107c0e86cec2ffdde5c92e790b +setuptools==68.2.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87 \ + --hash=sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -sqlalchemy==2.0.20 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1506e988ebeaaf316f183da601f24eedd7452e163010ea63dbe52dc91c7fc70e \ - --hash=sha256:1a58052b5a93425f656675673ef1f7e005a3b72e3f2c91b8acca1b27ccadf5f4 \ - --hash=sha256:1b74eeafaa11372627ce94e4dc88a6751b2b4d263015b3523e2b1e57291102f0 \ - --hash=sha256:1be86ccea0c965a1e8cd6ccf6884b924c319fcc85765f16c69f1ae7148eba64b \ - --hash=sha256:1d35d49a972649b5080557c603110620a86aa11db350d7a7cb0f0a3f611948a0 \ - --hash=sha256:243d0fb261f80a26774829bc2cee71df3222587ac789b7eaf6555c5b15651eed \ - --hash=sha256:26a3399eaf65e9ab2690c07bd5cf898b639e76903e0abad096cd609233ce5208 \ - --hash=sha256:27d554ef5d12501898d88d255c54eef8414576f34672e02fe96d75908993cf53 \ - --hash=sha256:3364b7066b3c7f4437dd345d47271f1251e0cfb0aba67e785343cdbdb0fff08c \ - --hash=sha256:3423dc2a3b94125094897118b52bdf4d37daf142cbcf26d48af284b763ab90e9 \ - --hash=sha256:3c6aceebbc47db04f2d779db03afeaa2c73ea3f8dcd3987eb9efdb987ffa09a3 \ - --hash=sha256:3ce5e81b800a8afc870bb8e0a275d81957e16f8c4b62415a7b386f29a0cb9763 \ - --hash=sha256:411e7f140200c02c4b953b3dbd08351c9f9818d2bd591b56d0fa0716bd014f1e \ - --hash=sha256:4cde2e1096cbb3e62002efdb7050113aa5f01718035ba9f29f9d89c3758e7e4e \ - --hash=sha256:5768c268df78bacbde166b48be788b83dddaa2a5974b8810af422ddfe68a9bc8 \ - --hash=sha256:599ccd23a7146e126be1c7632d1d47847fa9f333104d03325c4e15440fc7d927 \ - --hash=sha256:5ed61e3463021763b853628aef8bc5d469fe12d95f82c74ef605049d810f3267 \ - --hash=sha256:63a368231c53c93e2b67d0c5556a9836fdcd383f7e3026a39602aad775b14acf \ - --hash=sha256:63e73da7fb030ae0a46a9ffbeef7e892f5def4baf8064786d040d45c1d6d1dc5 \ - --hash=sha256:6eb6d77c31e1bf4268b4d61b549c341cbff9842f8e115ba6904249c20cb78a61 \ - --hash=sha256:6f8a934f9dfdf762c844e5164046a9cea25fabbc9ec865c023fe7f300f11ca4a \ - --hash=sha256:6fe7d61dc71119e21ddb0094ee994418c12f68c61b3d263ebaae50ea8399c4d4 \ - --hash=sha256:759b51346aa388c2e606ee206c0bc6f15a5299f6174d1e10cadbe4530d3c7a98 \ - --hash=sha256:76fdfc0f6f5341987474ff48e7a66c3cd2b8a71ddda01fa82fedb180b961630a \ - --hash=sha256:77d37c1b4e64c926fa3de23e8244b964aab92963d0f74d98cbc0783a9e04f501 \ - --hash=sha256:79543f945be7a5ada9943d555cf9b1531cfea49241809dd1183701f94a748624 \ - --hash=sha256:79fde625a0a55220d3624e64101ed68a059c1c1f126c74f08a42097a72ff66a9 \ - --hash=sha256:7d3f175410a6db0ad96b10bfbb0a5530ecd4fcf1e2b5d83d968dd64791f810ed \ - --hash=sha256:8dd77fd6648b677d7742d2c3cc105a66e2681cc5e5fb247b88c7a7b78351cf74 \ - --hash=sha256:a3f0dd6d15b6dc8b28a838a5c48ced7455c3e1fb47b89da9c79cc2090b072a50 \ - --hash=sha256:bcb04441f370cbe6e37c2b8d79e4af9e4789f626c595899d94abebe8b38f9a4d \ - --hash=sha256:c3d99ba99007dab8233f635c32b5cd24fb1df8d64e17bc7df136cedbea427897 \ - --hash=sha256:ca8a5ff2aa7f3ade6c498aaafce25b1eaeabe4e42b73e25519183e4566a16fc6 \ - --hash=sha256:cb0d3e94c2a84215532d9bcf10229476ffd3b08f481c53754113b794afb62d14 \ - --hash=sha256:d1b09ba72e4e6d341bb5bdd3564f1cea6095d4c3632e45dc69375a1dbe4e26ec \ - --hash=sha256:d32b5ffef6c5bcb452723a496bad2d4c52b346240c59b3e6dba279f6dcc06c14 \ - --hash=sha256:d3793dcf5bc4d74ae1e9db15121250c2da476e1af8e45a1d9a52b1513a393459 \ - --hash=sha256:dd81466bdbc82b060c3c110b2937ab65ace41dfa7b18681fdfad2f37f27acdd7 \ - --hash=sha256:e4e571af672e1bb710b3cc1a9794b55bce1eae5aed41a608c0401885e3491179 \ - --hash=sha256:ea8186be85da6587456c9ddc7bf480ebad1a0e6dcbad3967c4821233a4d4df57 \ - --hash=sha256:eefebcc5c555803065128401a1e224a64607259b5eb907021bf9b175f315d2a6 +sqlalchemy==2.0.23 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0666031df46b9badba9bed00092a1ffa3aa063a5e68fa244acd9f08070e936d3 \ + --hash=sha256:0a8c6aa506893e25a04233bc721c6b6cf844bafd7250535abb56cb6cc1368884 \ + --hash=sha256:0e680527245895aba86afbd5bef6c316831c02aa988d1aad83c47ffe92655e74 \ + --hash=sha256:14aebfe28b99f24f8a4c1346c48bc3d63705b1f919a24c27471136d2f219f02d \ + --hash=sha256:1e018aba8363adb0599e745af245306cb8c46b9ad0a6fc0a86745b6ff7d940fc \ + --hash=sha256:227135ef1e48165f37590b8bfc44ed7ff4c074bf04dc8d6f8e7f1c14a94aa6ca \ + --hash=sha256:31952bbc527d633b9479f5f81e8b9dfada00b91d6baba021a869095f1a97006d \ + --hash=sha256:3e983fa42164577d073778d06d2cc5d020322425a509a08119bdcee70ad856bf \ + --hash=sha256:42d0b0290a8fb0165ea2c2781ae66e95cca6e27a2fbe1016ff8db3112ac1e846 \ + --hash=sha256:42ede90148b73fe4ab4a089f3126b2cfae8cfefc955c8174d697bb46210c8306 \ + --hash=sha256:4895a63e2c271ffc7a81ea424b94060f7b3b03b4ea0cd58ab5bb676ed02f4221 \ + --hash=sha256:4af79c06825e2836de21439cb2a6ce22b2ca129bad74f359bddd173f39582bf5 \ + --hash=sha256:5f94aeb99f43729960638e7468d4688f6efccb837a858b34574e01143cf11f89 \ + --hash=sha256:616fe7bcff0a05098f64b4478b78ec2dfa03225c23734d83d6c169eb41a93e55 \ + --hash=sha256:62d9e964870ea5ade4bc870ac4004c456efe75fb50404c03c5fd61f8bc669a72 \ + --hash=sha256:638c2c0b6b4661a4fd264f6fb804eccd392745c5887f9317feb64bb7cb03b3ea \ + --hash=sha256:63bfc3acc970776036f6d1d0e65faa7473be9f3135d37a463c5eba5efcdb24c8 \ + --hash=sha256:6463aa765cf02b9247e38b35853923edbf2f6fd1963df88706bc1d02410a5577 \ + --hash=sha256:64ac935a90bc479fee77f9463f298943b0e60005fe5de2aa654d9cdef46c54df \ + --hash=sha256:683ef58ca8eea4747737a1c35c11372ffeb84578d3aab8f3e10b1d13d66f2bc4 \ + --hash=sha256:75eefe09e98043cff2fb8af9796e20747ae870c903dc61d41b0c2e55128f958d \ + --hash=sha256:787af80107fb691934a01889ca8f82a44adedbf5ef3d6ad7d0f0b9ac557e0c34 \ + --hash=sha256:7c424983ab447dab126c39d3ce3be5bee95700783204a72549c3dceffe0fc8f4 \ + --hash=sha256:7e0dc9031baa46ad0dd5a269cb7a92a73284d1309228be1d5935dac8fb3cae24 \ + --hash=sha256:87a3d6b53c39cd173990de2f5f4b83431d534a74f0e2f88bd16eabb5667e65c6 \ + --hash=sha256:89a01238fcb9a8af118eaad3ffcc5dedaacbd429dc6fdc43fe430d3a941ff965 \ + --hash=sha256:9585b646ffb048c0250acc7dad92536591ffe35dba624bb8fd9b471e25212a35 \ + --hash=sha256:964971b52daab357d2c0875825e36584d58f536e920f2968df8d581054eada4b \ + --hash=sha256:967c0b71156f793e6662dd839da54f884631755275ed71f1539c95bbada9aaab \ + --hash=sha256:9ca922f305d67605668e93991aaf2c12239c78207bca3b891cd51a4515c72e22 \ + --hash=sha256:a86cb7063e2c9fb8e774f77fbf8475516d270a3e989da55fa05d08089d77f8c4 \ + --hash=sha256:aeb397de65a0a62f14c257f36a726945a7f7bb60253462e8602d9b97b5cbe204 \ + --hash=sha256:b41f5d65b54cdf4934ecede2f41b9c60c9f785620416e8e6c48349ab18643855 \ + --hash=sha256:bd45a5b6c68357578263d74daab6ff9439517f87da63442d244f9f23df56138d \ + --hash=sha256:c14eba45983d2f48f7546bb32b47937ee2cafae353646295f0e99f35b14286ab \ + --hash=sha256:c1bda93cbbe4aa2aa0aa8655c5aeda505cd219ff3e8da91d1d329e143e4aff69 \ + --hash=sha256:c4722f3bc3c1c2fcc3702dbe0016ba31148dd6efcd2a2fd33c1b4897c6a19693 \ + --hash=sha256:c80c38bd2ea35b97cbf7c21aeb129dcbebbf344ee01a7141016ab7b851464f8e \ + --hash=sha256:cabafc7837b6cec61c0e1e5c6d14ef250b675fa9c3060ed8a7e38653bd732ff8 \ + --hash=sha256:cc1d21576f958c42d9aec68eba5c1a7d715e5fc07825a629015fe8e3b0657fb0 \ + --hash=sha256:d0f7fb0c7527c41fa6fcae2be537ac137f636a41b4c5a4c58914541e2f436b45 \ + --hash=sha256:d4041ad05b35f1f4da481f6b811b4af2f29e83af253bf37c3c4582b2c68934ab \ + --hash=sha256:d5578e6863eeb998980c212a39106ea139bdc0b3f73291b96e27c929c90cd8e1 \ + --hash=sha256:e3b5036aa326dc2df50cba3c958e29b291a80f604b1afa4c8ce73e78e1c9f01d \ + --hash=sha256:e599a51acf3cc4d31d1a0cf248d8f8d863b6386d2b6782c5074427ebb7803bda \ + --hash=sha256:f3420d00d2cb42432c1d0e44540ae83185ccbbc67a6054dcc8ab5387add6620b \ + --hash=sha256:f48ed89dd11c3c586f45e9eec1e437b355b3b6f6884ea4a4c3111a3358fd0c18 \ + --hash=sha256:f508ba8f89e0a5ecdfd3761f82dda2a3d7b678a626967608f4273e0dba8f07ac \ + --hash=sha256:fd54601ef9cc455a0c61e5245f690c8a3ad67ddb03d3b91c361d076def0b4c60 starlette==0.27.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:6a6b0d042acb8d469a01eba54e9cda6cbd24ac602c4cd016723117d6a7e73b75 \ --hash=sha256:918416370e846586541235ccd38a474c08b80443ed31c578a418e2209b3eef91 tomli==2.0.1 ; python_version >= "3.8" and python_full_version <= "3.11.0a6" \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f -tomlkit==0.12.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:38e1ff8edb991273ec9f6181244a6a391ac30e9f5098e7535640ea6be97a7c86 \ - --hash=sha256:712cbd236609acc6a3e2e97253dfc52d4c2082982a88f61b640ecf0817eab899 -typing-extensions==4.7.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36 \ - --hash=sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2 +tomlkit==0.12.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:df32fab589a81f0d7dc525a4267b6d7a64ee99619cbd1eeb0fae32c1dd426977 \ + --hash=sha256:eeea7ac7563faeab0a1ed8fe12c2e5a51c61f933f2502f7e9db0241a65163ad0 +typing-extensions==4.8.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0 \ + --hash=sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef urllib3==2.0.7 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84 \ --hash=sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e @@ -896,6 +932,6 @@ wrapt==1.15.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09 \ --hash=sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559 \ --hash=sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639 -zipp==3.16.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0 \ - --hash=sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147 +zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ + --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/mula/requirements.txt b/mula/requirements.txt index 134768c17a1..4801341b3de 100644 --- a/mula/requirements.txt +++ b/mula/requirements.txt @@ -1,12 +1,12 @@ -alembic==1.11.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3db4ce81a9072e1b5aa44c2d202add24553182672a12daf21608d6f62a8f9cf9 \ - --hash=sha256:d6c96c2482740592777c400550a523bc7a9aada4e210cae2e733354ddae6f6f8 -annotated-types==0.5.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:47cdc3490d9ac1506ce92c7aaa76c579dc3509ff11e098fc867e5130ab7be802 \ - --hash=sha256:58da39888f92c276ad970249761ebea80ba544b77acddaa1a4d6cf78287d45fd -anyio==3.7.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780 \ - --hash=sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5 +alembic==1.12.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:47d52e3dfb03666ed945becb723d6482e52190917fdb47071440cfdba05d92cb \ + --hash=sha256:bca5877e9678b454706347bc10b97cb7d67f300320fa5c3a94423e8266e2823f +annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ + --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d +anyio==4.0.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f \ + --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed @@ -16,88 +16,100 @@ backoff==2.2.1 ; python_version >= "3.8" and python_version < "4.0" \ certifi==2023.7.22 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 \ --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9 -charset-normalizer==3.2.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96 \ - --hash=sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c \ - --hash=sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710 \ - --hash=sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706 \ - --hash=sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020 \ - --hash=sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252 \ - --hash=sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad \ - --hash=sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329 \ - --hash=sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a \ - --hash=sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f \ - --hash=sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6 \ - --hash=sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4 \ - --hash=sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a \ - --hash=sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46 \ - --hash=sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2 \ - --hash=sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23 \ - --hash=sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace \ - --hash=sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd \ - --hash=sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982 \ - --hash=sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10 \ - --hash=sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2 \ - --hash=sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea \ - --hash=sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09 \ - --hash=sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5 \ - --hash=sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149 \ - --hash=sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489 \ - --hash=sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9 \ - --hash=sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80 \ - --hash=sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592 \ - --hash=sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3 \ - --hash=sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6 \ - --hash=sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed \ - --hash=sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c \ - --hash=sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200 \ - --hash=sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a \ - --hash=sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e \ - --hash=sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d \ - --hash=sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6 \ - --hash=sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623 \ - --hash=sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669 \ - --hash=sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3 \ - --hash=sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa \ - --hash=sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9 \ - --hash=sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2 \ - --hash=sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f \ - --hash=sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1 \ - --hash=sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4 \ - --hash=sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a \ - --hash=sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8 \ - --hash=sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3 \ - --hash=sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029 \ - --hash=sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f \ - --hash=sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959 \ - --hash=sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22 \ - --hash=sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7 \ - --hash=sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952 \ - --hash=sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346 \ - --hash=sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e \ - --hash=sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d \ - --hash=sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299 \ - --hash=sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd \ - --hash=sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a \ - --hash=sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3 \ - --hash=sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037 \ - --hash=sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94 \ - --hash=sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c \ - --hash=sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858 \ - --hash=sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a \ - --hash=sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449 \ - --hash=sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c \ - --hash=sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918 \ - --hash=sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1 \ - --hash=sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c \ - --hash=sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac \ - --hash=sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa -click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ - --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" and platform_system == "Windows" \ - --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ - --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 +charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ + --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ + --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ + --hash=sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8 \ + --hash=sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09 \ + --hash=sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185 \ + --hash=sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574 \ + --hash=sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e \ + --hash=sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519 \ + --hash=sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898 \ + --hash=sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269 \ + --hash=sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3 \ + --hash=sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f \ + --hash=sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6 \ + --hash=sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8 \ + --hash=sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a \ + --hash=sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73 \ + --hash=sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc \ + --hash=sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714 \ + --hash=sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2 \ + --hash=sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc \ + --hash=sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce \ + --hash=sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d \ + --hash=sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e \ + --hash=sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6 \ + --hash=sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269 \ + --hash=sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96 \ + --hash=sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d \ + --hash=sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a \ + --hash=sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4 \ + --hash=sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77 \ + --hash=sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d \ + --hash=sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0 \ + --hash=sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed \ + --hash=sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068 \ + --hash=sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac \ + --hash=sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25 \ + --hash=sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8 \ + --hash=sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab \ + --hash=sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26 \ + --hash=sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2 \ + --hash=sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db \ + --hash=sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f \ + --hash=sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5 \ + --hash=sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99 \ + --hash=sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c \ + --hash=sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d \ + --hash=sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811 \ + --hash=sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa \ + --hash=sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a \ + --hash=sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03 \ + --hash=sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b \ + --hash=sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04 \ + --hash=sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c \ + --hash=sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001 \ + --hash=sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458 \ + --hash=sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389 \ + --hash=sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99 \ + --hash=sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985 \ + --hash=sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537 \ + --hash=sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238 \ + --hash=sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f \ + --hash=sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d \ + --hash=sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796 \ + --hash=sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a \ + --hash=sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143 \ + --hash=sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8 \ + --hash=sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c \ + --hash=sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5 \ + --hash=sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5 \ + --hash=sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711 \ + --hash=sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4 \ + --hash=sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6 \ + --hash=sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c \ + --hash=sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7 \ + --hash=sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4 \ + --hash=sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b \ + --hash=sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae \ + --hash=sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12 \ + --hash=sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c \ + --hash=sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae \ + --hash=sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8 \ + --hash=sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887 \ + --hash=sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b \ + --hash=sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4 \ + --hash=sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f \ + --hash=sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5 \ + --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ + --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ + --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 +decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ + --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 @@ -107,128 +119,131 @@ exceptiongroup==1.1.3 ; python_version >= "3.8" and python_version < "3.11" \ fastapi==0.101.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:7b32000d14ca9992f7461117b81e4ef9ff0c07936af641b4fe40e67d5f9d63cb \ --hash=sha256:aef5f8676eb1b8389952e1fe734abe20f04b71f6936afcc53b320ba79b686a4b -googleapis-common-protos==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:69f9bbcc6acde92cab2db95ce30a70bd2b81d20b12eff3f1aabaffcbe8a93918 \ - --hash=sha256:e73ebb404098db405ba95d1e1ae0aa91c3e15a71da031a2eeb6b2e23e7bc3708 -greenlet==2.0.2 ; python_version >= "3.8" and python_version < "4.0" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") \ - --hash=sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a \ - --hash=sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a \ - --hash=sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43 \ - --hash=sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33 \ - --hash=sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8 \ - --hash=sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088 \ - --hash=sha256:2780572ec463d44c1d3ae850239508dbeb9fed38e294c68d19a24d925d9223ca \ - --hash=sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343 \ - --hash=sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645 \ - --hash=sha256:2dd11f291565a81d71dab10b7033395b7a3a5456e637cf997a6f33ebdf06f8db \ - --hash=sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df \ - --hash=sha256:32e5b64b148966d9cccc2c8d35a671409e45f195864560829f395a54226408d3 \ - --hash=sha256:36abbf031e1c0f79dd5d596bfaf8e921c41df2bdf54ee1eed921ce1f52999a86 \ - --hash=sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2 \ - --hash=sha256:3a51c9751078733d88e013587b108f1b7a1fb106d402fb390740f002b6f6551a \ - --hash=sha256:3c9b12575734155d0c09d6c3e10dbd81665d5c18e1a7c6597df72fd05990c8cf \ - --hash=sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7 \ - --hash=sha256:4b58adb399c4d61d912c4c331984d60eb66565175cdf4a34792cd9600f21b394 \ - --hash=sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40 \ - --hash=sha256:5454276c07d27a740c5892f4907c86327b632127dd9abec42ee62e12427ff7e3 \ - --hash=sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6 \ - --hash=sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74 \ - --hash=sha256:703f18f3fda276b9a916f0934d2fb6d989bf0b4fb5a64825260eb9bfd52d78f0 \ - --hash=sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3 \ - --hash=sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91 \ - --hash=sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5 \ - --hash=sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9 \ - --hash=sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8 \ - --hash=sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b \ - --hash=sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6 \ - --hash=sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb \ - --hash=sha256:937e9020b514ceedb9c830c55d5c9872abc90f4b5862f89c0887033ae33c6f73 \ - --hash=sha256:94c817e84245513926588caf1152e3b559ff794d505555211ca041f032abbb6b \ - --hash=sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df \ - --hash=sha256:9d14b83fab60d5e8abe587d51c75b252bcc21683f24699ada8fb275d7712f5a9 \ - --hash=sha256:9f35ec95538f50292f6d8f2c9c9f8a3c6540bbfec21c9e5b4b751e0a7c20864f \ - --hash=sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0 \ - --hash=sha256:acd2162a36d3de67ee896c43effcd5ee3de247eb00354db411feb025aa319857 \ - --hash=sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a \ - --hash=sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249 \ - --hash=sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30 \ - --hash=sha256:b9ec052b06a0524f0e35bd8790686a1da006bd911dd1ef7d50b77bfbad74e292 \ - --hash=sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b \ - --hash=sha256:bdfea8c661e80d3c1c99ad7c3ff74e6e87184895bbaca6ee8cc61209f8b9b85d \ - --hash=sha256:be4ed120b52ae4d974aa40215fcdfde9194d63541c7ded40ee12eb4dda57b76b \ - --hash=sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c \ - --hash=sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca \ - --hash=sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7 \ - --hash=sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75 \ - --hash=sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae \ - --hash=sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b \ - --hash=sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470 \ - --hash=sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564 \ - --hash=sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9 \ - --hash=sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099 \ - --hash=sha256:e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0 \ - --hash=sha256:ea9872c80c132f4663822dd2a08d404073a5a9b5ba6155bea72fb2a79d1093b5 \ - --hash=sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19 \ - --hash=sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1 \ - --hash=sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526 -grpcio==1.57.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00258cbe3f5188629828363ae8ff78477ce976a6f63fb2bb5e90088396faa82e \ - --hash=sha256:092fa155b945015754bdf988be47793c377b52b88d546e45c6a9f9579ac7f7b6 \ - --hash=sha256:0f80bf37f09e1caba6a8063e56e2b87fa335add314cf2b78ebf7cb45aa7e3d06 \ - --hash=sha256:20ec6fc4ad47d1b6e12deec5045ec3cd5402d9a1597f738263e98f490fe07056 \ - --hash=sha256:2313b124e475aa9017a9844bdc5eafb2d5abdda9d456af16fc4535408c7d6da6 \ - --hash=sha256:23e7d8849a0e58b806253fd206ac105b328171e01b8f18c7d5922274958cc87e \ - --hash=sha256:2f708a6a17868ad8bf586598bee69abded4996b18adf26fd2d91191383b79019 \ - --hash=sha256:2f7349786da979a94690cc5c2b804cab4e8774a3cf59be40d037c4342c906649 \ - --hash=sha256:34950353539e7d93f61c6796a007c705d663f3be41166358e3d88c45760c7d98 \ - --hash=sha256:40b72effd4c789de94ce1be2b5f88d7b9b5f7379fe9645f198854112a6567d9a \ - --hash=sha256:4b089f7ad1eb00a104078bab8015b0ed0ebcb3b589e527ab009c53893fd4e613 \ - --hash=sha256:4faea2cfdf762a664ab90589b66f416274887641ae17817de510b8178356bf73 \ - --hash=sha256:5371bcd861e679d63b8274f73ac281751d34bd54eccdbfcd6aa00e692a82cd7b \ - --hash=sha256:5613a2fecc82f95d6c51d15b9a72705553aa0d7c932fad7aed7afb51dc982ee5 \ - --hash=sha256:57b183e8b252825c4dd29114d6c13559be95387aafc10a7be645462a0fc98bbb \ - --hash=sha256:5b7a4ce8f862fe32b2a10b57752cf3169f5fe2915acfe7e6a1e155db3da99e79 \ - --hash=sha256:5e5b58e32ae14658085c16986d11e99abd002ddbf51c8daae8a0671fffb3467f \ - --hash=sha256:60fe15288a0a65d5c1cb5b4a62b1850d07336e3ba728257a810317be14f0c527 \ - --hash=sha256:6907b1cf8bb29b058081d2aad677b15757a44ef2d4d8d9130271d2ad5e33efca \ - --hash=sha256:76c44efa4ede1f42a9d5b2fed1fe9377e73a109bef8675fb0728eb80b0b8e8f2 \ - --hash=sha256:7a635589201b18510ff988161b7b573f50c6a48fae9cb567657920ca82022b37 \ - --hash=sha256:7b400807fa749a9eb286e2cd893e501b110b4d356a218426cb9c825a0474ca56 \ - --hash=sha256:82640e57fb86ea1d71ea9ab54f7e942502cf98a429a200b2e743d8672171734f \ - --hash=sha256:871f9999e0211f9551f368612460442a5436d9444606184652117d6a688c9f51 \ - --hash=sha256:9338bacf172e942e62e5889b6364e56657fbf8ac68062e8b25c48843e7b202bb \ - --hash=sha256:a8a8e560e8dbbdf29288872e91efd22af71e88b0e5736b0daf7773c1fecd99f0 \ - --hash=sha256:aed90d93b731929e742967e236f842a4a2174dc5db077c8f9ad2c5996f89f63e \ - --hash=sha256:b363bbb5253e5f9c23d8a0a034dfdf1b7c9e7f12e602fc788c435171e96daccc \ - --hash=sha256:b4098b6b638d9e0ca839a81656a2fd4bc26c9486ea707e8b1437d6f9d61c3941 \ - --hash=sha256:b53333627283e7241fcc217323f225c37783b5f0472316edcaa4479a213abfa6 \ - --hash=sha256:b670c2faa92124b7397b42303e4d8eb64a4cd0b7a77e35a9e865a55d61c57ef9 \ - --hash=sha256:bb396952cfa7ad2f01061fbc7dc1ad91dd9d69243bcb8110cf4e36924785a0fe \ - --hash=sha256:c60b83c43faeb6d0a9831f0351d7787a0753f5087cc6fa218d78fdf38e5acef0 \ - --hash=sha256:c6ebecfb7a31385393203eb04ed8b6a08f5002f53df3d59e5e795edb80999652 \ - --hash=sha256:d78d8b86fcdfa1e4c21f8896614b6cc7ee01a2a758ec0c4382d662f2a62cf766 \ - --hash=sha256:d7f8df114d6b4cf5a916b98389aeaf1e3132035420a88beea4e3d977e5f267a5 \ - --hash=sha256:e1cb52fa2d67d7f7fab310b600f22ce1ff04d562d46e9e0ac3e3403c2bb4cc16 \ - --hash=sha256:e3fdf04e402f12e1de8074458549337febb3b45f21076cc02ef4ff786aff687e \ - --hash=sha256:e503cb45ed12b924b5b988ba9576dc9949b2f5283b8e33b21dcb6be74a7c58d0 \ - --hash=sha256:f19ac6ac0a256cf77d3cc926ef0b4e64a9725cc612f97228cd5dc4bd9dbab03b \ - --hash=sha256:f1fb0fd4a1e9b11ac21c30c169d169ef434c6e9344ee0ab27cfa6f605f6387b2 \ - --hash=sha256:fada6b07ec4f0befe05218181f4b85176f11d531911b64c715d1875c4736d73a \ - --hash=sha256:fd173b4cf02b20f60860dc2ffe30115c18972d7d6d2d69df97ac38dee03be5bf \ - --hash=sha256:fe752639919aad9ffb0dee0d87f29a6467d1ef764f13c4644d212a9a853a078d \ - --hash=sha256:fee387d2fab144e8a34e0e9c5ca0f45c9376b99de45628265cfa9886b1dbe62b -h11==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ - --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 +googleapis-common-protos==1.61.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:22f1915393bb3245343f6efe87f6fe868532efc12aa26b391b15132e1279f1c0 \ + --hash=sha256:8a64866a97f6304a7179873a465d6eee97b7a24ec6cfd78e0f575e96b821240b +greenlet==3.0.1 ; python_version >= "3.8" and python_version < "4.0" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") \ + --hash=sha256:0a02d259510b3630f330c86557331a3b0e0c79dac3d166e449a39363beaae174 \ + --hash=sha256:0b6f9f8ca7093fd4433472fd99b5650f8a26dcd8ba410e14094c1e44cd3ceddd \ + --hash=sha256:100f78a29707ca1525ea47388cec8a049405147719f47ebf3895e7509c6446aa \ + --hash=sha256:1757936efea16e3f03db20efd0cd50a1c86b06734f9f7338a90c4ba85ec2ad5a \ + --hash=sha256:19075157a10055759066854a973b3d1325d964d498a805bb68a1f9af4aaef8ec \ + --hash=sha256:19bbdf1cce0346ef7341705d71e2ecf6f41a35c311137f29b8a2dc2341374565 \ + --hash=sha256:20107edf7c2c3644c67c12205dc60b1bb11d26b2610b276f97d666110d1b511d \ + --hash=sha256:22f79120a24aeeae2b4471c711dcf4f8c736a2bb2fabad2a67ac9a55ea72523c \ + --hash=sha256:2847e5d7beedb8d614186962c3d774d40d3374d580d2cbdab7f184580a39d234 \ + --hash=sha256:28e89e232c7593d33cac35425b58950789962011cc274aa43ef8865f2e11f46d \ + --hash=sha256:329c5a2e5a0ee942f2992c5e3ff40be03e75f745f48847f118a3cfece7a28546 \ + --hash=sha256:337322096d92808f76ad26061a8f5fccb22b0809bea39212cd6c406f6a7060d2 \ + --hash=sha256:3fcc780ae8edbb1d050d920ab44790201f027d59fdbd21362340a85c79066a74 \ + --hash=sha256:41bdeeb552d814bcd7fb52172b304898a35818107cc8778b5101423c9017b3de \ + --hash=sha256:4eddd98afc726f8aee1948858aed9e6feeb1758889dfd869072d4465973f6bfd \ + --hash=sha256:52e93b28db27ae7d208748f45d2db8a7b6a380e0d703f099c949d0f0d80b70e9 \ + --hash=sha256:55d62807f1c5a1682075c62436702aaba941daa316e9161e4b6ccebbbf38bda3 \ + --hash=sha256:5805e71e5b570d490938d55552f5a9e10f477c19400c38bf1d5190d760691846 \ + --hash=sha256:599daf06ea59bfedbec564b1692b0166a0045f32b6f0933b0dd4df59a854caf2 \ + --hash=sha256:60d5772e8195f4e9ebf74046a9121bbb90090f6550f81d8956a05387ba139353 \ + --hash=sha256:696d8e7d82398e810f2b3622b24e87906763b6ebfd90e361e88eb85b0e554dc8 \ + --hash=sha256:6e6061bf1e9565c29002e3c601cf68569c450be7fc3f7336671af7ddb4657166 \ + --hash=sha256:80ac992f25d10aaebe1ee15df45ca0d7571d0f70b645c08ec68733fb7a020206 \ + --hash=sha256:816bd9488a94cba78d93e1abb58000e8266fa9cc2aa9ccdd6eb0696acb24005b \ + --hash=sha256:85d2b77e7c9382f004b41d9c72c85537fac834fb141b0296942d52bf03fe4a3d \ + --hash=sha256:87c8ceb0cf8a5a51b8008b643844b7f4a8264a2c13fcbcd8a8316161725383fe \ + --hash=sha256:89ee2e967bd7ff85d84a2de09df10e021c9b38c7d91dead95b406ed6350c6997 \ + --hash=sha256:8bef097455dea90ffe855286926ae02d8faa335ed8e4067326257cb571fc1445 \ + --hash=sha256:8d11ebbd679e927593978aa44c10fc2092bc454b7d13fdc958d3e9d508aba7d0 \ + --hash=sha256:91e6c7db42638dc45cf2e13c73be16bf83179f7859b07cfc139518941320be96 \ + --hash=sha256:97e7ac860d64e2dcba5c5944cfc8fa9ea185cd84061c623536154d5a89237884 \ + --hash=sha256:990066bff27c4fcf3b69382b86f4c99b3652bab2a7e685d968cd4d0cfc6f67c6 \ + --hash=sha256:9fbc5b8f3dfe24784cee8ce0be3da2d8a79e46a276593db6868382d9c50d97b1 \ + --hash=sha256:ac4a39d1abae48184d420aa8e5e63efd1b75c8444dd95daa3e03f6c6310e9619 \ + --hash=sha256:b2c02d2ad98116e914d4f3155ffc905fd0c025d901ead3f6ed07385e19122c94 \ + --hash=sha256:b2d3337dcfaa99698aa2377c81c9ca72fcd89c07e7eb62ece3f23a3fe89b2ce4 \ + --hash=sha256:b489c36d1327868d207002391f662a1d163bdc8daf10ab2e5f6e41b9b96de3b1 \ + --hash=sha256:b641161c302efbb860ae6b081f406839a8b7d5573f20a455539823802c655f63 \ + --hash=sha256:b8ba29306c5de7717b5761b9ea74f9c72b9e2b834e24aa984da99cbfc70157fd \ + --hash=sha256:b9934adbd0f6e476f0ecff3c94626529f344f57b38c9a541f87098710b18af0a \ + --hash=sha256:ce85c43ae54845272f6f9cd8320d034d7a946e9773c693b27d620edec825e376 \ + --hash=sha256:cf868e08690cb89360eebc73ba4be7fb461cfbc6168dd88e2fbbe6f31812cd57 \ + --hash=sha256:d2905ce1df400360463c772b55d8e2518d0e488a87cdea13dd2c71dcb2a1fa16 \ + --hash=sha256:d57e20ba591727da0c230ab2c3f200ac9d6d333860d85348816e1dca4cc4792e \ + --hash=sha256:d6a8c9d4f8692917a3dc7eb25a6fb337bff86909febe2f793ec1928cd97bedfc \ + --hash=sha256:d923ff276f1c1f9680d32832f8d6c040fe9306cbfb5d161b0911e9634be9ef0a \ + --hash=sha256:daa7197b43c707462f06d2c693ffdbb5991cbb8b80b5b984007de431493a319c \ + --hash=sha256:dbd4c177afb8a8d9ba348d925b0b67246147af806f0b104af4d24f144d461cd5 \ + --hash=sha256:dc4d815b794fd8868c4d67602692c21bf5293a75e4b607bb92a11e821e2b859a \ + --hash=sha256:e9d21aaa84557d64209af04ff48e0ad5e28c5cca67ce43444e939579d085da72 \ + --hash=sha256:ea6b8aa9e08eea388c5f7a276fabb1d4b6b9d6e4ceb12cc477c3d352001768a9 \ + --hash=sha256:eabe7090db68c981fca689299c2d116400b553f4b713266b130cfc9e2aa9c5a9 \ + --hash=sha256:f2f6d303f3dee132b322a14cd8765287b8f86cdc10d2cb6a6fae234ea488888e \ + --hash=sha256:f33f3258aae89da191c6ebaa3bc517c6c4cbc9b9f689e5d8452f7aedbb913fa8 \ + --hash=sha256:f7bfb769f7efa0eefcd039dd19d843a4fbfbac52f1878b1da2ed5793ec9b1a65 \ + --hash=sha256:f89e21afe925fcfa655965ca8ea10f24773a1791400989ff32f467badfe4a064 \ + --hash=sha256:fa24255ae3c0ab67e613556375a4341af04a084bd58764731972bcbc8baeba36 +grpcio==1.59.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:023088764012411affe7db183d1ada3ad9daf2e23ddc719ff46d7061de661340 \ + --hash=sha256:08d77e682f2bf730a4961eea330e56d2f423c6a9b91ca222e5b1eb24a357b19f \ + --hash=sha256:0a4a3833c0e067f3558538727235cd8a49709bff1003200bbdefa2f09334e4b1 \ + --hash=sha256:0a754aff9e3af63bdc4c75c234b86b9d14e14a28a30c4e324aed1a9b873d755f \ + --hash=sha256:11168ef43e4a43ff1b1a65859f3e0ef1a173e277349e7fb16923ff108160a8cd \ + --hash=sha256:128e20f57c5f27cb0157e73756d1586b83c1b513ebecc83ea0ac37e4b0e4e758 \ + --hash=sha256:1f9524d1d701e399462d2c90ba7c193e49d1711cf429c0d3d97c966856e03d00 \ + --hash=sha256:1ff16d68bf453275466a9a46739061a63584d92f18a0f5b33d19fc97eb69867c \ + --hash=sha256:2067274c88bc6de89c278a672a652b4247d088811ece781a4858b09bdf8448e3 \ + --hash=sha256:2171c39f355ba5b551c5d5928d65aa6c69807fae195b86ef4a7d125bcdb860a9 \ + --hash=sha256:242adc47725b9a499ee77c6a2e36688fa6c96484611f33b1be4c57ab075a92dd \ + --hash=sha256:27f879ae604a7fcf371e59fba6f3ff4635a4c2a64768bd83ff0cac503142fef4 \ + --hash=sha256:2b230028a008ae1d0f430acb227d323ff8a619017415cf334c38b457f814119f \ + --hash=sha256:3059668df17627f0e0fa680e9ef8c995c946c792612e9518f5cc1503be14e90b \ + --hash=sha256:31176aa88f36020055ace9adff2405a33c8bdbfa72a9c4980e25d91b2f196873 \ + --hash=sha256:36f53c2b3449c015880e7d55a89c992c357f176327b0d2873cdaaf9628a37c69 \ + --hash=sha256:3b4368b33908f683a363f376dfb747d40af3463a6e5044afee07cf9436addf96 \ + --hash=sha256:3c61d641d4f409c5ae46bfdd89ea42ce5ea233dcf69e74ce9ba32b503c727e29 \ + --hash=sha256:4abb717e320e74959517dc8e84a9f48fbe90e9abe19c248541e9418b1ce60acd \ + --hash=sha256:4c93f4abbb54321ee6471e04a00139c80c754eda51064187963ddf98f5cf36a4 \ + --hash=sha256:535561990e075fa6bd4b16c4c3c1096b9581b7bb35d96fac4650f1181e428268 \ + --hash=sha256:53c9aa5ddd6857c0a1cd0287225a2a25873a8e09727c2e95c4aebb1be83a766a \ + --hash=sha256:5d573e70a6fe77555fb6143c12d3a7d3fa306632a3034b4e7c59ca09721546f8 \ + --hash=sha256:6009386a2df66159f64ac9f20425ae25229b29b9dd0e1d3dd60043f037e2ad7e \ + --hash=sha256:686e975a5d16602dc0982c7c703948d17184bd1397e16c8ee03511ecb8c4cdda \ + --hash=sha256:6959fb07e8351e20501ffb8cc4074c39a0b7ef123e1c850a7f8f3afdc3a3da01 \ + --hash=sha256:6b25ed37c27e652db01be341af93fbcea03d296c024d8a0e680017a268eb85dd \ + --hash=sha256:6da6dea3a1bacf99b3c2187e296db9a83029ed9c38fd4c52b7c9b7326d13c828 \ + --hash=sha256:72ca2399097c0b758198f2ff30f7178d680de8a5cfcf3d9b73a63cf87455532e \ + --hash=sha256:73abb8584b0cf74d37f5ef61c10722adc7275502ab71789a8fe3cb7ef04cf6e2 \ + --hash=sha256:74100fecaec8a535e380cf5f2fb556ff84957d481c13e54051c52e5baac70541 \ + --hash=sha256:75c6ecb70e809cf1504465174343113f51f24bc61e22a80ae1c859f3f7034c6d \ + --hash=sha256:7cf05053242f61ba94014dd3a986e11a083400a32664058f80bf4cf817c0b3a1 \ + --hash=sha256:9411e24328a2302e279e70cae6e479f1fddde79629fcb14e03e6d94b3956eabf \ + --hash=sha256:a213acfbf186b9f35803b52e4ca9addb153fc0b67f82a48f961be7000ecf6721 \ + --hash=sha256:bb7e0fe6ad73b7f06d7e2b689c19a71cf5cc48f0c2bf8608469e51ffe0bd2867 \ + --hash=sha256:c2504eed520958a5b77cc99458297cb7906308cb92327f35fb7fbbad4e9b2188 \ + --hash=sha256:c35aa9657f5d5116d23b934568e0956bd50c615127810fffe3ac356a914c176a \ + --hash=sha256:c5f09cffa619adfb44799fa4a81c2a1ad77c887187613fb0a8f201ab38d89ba1 \ + --hash=sha256:c978f864b35f2261e0819f5cd88b9830b04dc51bcf055aac3c601e525a10d2ba \ + --hash=sha256:cbe946b3e6e60a7b4618f091e62a029cb082b109a9d6b53962dd305087c6e4fd \ + --hash=sha256:cc3e4cd087f07758b16bef8f31d88dbb1b5da5671d2f03685ab52dece3d7a16e \ + --hash=sha256:cf0dead5a2c5a3347af2cfec7131d4f2a2e03c934af28989c9078f8241a491fa \ + --hash=sha256:d2794f0e68b3085d99b4f6ff9c089f6fdd02b32b9d3efdfbb55beac1bf22d516 \ + --hash=sha256:d2fa68a96a30dd240be80bbad838a0ac81a61770611ff7952b889485970c4c71 \ + --hash=sha256:d6f70406695e3220f09cd7a2f879333279d91aa4a8a1d34303b56d61a8180137 \ + --hash=sha256:d8f9cd4ad1be90b0cf350a2f04a38a36e44a026cac1e036ac593dc48efe91d52 \ + --hash=sha256:da2d94c15f88cd40d7e67f7919d4f60110d2b9d5b1e08cf354c2be773ab13479 \ + --hash=sha256:e1727c1c0e394096bb9af185c6923e8ea55a5095b8af44f06903bcc0e06800a2 \ + --hash=sha256:e420ced29b5904cdf9ee5545e23f9406189d8acb6750916c2db4793dada065c6 \ + --hash=sha256:e82c5cf1495244adf5252f925ac5932e5fd288b3e5ab6b70bec5593074b7236c \ + --hash=sha256:f1ef0d39bc1feb420caf549b3c657c871cad4ebbcf0580c4d03816b0590de0cf \ + --hash=sha256:f8753a6c88d1d0ba64302309eecf20f70d2770f65ca02d83c2452279085bfcd3 \ + --hash=sha256:f93dbf58f03146164048be5426ffde298b237a5e059144847e4940f5b80172c3 idna==3.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 importlib-metadata==6.8.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb \ --hash=sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743 -importlib-resources==6.0.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:134832a506243891221b88b4ae1213327eea96ceb4e407a00d790bb0626f45cf \ - --hash=sha256:4359457e42708462b9626a04657c6208ad799ceb41e5c58c57ffa0e6a098a5d4 +importlib-resources==6.1.1 ; python_version >= "3.8" and python_version < "3.9" \ + --hash=sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a \ + --hash=sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6 mako==1.2.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:c97c79c018b9165ac9922ae4f32da095ffd3c4e6872b45eded42926deea46818 \ --hash=sha256:d60a3903dc3bb01a18ad6a89cdbe2e4eadc69c0bc8ef1e3773ba53d44c3f7a34 @@ -393,211 +408,222 @@ pika==1.3.2 ; python_version >= "3.8" and python_version < "4.0" \ prometheus-client==0.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0836af6eb2c8f4fed712b2f279f6c0a8bbab29f9f4aa15276b91c7cb0d1616ab \ --hash=sha256:a03e35b359f14dd1630898543e2120addfdeacd1a6069c1367ae90fd93ad3f48 -protobuf==4.24.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:06437f0d4bb0d5f29e3d392aba69600188d4be5ad1e0a3370e581a9bf75a3081 \ - --hash=sha256:0b2b224e9541fe9f046dd7317d05f08769c332b7e4c54d93c7f0f372dedb0b1a \ - --hash=sha256:302e8752c760549ed4c7a508abc86b25d46553c81989343782809e1a062a2ef9 \ - --hash=sha256:44837a5ed9c9418ad5d502f89f28ba102e9cd172b6668bc813f21716f9273348 \ - --hash=sha256:55dd644adc27d2a624339332755fe077c7f26971045b469ebb9732a69ce1f2ca \ - --hash=sha256:5906c5e79ff50fe38b2d49d37db5874e3c8010826f2362f79996d83128a8ed9b \ - --hash=sha256:5d32363d14aca6e5c9e9d5918ad8fb65b091b6df66740ae9de50ac3916055e43 \ - --hash=sha256:970c701ee16788d74f3de20938520d7a0aebc7e4fff37096a48804c80d2908cf \ - --hash=sha256:bd39b9094a4cc003a1f911b847ab379f89059f478c0b611ba1215053e295132e \ - --hash=sha256:d414199ca605eeb498adc4d2ba82aedc0379dca4a7c364ff9bc9a179aa28e71b \ - --hash=sha256:d4af4fd9e9418e819be30f8df2a16e72fbad546a7576ac7f3653be92a6966d30 \ - --hash=sha256:df015c47d6855b8efa0b9be706c70bf7f050a4d5ac6d37fb043fbd95157a0e25 \ - --hash=sha256:fc361148e902949dcb953bbcb148c99fe8f8854291ad01107e4120361849fd0e -psycopg2==2.9.7 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1a6a2d609bce44f78af4556bea0c62a5e7f05c23e5ea9c599e07678995609084 \ - --hash=sha256:44d93a0109dfdf22fe399b419bcd7fa589d86895d3931b01fb321d74dadc68f1 \ - --hash=sha256:8275abf628c6dc7ec834ea63f6f3846bf33518907a2b9b693d41fd063767a866 \ - --hash=sha256:91e81a8333a0037babfc9fe6d11e997a9d4dac0f38c43074886b0d9dead94fe9 \ - --hash=sha256:b22ed9c66da2589a664e0f1ca2465c29b75aaab36fa209d4fb916025fb9119e5 \ - --hash=sha256:b6bd7d9d3a7a63faae6edf365f0ed0e9b0a1aaf1da3ca146e6b043fb3eb5d723 \ - --hash=sha256:c7949770cafbd2f12cecc97dea410c514368908a103acf519f2a346134caa4d5 \ - --hash=sha256:d1210fcf99aae6f728812d1d2240afc1dc44b9e6cba526a06fb8134f969957c2 \ - --hash=sha256:d5c5297e2fbc8068d4255f1e606bfc9291f06f91ec31b2a0d4c536210ac5c0a2 \ - --hash=sha256:e9b04cbef584310a1ac0f0d55bb623ca3244c87c51187645432e342de9ae81a8 \ - --hash=sha256:f00cc35bd7119f1fed17b85bd1007855194dde2cbd8de01ab8ebb17487440ad8 -pydantic-core==2.6.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:002d0ea50e17ed982c2d65b480bd975fc41086a5a2f9c924ef8fc54419d1dea3 \ - --hash=sha256:02e1c385095efbd997311d85c6021d32369675c09bcbfff3b69d84e59dc103f6 \ - --hash=sha256:046af9cfb5384f3684eeb3f58a48698ddab8dd870b4b3f67f825353a14441418 \ - --hash=sha256:04fe5c0a43dec39aedba0ec9579001061d4653a9b53a1366b113aca4a3c05ca7 \ - --hash=sha256:07a1aec07333bf5adebd8264047d3dc518563d92aca6f2f5b36f505132399efc \ - --hash=sha256:1480fa4682e8202b560dcdc9eeec1005f62a15742b813c88cdc01d44e85308e5 \ - --hash=sha256:1508f37ba9e3ddc0189e6ff4e2228bd2d3c3a4641cbe8c07177162f76ed696c7 \ - --hash=sha256:171a4718860790f66d6c2eda1d95dd1edf64f864d2e9f9115840840cf5b5713f \ - --hash=sha256:19e20f8baedd7d987bd3f8005c146e6bcbda7cdeefc36fad50c66adb2dd2da48 \ - --hash=sha256:1a0ddaa723c48af27d19f27f1c73bdc615c73686d763388c8683fe34ae777bad \ - --hash=sha256:1aa712ba150d5105814e53cb141412217146fedc22621e9acff9236d77d2a5ef \ - --hash=sha256:1ac1750df1b4339b543531ce793b8fd5c16660a95d13aecaab26b44ce11775e9 \ - --hash=sha256:1c721bfc575d57305dd922e6a40a8fe3f762905851d694245807a351ad255c58 \ - --hash=sha256:1ce8c84051fa292a5dc54018a40e2a1926fd17980a9422c973e3ebea017aa8da \ - --hash=sha256:1fa1f6312fb84e8c281f32b39affe81984ccd484da6e9d65b3d18c202c666149 \ - --hash=sha256:22134a4453bd59b7d1e895c455fe277af9d9d9fbbcb9dc3f4a97b8693e7e2c9b \ - --hash=sha256:23470a23614c701b37252618e7851e595060a96a23016f9a084f3f92f5ed5881 \ - --hash=sha256:240a015102a0c0cc8114f1cba6444499a8a4d0333e178bc504a5c2196defd456 \ - --hash=sha256:252851b38bad3bfda47b104ffd077d4f9604a10cb06fe09d020016a25107bf98 \ - --hash=sha256:2a20c533cb80466c1d42a43a4521669ccad7cf2967830ac62c2c2f9cece63e7e \ - --hash=sha256:2dd50d6a1aef0426a1d0199190c6c43ec89812b1f409e7fe44cb0fbf6dfa733c \ - --hash=sha256:340e96c08de1069f3d022a85c2a8c63529fd88709468373b418f4cf2c949fb0e \ - --hash=sha256:3796a6152c545339d3b1652183e786df648ecdf7c4f9347e1d30e6750907f5bb \ - --hash=sha256:37a822f630712817b6ecc09ccc378192ef5ff12e2c9bae97eb5968a6cdf3b862 \ - --hash=sha256:3a750a83b2728299ca12e003d73d1264ad0440f60f4fc9cee54acc489249b728 \ - --hash=sha256:3c8945a105f1589ce8a693753b908815e0748f6279959a4530f6742e1994dcb6 \ - --hash=sha256:3ccc13afee44b9006a73d2046068d4df96dc5b333bf3509d9a06d1b42db6d8bf \ - --hash=sha256:3f90e5e3afb11268628c89f378f7a1ea3f2fe502a28af4192e30a6cdea1e7d5e \ - --hash=sha256:4292ca56751aebbe63a84bbfc3b5717abb09b14d4b4442cc43fd7c49a1529efd \ - --hash=sha256:430ddd965ffd068dd70ef4e4d74f2c489c3a313adc28e829dd7262cc0d2dd1e8 \ - --hash=sha256:439a0de139556745ae53f9cc9668c6c2053444af940d3ef3ecad95b079bc9987 \ - --hash=sha256:44b4f937b992394a2e81a5c5ce716f3dcc1237281e81b80c748b2da6dd5cf29a \ - --hash=sha256:48c1ed8b02ffea4d5c9c220eda27af02b8149fe58526359b3c07eb391cb353a2 \ - --hash=sha256:4ef724a059396751aef71e847178d66ad7fc3fc969a1a40c29f5aac1aa5f8784 \ - --hash=sha256:50555ba3cb58f9861b7a48c493636b996a617db1a72c18da4d7f16d7b1b9952b \ - --hash=sha256:522a9c4a4d1924facce7270c84b5134c5cabcb01513213662a2e89cf28c1d309 \ - --hash=sha256:5493a7027bfc6b108e17c3383959485087d5942e87eb62bbac69829eae9bc1f7 \ - --hash=sha256:56ea80269077003eaa59723bac1d8bacd2cd15ae30456f2890811efc1e3d4413 \ - --hash=sha256:5a2a3c9ef904dcdadb550eedf3291ec3f229431b0084666e2c2aa8ff99a103a2 \ - --hash=sha256:5cfde4fab34dd1e3a3f7f3db38182ab6c95e4ea91cf322242ee0be5c2f7e3d2f \ - --hash=sha256:5e4a2cf8c4543f37f5dc881de6c190de08096c53986381daebb56a355be5dfe6 \ - --hash=sha256:5e9c068f36b9f396399d43bfb6defd4cc99c36215f6ff33ac8b9c14ba15bdf6b \ - --hash=sha256:5ed7ceca6aba5331ece96c0e328cd52f0dcf942b8895a1ed2642de50800b79d3 \ - --hash=sha256:5fa159b902d22b283b680ef52b532b29554ea2a7fc39bf354064751369e9dbd7 \ - --hash=sha256:615a31b1629e12445c0e9fc8339b41aaa6cc60bd53bf802d5fe3d2c0cda2ae8d \ - --hash=sha256:621afe25cc2b3c4ba05fff53525156d5100eb35c6e5a7cf31d66cc9e1963e378 \ - --hash=sha256:6656a0ae383d8cd7cc94e91de4e526407b3726049ce8d7939049cbfa426518c8 \ - --hash=sha256:672174480a85386dd2e681cadd7d951471ad0bb028ed744c895f11f9d51b9ebe \ - --hash=sha256:692b4ff5c4e828a38716cfa92667661a39886e71136c97b7dac26edef18767f7 \ - --hash=sha256:6bcc1ad776fffe25ea5c187a028991c031a00ff92d012ca1cc4714087e575973 \ - --hash=sha256:6bf7d610ac8f0065a286002a23bcce241ea8248c71988bda538edcc90e0c39ad \ - --hash=sha256:75c0ebbebae71ed1e385f7dfd9b74c1cff09fed24a6df43d326dd7f12339ec34 \ - --hash=sha256:788be9844a6e5c4612b74512a76b2153f1877cd845410d756841f6c3420230eb \ - --hash=sha256:7dc2ce039c7290b4ef64334ec7e6ca6494de6eecc81e21cb4f73b9b39991408c \ - --hash=sha256:813aab5bfb19c98ae370952b6f7190f1e28e565909bfc219a0909db168783465 \ - --hash=sha256:8421cf496e746cf8d6b677502ed9a0d1e4e956586cd8b221e1312e0841c002d5 \ - --hash=sha256:84e87c16f582f5c753b7f39a71bd6647255512191be2d2dbf49458c4ef024588 \ - --hash=sha256:84f8bb34fe76c68c9d96b77c60cef093f5e660ef8e43a6cbfcd991017d375950 \ - --hash=sha256:85cc4d105747d2aa3c5cf3e37dac50141bff779545ba59a095f4a96b0a460e70 \ - --hash=sha256:883daa467865e5766931e07eb20f3e8152324f0adf52658f4d302242c12e2c32 \ - --hash=sha256:8b2b1bfed698fa410ab81982f681f5b1996d3d994ae8073286515ac4d165c2e7 \ - --hash=sha256:8ecbac050856eb6c3046dea655b39216597e373aa8e50e134c0e202f9c47efec \ - --hash=sha256:930bfe73e665ebce3f0da2c6d64455098aaa67e1a00323c74dc752627879fc67 \ - --hash=sha256:9616567800bdc83ce136e5847d41008a1d602213d024207b0ff6cab6753fe645 \ - --hash=sha256:9680dd23055dd874173a3a63a44e7f5a13885a4cfd7e84814be71be24fba83db \ - --hash=sha256:99faba727727b2e59129c59542284efebbddade4f0ae6a29c8b8d3e1f437beb7 \ - --hash=sha256:9a718d56c4d55efcfc63f680f207c9f19c8376e5a8a67773535e6f7e80e93170 \ - --hash=sha256:9b33bf9658cb29ac1a517c11e865112316d09687d767d7a0e4a63d5c640d1b17 \ - --hash=sha256:9e8b374ef41ad5c461efb7a140ce4730661aadf85958b5c6a3e9cf4e040ff4bb \ - --hash=sha256:9e9b65a55bbabda7fccd3500192a79f6e474d8d36e78d1685496aad5f9dbd92c \ - --hash=sha256:a0b7486d85293f7f0bbc39b34e1d8aa26210b450bbd3d245ec3d732864009819 \ - --hash=sha256:a53e3195f134bde03620d87a7e2b2f2046e0e5a8195e66d0f244d6d5b2f6d31b \ - --hash=sha256:a87c54e72aa2ef30189dc74427421e074ab4561cf2bf314589f6af5b37f45e6d \ - --hash=sha256:a892b5b1871b301ce20d40b037ffbe33d1407a39639c2b05356acfef5536d26a \ - --hash=sha256:a8acc9dedd304da161eb071cc7ff1326aa5b66aadec9622b2574ad3ffe225525 \ - --hash=sha256:aaafc776e5edc72b3cad1ccedb5fd869cc5c9a591f1213aa9eba31a781be9ac1 \ - --hash=sha256:acafc4368b289a9f291e204d2c4c75908557d4f36bd3ae937914d4529bf62a76 \ - --hash=sha256:b0a5d7edb76c1c57b95df719af703e796fc8e796447a1da939f97bfa8a918d60 \ - --hash=sha256:b25afe9d5c4f60dcbbe2b277a79be114e2e65a16598db8abee2a2dcde24f162b \ - --hash=sha256:b44c42edc07a50a081672e25dfe6022554b47f91e793066a7b601ca290f71e42 \ - --hash=sha256:b594b64e8568cf09ee5c9501ede37066b9fc41d83d58f55b9952e32141256acd \ - --hash=sha256:b962700962f6e7a6bd77e5f37320cabac24b4c0f76afeac05e9f93cf0c620014 \ - --hash=sha256:bb128c30cf1df0ab78166ded1ecf876620fb9aac84d2413e8ea1594b588c735d \ - --hash=sha256:bf9d42a71a4d7a7c1f14f629e5c30eac451a6fc81827d2beefd57d014c006c4a \ - --hash=sha256:c6595b0d8c8711e8e1dc389d52648b923b809f68ac1c6f0baa525c6440aa0daa \ - --hash=sha256:c8c6660089a25d45333cb9db56bb9e347241a6d7509838dbbd1931d0e19dbc7f \ - --hash=sha256:c9d469204abcca28926cbc28ce98f28e50e488767b084fb3fbdf21af11d3de26 \ - --hash=sha256:d38bbcef58220f9c81e42c255ef0bf99735d8f11edef69ab0b499da77105158a \ - --hash=sha256:d4eb77df2964b64ba190eee00b2312a1fd7a862af8918ec70fc2d6308f76ac64 \ - --hash=sha256:d63b7545d489422d417a0cae6f9898618669608750fc5e62156957e609e728a5 \ - --hash=sha256:d7050899026e708fb185e174c63ebc2c4ee7a0c17b0a96ebc50e1f76a231c057 \ - --hash=sha256:d79f1f2f7ebdb9b741296b69049ff44aedd95976bfee38eb4848820628a99b50 \ - --hash=sha256:d85463560c67fc65cd86153a4975d0b720b6d7725cf7ee0b2d291288433fc21b \ - --hash=sha256:d9140ded382a5b04a1c030b593ed9bf3088243a0a8b7fa9f071a5736498c5483 \ - --hash=sha256:d9b4916b21931b08096efed090327f8fe78e09ae8f5ad44e07f5c72a7eedb51b \ - --hash=sha256:df14f6332834444b4a37685810216cc8fe1fe91f447332cd56294c984ecbff1c \ - --hash=sha256:e49ce7dc9f925e1fb010fc3d555250139df61fa6e5a0a95ce356329602c11ea9 \ - --hash=sha256:e61eae9b31799c32c5f9b7be906be3380e699e74b2db26c227c50a5fc7988698 \ - --hash=sha256:ea053cefa008fda40f92aab937fb9f183cf8752e41dbc7bc68917884454c6362 \ - --hash=sha256:f06e21ad0b504658a3a9edd3d8530e8cea5723f6ea5d280e8db8efc625b47e49 \ - --hash=sha256:f14546403c2a1d11a130b537dda28f07eb6c1805a43dae4617448074fd49c282 \ - --hash=sha256:f1a5d8f18877474c80b7711d870db0eeef9442691fcdb00adabfc97e183ee0b0 \ - --hash=sha256:f2969e8f72c6236c51f91fbb79c33821d12a811e2a94b7aa59c65f8dbdfad34a \ - --hash=sha256:f468d520f47807d1eb5d27648393519655eadc578d5dd862d06873cce04c4d1b \ - --hash=sha256:f70dc00a91311a1aea124e5f64569ea44c011b58433981313202c46bccbec0e1 \ - --hash=sha256:f93255b3e4d64785554e544c1c76cd32f4a354fa79e2eeca5d16ac2e7fdd57aa +protobuf==4.25.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1a3ba712877e6d37013cdc3476040ea1e313a6c2e1580836a94f76b3c176d575 \ + --hash=sha256:1a53d6f64b00eecf53b65ff4a8c23dc95df1fa1e97bb06b8122e5a64f49fc90a \ + --hash=sha256:32ac2100b0e23412413d948c03060184d34a7c50b3e5d7524ee96ac2b10acf51 \ + --hash=sha256:5c1203ac9f50e4853b0a0bfffd32c67118ef552a33942982eeab543f5c634395 \ + --hash=sha256:63714e79b761a37048c9701a37438aa29945cd2417a97076048232c1df07b701 \ + --hash=sha256:683dc44c61f2620b32ce4927de2108f3ebe8ccf2fd716e1e684e5a50da154054 \ + --hash=sha256:68f7caf0d4f012fd194a301420cf6aa258366144d814f358c5b32558228afa7c \ + --hash=sha256:b2cf8b5d381f9378afe84618288b239e75665fe58d0f3fd5db400959274296e9 \ + --hash=sha256:c40ff8f00aa737938c5378d461637d15c442a12275a81019cc2fef06d81c9419 \ + --hash=sha256:cf21faba64cd2c9a3ed92b7a67f226296b10159dbb8fbc5e854fc90657d908e4 \ + --hash=sha256:d94a33db8b7ddbd0af7c467475fb9fde0c705fb315a8433c0e2020942b863a1f +psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ + --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ + --hash=sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3 \ + --hash=sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa \ + --hash=sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a \ + --hash=sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693 \ + --hash=sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372 \ + --hash=sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e \ + --hash=sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59 \ + --hash=sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156 \ + --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ + --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ + --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c +py==1.11.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719 \ + --hash=sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378 +pydantic-core==2.10.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:042462d8d6ba707fd3ce9649e7bf268633a41018d6a998fb5fbacb7e928a183e \ + --hash=sha256:0523aeb76e03f753b58be33b26540880bac5aa54422e4462404c432230543f33 \ + --hash=sha256:05560ab976012bf40f25d5225a58bfa649bb897b87192a36c6fef1ab132540d7 \ + --hash=sha256:0675ba5d22de54d07bccde38997e780044dcfa9a71aac9fd7d4d7a1d2e3e65f7 \ + --hash=sha256:073d4a470b195d2b2245d0343569aac7e979d3a0dcce6c7d2af6d8a920ad0bea \ + --hash=sha256:07ec6d7d929ae9c68f716195ce15e745b3e8fa122fc67698ac6498d802ed0fa4 \ + --hash=sha256:0880e239827b4b5b3e2ce05e6b766a7414e5f5aedc4523be6b68cfbc7f61c5d0 \ + --hash=sha256:0c27f38dc4fbf07b358b2bc90edf35e82d1703e22ff2efa4af4ad5de1b3833e7 \ + --hash=sha256:0d8a8adef23d86d8eceed3e32e9cca8879c7481c183f84ed1a8edc7df073af94 \ + --hash=sha256:0e2a35baa428181cb2270a15864ec6286822d3576f2ed0f4cd7f0c1708472aff \ + --hash=sha256:0f8682dbdd2f67f8e1edddcbffcc29f60a6182b4901c367fc8c1c40d30bb0a82 \ + --hash=sha256:0fa467fd300a6f046bdb248d40cd015b21b7576c168a6bb20aa22e595c8ffcdd \ + --hash=sha256:128552af70a64660f21cb0eb4876cbdadf1a1f9d5de820fed6421fa8de07c893 \ + --hash=sha256:1396e81b83516b9d5c9e26a924fa69164156c148c717131f54f586485ac3c15e \ + --hash=sha256:149b8a07712f45b332faee1a2258d8ef1fb4a36f88c0c17cb687f205c5dc6e7d \ + --hash=sha256:14ac492c686defc8e6133e3a2d9eaf5261b3df26b8ae97450c1647286750b901 \ + --hash=sha256:14cfbb00959259e15d684505263d5a21732b31248a5dd4941f73a3be233865b9 \ + --hash=sha256:14e09ff0b8fe6e46b93d36a878f6e4a3a98ba5303c76bb8e716f4878a3bee92c \ + --hash=sha256:154ea7c52e32dce13065dbb20a4a6f0cc012b4f667ac90d648d36b12007fa9f7 \ + --hash=sha256:15d6bca84ffc966cc9976b09a18cf9543ed4d4ecbd97e7086f9ce9327ea48891 \ + --hash=sha256:1d40f55222b233e98e3921df7811c27567f0e1a4411b93d4c5c0f4ce131bc42f \ + --hash=sha256:25bd966103890ccfa028841a8f30cebcf5875eeac8c4bde4fe221364c92f0c9a \ + --hash=sha256:2cf5bb4dd67f20f3bbc1209ef572a259027c49e5ff694fa56bed62959b41e1f9 \ + --hash=sha256:2e0e2959ef5d5b8dc9ef21e1a305a21a36e254e6a34432d00c72a92fdc5ecda5 \ + --hash=sha256:320f14bd4542a04ab23747ff2c8a778bde727158b606e2661349557f0770711e \ + --hash=sha256:3625578b6010c65964d177626fde80cf60d7f2e297d56b925cb5cdeda6e9925a \ + --hash=sha256:39215d809470f4c8d1881758575b2abfb80174a9e8daf8f33b1d4379357e417c \ + --hash=sha256:3f0ac9fb8608dbc6eaf17956bf623c9119b4db7dbb511650910a82e261e6600f \ + --hash=sha256:417243bf599ba1f1fef2bb8c543ceb918676954734e2dcb82bf162ae9d7bd514 \ + --hash=sha256:420a692b547736a8d8703c39ea935ab5d8f0d2573f8f123b0a294e49a73f214b \ + --hash=sha256:443fed67d33aa85357464f297e3d26e570267d1af6fef1c21ca50921d2976302 \ + --hash=sha256:48525933fea744a3e7464c19bfede85df4aba79ce90c60b94d8b6e1eddd67096 \ + --hash=sha256:485a91abe3a07c3a8d1e082ba29254eea3e2bb13cbbd4351ea4e5a21912cc9b0 \ + --hash=sha256:4a5be350f922430997f240d25f8219f93b0c81e15f7b30b868b2fddfc2d05f27 \ + --hash=sha256:4d966c47f9dd73c2d32a809d2be529112d509321c5310ebf54076812e6ecd884 \ + --hash=sha256:524ff0ca3baea164d6d93a32c58ac79eca9f6cf713586fdc0adb66a8cdeab96a \ + --hash=sha256:53df009d1e1ba40f696f8995683e067e3967101d4bb4ea6f667931b7d4a01357 \ + --hash=sha256:5994985da903d0b8a08e4935c46ed8daf5be1cf217489e673910951dc533d430 \ + --hash=sha256:5cabb9710f09d5d2e9e2748c3e3e20d991a4c5f96ed8f1132518f54ab2967221 \ + --hash=sha256:5fdb39f67c779b183b0c853cd6b45f7db84b84e0571b3ef1c89cdb1dfc367325 \ + --hash=sha256:600d04a7b342363058b9190d4e929a8e2e715c5682a70cc37d5ded1e0dd370b4 \ + --hash=sha256:631cb7415225954fdcc2a024119101946793e5923f6c4d73a5914d27eb3d3a05 \ + --hash=sha256:63974d168b6233b4ed6a0046296803cb13c56637a7b8106564ab575926572a55 \ + --hash=sha256:64322bfa13e44c6c30c518729ef08fda6026b96d5c0be724b3c4ae4da939f875 \ + --hash=sha256:655f8f4c8d6a5963c9a0687793da37b9b681d9ad06f29438a3b2326d4e6b7970 \ + --hash=sha256:6835451b57c1b467b95ffb03a38bb75b52fb4dc2762bb1d9dbed8de31ea7d0fc \ + --hash=sha256:6db2eb9654a85ada248afa5a6db5ff1cf0f7b16043a6b070adc4a5be68c716d6 \ + --hash=sha256:7c4d1894fe112b0864c1fa75dffa045720a194b227bed12f4be7f6045b25209f \ + --hash=sha256:7eb037106f5c6b3b0b864ad226b0b7ab58157124161d48e4b30c4a43fef8bc4b \ + --hash=sha256:8282bab177a9a3081fd3d0a0175a07a1e2bfb7fcbbd949519ea0980f8a07144d \ + --hash=sha256:82f55187a5bebae7d81d35b1e9aaea5e169d44819789837cdd4720d768c55d15 \ + --hash=sha256:8572cadbf4cfa95fb4187775b5ade2eaa93511f07947b38f4cd67cf10783b118 \ + --hash=sha256:8cdbbd92154db2fec4ec973d45c565e767ddc20aa6dbaf50142676484cbff8ee \ + --hash=sha256:8f6e6aed5818c264412ac0598b581a002a9f050cb2637a84979859e70197aa9e \ + --hash=sha256:92f675fefa977625105708492850bcbc1182bfc3e997f8eecb866d1927c98ae6 \ + --hash=sha256:962ed72424bf1f72334e2f1e61b68f16c0e596f024ca7ac5daf229f7c26e4208 \ + --hash=sha256:9badf8d45171d92387410b04639d73811b785b5161ecadabf056ea14d62d4ede \ + --hash=sha256:9c120c9ce3b163b985a3b966bb701114beb1da4b0468b9b236fc754783d85aa3 \ + --hash=sha256:9f6f3e2598604956480f6c8aa24a3384dbf6509fe995d97f6ca6103bb8c2534e \ + --hash=sha256:a1254357f7e4c82e77c348dabf2d55f1d14d19d91ff025004775e70a6ef40ada \ + --hash=sha256:a1392e0638af203cee360495fd2cfdd6054711f2db5175b6e9c3c461b76f5175 \ + --hash=sha256:a1c311fd06ab3b10805abb72109f01a134019739bd3286b8ae1bc2fc4e50c07a \ + --hash=sha256:a5cb87bdc2e5f620693148b5f8f842d293cae46c5f15a1b1bf7ceeed324a740c \ + --hash=sha256:a7a7902bf75779bc12ccfc508bfb7a4c47063f748ea3de87135d433a4cca7a2f \ + --hash=sha256:aad7bd686363d1ce4ee930ad39f14e1673248373f4a9d74d2b9554f06199fb58 \ + --hash=sha256:aafdb89fdeb5fe165043896817eccd6434aee124d5ee9b354f92cd574ba5e78f \ + --hash=sha256:ae8a8843b11dc0b03b57b52793e391f0122e740de3df1474814c700d2622950a \ + --hash=sha256:b00bc4619f60c853556b35f83731bd817f989cba3e97dc792bb8c97941b8053a \ + --hash=sha256:b1f22a9ab44de5f082216270552aa54259db20189e68fc12484873d926426921 \ + --hash=sha256:b3c01c2fb081fced3bbb3da78510693dc7121bb893a1f0f5f4b48013201f362e \ + --hash=sha256:b3dcd587b69bbf54fc04ca157c2323b8911033e827fffaecf0cafa5a892a0904 \ + --hash=sha256:b4a6db486ac8e99ae696e09efc8b2b9fea67b63c8f88ba7a1a16c24a057a0776 \ + --hash=sha256:bec7dd208a4182e99c5b6c501ce0b1f49de2802448d4056091f8e630b28e9a52 \ + --hash=sha256:c0877239307b7e69d025b73774e88e86ce82f6ba6adf98f41069d5b0b78bd1bf \ + --hash=sha256:caa48fc31fc7243e50188197b5f0c4228956f97b954f76da157aae7f67269ae8 \ + --hash=sha256:cfe1090245c078720d250d19cb05d67e21a9cd7c257698ef139bc41cf6c27b4f \ + --hash=sha256:d43002441932f9a9ea5d6f9efaa2e21458221a3a4b417a14027a1d530201ef1b \ + --hash=sha256:d64728ee14e667ba27c66314b7d880b8eeb050e58ffc5fec3b7a109f8cddbd63 \ + --hash=sha256:d6495008733c7521a89422d7a68efa0a0122c99a5861f06020ef5b1f51f9ba7c \ + --hash=sha256:d8f1ebca515a03e5654f88411420fea6380fc841d1bea08effb28184e3d4899f \ + --hash=sha256:d99277877daf2efe074eae6338453a4ed54a2d93fb4678ddfe1209a0c93a2468 \ + --hash=sha256:da01bec0a26befab4898ed83b362993c844b9a607a86add78604186297eb047e \ + --hash=sha256:db9a28c063c7c00844ae42a80203eb6d2d6bbb97070cfa00194dff40e6f545ab \ + --hash=sha256:dda81e5ec82485155a19d9624cfcca9be88a405e2857354e5b089c2a982144b2 \ + --hash=sha256:e357571bb0efd65fd55f18db0a2fb0ed89d0bb1d41d906b138f088933ae618bb \ + --hash=sha256:e544246b859f17373bed915182ab841b80849ed9cf23f1f07b73b7c58baee5fb \ + --hash=sha256:e562617a45b5a9da5be4abe72b971d4f00bf8555eb29bb91ec2ef2be348cd132 \ + --hash=sha256:e570ffeb2170e116a5b17e83f19911020ac79d19c96f320cbfa1fa96b470185b \ + --hash=sha256:e6f31a17acede6a8cd1ae2d123ce04d8cca74056c9d456075f4f6f85de055607 \ + --hash=sha256:e9121b4009339b0f751955baf4543a0bfd6bc3f8188f8056b1a25a2d45099934 \ + --hash=sha256:ebedb45b9feb7258fac0a268a3f6bec0a2ea4d9558f3d6f813f02ff3a6dc6698 \ + --hash=sha256:ecaac27da855b8d73f92123e5f03612b04c5632fd0a476e469dfc47cd37d6b2e \ + --hash=sha256:ecdbde46235f3d560b18be0cb706c8e8ad1b965e5c13bbba7450c86064e96561 \ + --hash=sha256:ed550ed05540c03f0e69e6d74ad58d026de61b9eaebebbaaf8873e585cbb18de \ + --hash=sha256:eeb3d3d6b399ffe55f9a04e09e635554012f1980696d6b0aca3e6cf42a17a03b \ + --hash=sha256:ef337945bbd76cce390d1b2496ccf9f90b1c1242a3a7bc242ca4a9fc5993427a \ + --hash=sha256:f1365e032a477c1430cfe0cf2856679529a2331426f8081172c4a74186f1d595 \ + --hash=sha256:f23b55eb5464468f9e0e9a9935ce3ed2a870608d5f534025cd5536bca25b1402 \ + --hash=sha256:f2e9072d71c1f6cfc79a36d4484c82823c560e6f5599c43c1ca6b5cdbd54f881 \ + --hash=sha256:f323306d0556351735b54acbf82904fe30a27b6a7147153cbe6e19aaaa2aa429 \ + --hash=sha256:f36a3489d9e28fe4b67be9992a23029c3cec0babc3bd9afb39f49844a8c721c5 \ + --hash=sha256:f64f82cc3443149292b32387086d02a6c7fb39b8781563e0ca7b8d7d9cf72bd7 \ + --hash=sha256:f6defd966ca3b187ec6c366604e9296f585021d922e666b99c47e78738b5666c \ + --hash=sha256:f7c2b8eb9fc872e68b46eeaf835e86bccc3a58ba57d0eedc109cbb14177be531 \ + --hash=sha256:fa7db7558607afeccb33c0e4bf1c9a9a835e26599e76af6fe2fcea45904083a6 \ + --hash=sha256:fcb83175cc4936a5425dde3356f079ae03c0802bbdf8ff82c035f8a54b333521 pydantic-settings==2.0.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:962dc3672495aad6ae96a4390fac7e593591e144625e5112d359f8f67fb75945 \ --hash=sha256:ddd907b066622bd67603b75e2ff791875540dc485b7307c4fffc015719da8625 -pydantic==2.3.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1607cc106602284cd4a00882986570472f193fde9cb1259bceeaedb26aa79a6d \ - --hash=sha256:45b5e446c6dfaad9444819a293b921a40e1db1aa61ea08aede0522529ce90e81 +pydantic==2.4.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:94f336138093a5d7f426aac732dcfe7ab4eb4da243c88f891d65deb4a2556ee7 \ + --hash=sha256:bc3ddf669d234f4220e6e1c4d96b061abe0998185a8d7855c0126782b7abc8c1 python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -setuptools==68.1.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3d4dfa6d95f1b101d695a6160a7626e15583af71a5f52176efa5d39a054d475d \ - --hash=sha256:3d8083eed2d13afc9426f227b24fd1659489ec107c0e86cec2ffdde5c92e790b +retry==0.9.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:ccddf89761fa2c726ab29391837d4327f819ea14d244c232a1d24c67a2f98606 \ + --hash=sha256:f8bfa8b99b69c4506d6f5bd3b0aabf77f98cdb17f3c9fc3f5ca820033336fba4 +setuptools==68.2.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87 \ + --hash=sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -sqlalchemy==2.0.20 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1506e988ebeaaf316f183da601f24eedd7452e163010ea63dbe52dc91c7fc70e \ - --hash=sha256:1a58052b5a93425f656675673ef1f7e005a3b72e3f2c91b8acca1b27ccadf5f4 \ - --hash=sha256:1b74eeafaa11372627ce94e4dc88a6751b2b4d263015b3523e2b1e57291102f0 \ - --hash=sha256:1be86ccea0c965a1e8cd6ccf6884b924c319fcc85765f16c69f1ae7148eba64b \ - --hash=sha256:1d35d49a972649b5080557c603110620a86aa11db350d7a7cb0f0a3f611948a0 \ - --hash=sha256:243d0fb261f80a26774829bc2cee71df3222587ac789b7eaf6555c5b15651eed \ - --hash=sha256:26a3399eaf65e9ab2690c07bd5cf898b639e76903e0abad096cd609233ce5208 \ - --hash=sha256:27d554ef5d12501898d88d255c54eef8414576f34672e02fe96d75908993cf53 \ - --hash=sha256:3364b7066b3c7f4437dd345d47271f1251e0cfb0aba67e785343cdbdb0fff08c \ - --hash=sha256:3423dc2a3b94125094897118b52bdf4d37daf142cbcf26d48af284b763ab90e9 \ - --hash=sha256:3c6aceebbc47db04f2d779db03afeaa2c73ea3f8dcd3987eb9efdb987ffa09a3 \ - --hash=sha256:3ce5e81b800a8afc870bb8e0a275d81957e16f8c4b62415a7b386f29a0cb9763 \ - --hash=sha256:411e7f140200c02c4b953b3dbd08351c9f9818d2bd591b56d0fa0716bd014f1e \ - --hash=sha256:4cde2e1096cbb3e62002efdb7050113aa5f01718035ba9f29f9d89c3758e7e4e \ - --hash=sha256:5768c268df78bacbde166b48be788b83dddaa2a5974b8810af422ddfe68a9bc8 \ - --hash=sha256:599ccd23a7146e126be1c7632d1d47847fa9f333104d03325c4e15440fc7d927 \ - --hash=sha256:5ed61e3463021763b853628aef8bc5d469fe12d95f82c74ef605049d810f3267 \ - --hash=sha256:63a368231c53c93e2b67d0c5556a9836fdcd383f7e3026a39602aad775b14acf \ - --hash=sha256:63e73da7fb030ae0a46a9ffbeef7e892f5def4baf8064786d040d45c1d6d1dc5 \ - --hash=sha256:6eb6d77c31e1bf4268b4d61b549c341cbff9842f8e115ba6904249c20cb78a61 \ - --hash=sha256:6f8a934f9dfdf762c844e5164046a9cea25fabbc9ec865c023fe7f300f11ca4a \ - --hash=sha256:6fe7d61dc71119e21ddb0094ee994418c12f68c61b3d263ebaae50ea8399c4d4 \ - --hash=sha256:759b51346aa388c2e606ee206c0bc6f15a5299f6174d1e10cadbe4530d3c7a98 \ - --hash=sha256:76fdfc0f6f5341987474ff48e7a66c3cd2b8a71ddda01fa82fedb180b961630a \ - --hash=sha256:77d37c1b4e64c926fa3de23e8244b964aab92963d0f74d98cbc0783a9e04f501 \ - --hash=sha256:79543f945be7a5ada9943d555cf9b1531cfea49241809dd1183701f94a748624 \ - --hash=sha256:79fde625a0a55220d3624e64101ed68a059c1c1f126c74f08a42097a72ff66a9 \ - --hash=sha256:7d3f175410a6db0ad96b10bfbb0a5530ecd4fcf1e2b5d83d968dd64791f810ed \ - --hash=sha256:8dd77fd6648b677d7742d2c3cc105a66e2681cc5e5fb247b88c7a7b78351cf74 \ - --hash=sha256:a3f0dd6d15b6dc8b28a838a5c48ced7455c3e1fb47b89da9c79cc2090b072a50 \ - --hash=sha256:bcb04441f370cbe6e37c2b8d79e4af9e4789f626c595899d94abebe8b38f9a4d \ - --hash=sha256:c3d99ba99007dab8233f635c32b5cd24fb1df8d64e17bc7df136cedbea427897 \ - --hash=sha256:ca8a5ff2aa7f3ade6c498aaafce25b1eaeabe4e42b73e25519183e4566a16fc6 \ - --hash=sha256:cb0d3e94c2a84215532d9bcf10229476ffd3b08f481c53754113b794afb62d14 \ - --hash=sha256:d1b09ba72e4e6d341bb5bdd3564f1cea6095d4c3632e45dc69375a1dbe4e26ec \ - --hash=sha256:d32b5ffef6c5bcb452723a496bad2d4c52b346240c59b3e6dba279f6dcc06c14 \ - --hash=sha256:d3793dcf5bc4d74ae1e9db15121250c2da476e1af8e45a1d9a52b1513a393459 \ - --hash=sha256:dd81466bdbc82b060c3c110b2937ab65ace41dfa7b18681fdfad2f37f27acdd7 \ - --hash=sha256:e4e571af672e1bb710b3cc1a9794b55bce1eae5aed41a608c0401885e3491179 \ - --hash=sha256:ea8186be85da6587456c9ddc7bf480ebad1a0e6dcbad3967c4821233a4d4df57 \ - --hash=sha256:eefebcc5c555803065128401a1e224a64607259b5eb907021bf9b175f315d2a6 +sqlalchemy==2.0.23 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0666031df46b9badba9bed00092a1ffa3aa063a5e68fa244acd9f08070e936d3 \ + --hash=sha256:0a8c6aa506893e25a04233bc721c6b6cf844bafd7250535abb56cb6cc1368884 \ + --hash=sha256:0e680527245895aba86afbd5bef6c316831c02aa988d1aad83c47ffe92655e74 \ + --hash=sha256:14aebfe28b99f24f8a4c1346c48bc3d63705b1f919a24c27471136d2f219f02d \ + --hash=sha256:1e018aba8363adb0599e745af245306cb8c46b9ad0a6fc0a86745b6ff7d940fc \ + --hash=sha256:227135ef1e48165f37590b8bfc44ed7ff4c074bf04dc8d6f8e7f1c14a94aa6ca \ + --hash=sha256:31952bbc527d633b9479f5f81e8b9dfada00b91d6baba021a869095f1a97006d \ + --hash=sha256:3e983fa42164577d073778d06d2cc5d020322425a509a08119bdcee70ad856bf \ + --hash=sha256:42d0b0290a8fb0165ea2c2781ae66e95cca6e27a2fbe1016ff8db3112ac1e846 \ + --hash=sha256:42ede90148b73fe4ab4a089f3126b2cfae8cfefc955c8174d697bb46210c8306 \ + --hash=sha256:4895a63e2c271ffc7a81ea424b94060f7b3b03b4ea0cd58ab5bb676ed02f4221 \ + --hash=sha256:4af79c06825e2836de21439cb2a6ce22b2ca129bad74f359bddd173f39582bf5 \ + --hash=sha256:5f94aeb99f43729960638e7468d4688f6efccb837a858b34574e01143cf11f89 \ + --hash=sha256:616fe7bcff0a05098f64b4478b78ec2dfa03225c23734d83d6c169eb41a93e55 \ + --hash=sha256:62d9e964870ea5ade4bc870ac4004c456efe75fb50404c03c5fd61f8bc669a72 \ + --hash=sha256:638c2c0b6b4661a4fd264f6fb804eccd392745c5887f9317feb64bb7cb03b3ea \ + --hash=sha256:63bfc3acc970776036f6d1d0e65faa7473be9f3135d37a463c5eba5efcdb24c8 \ + --hash=sha256:6463aa765cf02b9247e38b35853923edbf2f6fd1963df88706bc1d02410a5577 \ + --hash=sha256:64ac935a90bc479fee77f9463f298943b0e60005fe5de2aa654d9cdef46c54df \ + --hash=sha256:683ef58ca8eea4747737a1c35c11372ffeb84578d3aab8f3e10b1d13d66f2bc4 \ + --hash=sha256:75eefe09e98043cff2fb8af9796e20747ae870c903dc61d41b0c2e55128f958d \ + --hash=sha256:787af80107fb691934a01889ca8f82a44adedbf5ef3d6ad7d0f0b9ac557e0c34 \ + --hash=sha256:7c424983ab447dab126c39d3ce3be5bee95700783204a72549c3dceffe0fc8f4 \ + --hash=sha256:7e0dc9031baa46ad0dd5a269cb7a92a73284d1309228be1d5935dac8fb3cae24 \ + --hash=sha256:87a3d6b53c39cd173990de2f5f4b83431d534a74f0e2f88bd16eabb5667e65c6 \ + --hash=sha256:89a01238fcb9a8af118eaad3ffcc5dedaacbd429dc6fdc43fe430d3a941ff965 \ + --hash=sha256:9585b646ffb048c0250acc7dad92536591ffe35dba624bb8fd9b471e25212a35 \ + --hash=sha256:964971b52daab357d2c0875825e36584d58f536e920f2968df8d581054eada4b \ + --hash=sha256:967c0b71156f793e6662dd839da54f884631755275ed71f1539c95bbada9aaab \ + --hash=sha256:9ca922f305d67605668e93991aaf2c12239c78207bca3b891cd51a4515c72e22 \ + --hash=sha256:a86cb7063e2c9fb8e774f77fbf8475516d270a3e989da55fa05d08089d77f8c4 \ + --hash=sha256:aeb397de65a0a62f14c257f36a726945a7f7bb60253462e8602d9b97b5cbe204 \ + --hash=sha256:b41f5d65b54cdf4934ecede2f41b9c60c9f785620416e8e6c48349ab18643855 \ + --hash=sha256:bd45a5b6c68357578263d74daab6ff9439517f87da63442d244f9f23df56138d \ + --hash=sha256:c14eba45983d2f48f7546bb32b47937ee2cafae353646295f0e99f35b14286ab \ + --hash=sha256:c1bda93cbbe4aa2aa0aa8655c5aeda505cd219ff3e8da91d1d329e143e4aff69 \ + --hash=sha256:c4722f3bc3c1c2fcc3702dbe0016ba31148dd6efcd2a2fd33c1b4897c6a19693 \ + --hash=sha256:c80c38bd2ea35b97cbf7c21aeb129dcbebbf344ee01a7141016ab7b851464f8e \ + --hash=sha256:cabafc7837b6cec61c0e1e5c6d14ef250b675fa9c3060ed8a7e38653bd732ff8 \ + --hash=sha256:cc1d21576f958c42d9aec68eba5c1a7d715e5fc07825a629015fe8e3b0657fb0 \ + --hash=sha256:d0f7fb0c7527c41fa6fcae2be537ac137f636a41b4c5a4c58914541e2f436b45 \ + --hash=sha256:d4041ad05b35f1f4da481f6b811b4af2f29e83af253bf37c3c4582b2c68934ab \ + --hash=sha256:d5578e6863eeb998980c212a39106ea139bdc0b3f73291b96e27c929c90cd8e1 \ + --hash=sha256:e3b5036aa326dc2df50cba3c958e29b291a80f604b1afa4c8ce73e78e1c9f01d \ + --hash=sha256:e599a51acf3cc4d31d1a0cf248d8f8d863b6386d2b6782c5074427ebb7803bda \ + --hash=sha256:f3420d00d2cb42432c1d0e44540ae83185ccbbc67a6054dcc8ab5387add6620b \ + --hash=sha256:f48ed89dd11c3c586f45e9eec1e437b355b3b6f6884ea4a4c3111a3358fd0c18 \ + --hash=sha256:f508ba8f89e0a5ecdfd3761f82dda2a3d7b678a626967608f4273e0dba8f07ac \ + --hash=sha256:fd54601ef9cc455a0c61e5245f690c8a3ad67ddb03d3b91c361d076def0b4c60 starlette==0.27.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:6a6b0d042acb8d469a01eba54e9cda6cbd24ac602c4cd016723117d6a7e73b75 \ --hash=sha256:918416370e846586541235ccd38a474c08b80443ed31c578a418e2209b3eef91 -typing-extensions==4.7.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36 \ - --hash=sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2 +typing-extensions==4.8.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0 \ + --hash=sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef urllib3==2.0.7 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84 \ --hash=sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e -uvicorn==0.17.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:19e2a0e96c9ac5581c01eb1a79a7d2f72bb479691acd2b8921fce48ed5b961a6 \ - --hash=sha256:5180f9d059611747d841a4a4c4ab675edf54c8489e97f96d0583ee90ac3bfc23 wrapt==1.15.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0 \ --hash=sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420 \ @@ -674,6 +700,6 @@ wrapt==1.15.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09 \ --hash=sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559 \ --hash=sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639 -zipp==3.16.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0 \ - --hash=sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147 +zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ + --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/mula/scheduler/connectors/listeners/listeners.py b/mula/scheduler/connectors/listeners/listeners.py index 94ec813d57d..b5358a26e8b 100644 --- a/mula/scheduler/connectors/listeners/listeners.py +++ b/mula/scheduler/connectors/listeners/listeners.py @@ -1,9 +1,12 @@ +import functools import json import logging import urllib.parse -from typing import Dict, Optional +from concurrent import futures +from typing import Callable, Dict, Optional import pika +from retry import retry from ..connector import Connector # noqa: TID252 @@ -37,6 +40,14 @@ class RabbitMQ(Listener): channel and procedure that needs to be dispatched when receiving messages from a RabbitMQ queue. + To combat potential dropping of AMQP/stream connections due to AMQP heartbeat + timeouts, due to long running tasks, we will delegate processing of the + incoming message to another thread, while the connection adapter’s thread + continues to service its I/O loop’s message pump, permitting AMQP heartbeats + and other I/O to be serviced in a timely fashion. + + Source: https://pika.readthedocs.io/en/stable/modules/adapters/index.html#requesting-message-acknowledgements-from-another-thread + Attributes: dsn: A string defining the data source name of the RabbitMQ host to @@ -45,9 +56,11 @@ class RabbitMQ(Listener): A pika.BlockingConnection instance. channel: A pika.BlockingConnection.channel instance. + executor: + A concurrent.futures.ThreadPoolExecutor instance. """ - def __init__(self, dsn: str): + def __init__(self, dsn: str, queue: str, func: Callable, durable: bool = True, prefetch_count: int = 1) -> None: """Initialize the RabbitMQ Listener Args: @@ -56,17 +69,35 @@ def __init__(self, dsn: str): connect to. """ super().__init__() - self.dsn = dsn + self.dsn: str = dsn + self.queue: str = queue + self.durable: bool = durable + self.prefetch_count: int = prefetch_count + self.func: Callable = func + + self.executor: futures.ThreadPoolExecutor = futures.ThreadPoolExecutor(max_workers=10) self.connection = pika.BlockingConnection(pika.URLParameters(self.dsn)) self.channel = self.connection.channel() - def dispatch(self, body: bytes) -> None: - """Dispatch a message without a return value""" - raise NotImplementedError + def listen(self) -> None: + self.basic_consume(self.queue, self.durable, self.prefetch_count) + + def dispatch(self, channel, delivery_tag, body: bytes) -> None: + # Call the function + self.func(body) + + # Acknowledge the message + self.connection.add_callback_threadsafe(functools.partial(self.ack_message, channel, delivery_tag)) + @retry( + (pika.exceptions.AMQPConnectionError, pika.exceptions.ConnectionClosedByBroker), delay=5, jitter=(1, 3), tries=5 + ) def basic_consume(self, queue: str, durable: bool, prefetch_count: int) -> None: try: + if self.connection.is_closed: + self.connection = pika.BlockingConnection(pika.URLParameters(self.dsn)) + self.channel = self.connection.channel() self.channel.queue_declare(queue=queue, durable=durable) except pika.exceptions.ChannelClosedByBroker as exc: if "inequivalent arg 'durable'" in exc.reply_text: @@ -79,9 +110,15 @@ def basic_consume(self, queue: str, durable: bool, prefetch_count: int) -> None: self.channel.queue_declare(queue=queue, durable=durable) else: raise - self.channel.basic_qos(prefetch_count=prefetch_count) - self.channel.basic_consume(queue, on_message_callback=self.callback) - self.channel.start_consuming() + + try: + self.channel.basic_qos(prefetch_count=prefetch_count) + self.channel.basic_consume(queue, on_message_callback=self.callback) + self.channel.start_consuming() + except pika.exceptions.AMQPChannelError as exc: + # Do not recover on channel errors + self.logger.error("AMQPChannelError: %s", exc) + raise exc def get(self, queue: str) -> Optional[Dict[str, object]]: method, properties, body = self.channel.basic_get(queue) @@ -94,6 +131,13 @@ def get(self, queue: str) -> Optional[Dict[str, object]]: return response + def ack_message(self, channel, delivery_tag): + if channel.is_open: + channel.basic_ack(delivery_tag) + else: + # Channel is already closed, so we can't ack this message + self.logger.debug("Channel already closed, cannot ack message!") + def callback( self, channel: pika.channel.Channel, @@ -105,10 +149,7 @@ def callback( queue. """ self.logger.debug("Received message on queue %s, message: %r", method.routing_key, body) - - self.dispatch(body) - - channel.basic_ack(method.delivery_tag) + self.executor.submit(self.dispatch, channel, method.delivery_tag, body) def is_healthy(self) -> bool: """Check if the RabbitMQ connection is healthy""" @@ -126,6 +167,7 @@ def is_healthy(self) -> bool: def stop(self) -> None: self.logger.debug("Stopping RabbitMQ connection") + self.executor.shutdown() self.connection.add_callback_threadsafe(self._close_callback) self.logger.debug("RabbitMQ connection closed") diff --git a/mula/scheduler/connectors/listeners/raw_data.py b/mula/scheduler/connectors/listeners/raw_data.py index 619aaaf9e39..be485d9a9f6 100644 --- a/mula/scheduler/connectors/listeners/raw_data.py +++ b/mula/scheduler/connectors/listeners/raw_data.py @@ -1,45 +1,9 @@ -from typing import Callable - -from scheduler.models import RawDataReceivedEvent - from .listeners import RabbitMQ class RawData(RabbitMQ): """The RawData listener class that listens to the raw data queue and calls the function passed to it. This is used within the NormalizerScheduler. - - Attributes: - queue: A string representing the messaging queue name. - func: A python callable. - prefetch_count: An integer representing the prefetch count. """ - def __init__(self, dsn: str, queue: str, func: Callable, prefetch_count: int): - """Initialize the RawData listener. - - Args: - dsn: A string representing the DSN. - queue: A string representing the messaging queue name. - func: A python callable. - prefetch_count: An integer representing the prefetch count. - """ - super().__init__(dsn) - self.queue = queue - self.func = func - self.prefetch_count = prefetch_count - - def listen(self) -> None: - """Listen to the messaging queue.""" - self.basic_consume(self.queue, True, self.prefetch_count) - - def dispatch(self, body: bytes) -> None: - """Dispatch the message to the function. - - body: A bytes object representing the body of the message. - """ - # Convert body into a RawDataReceivedEvent - model = RawDataReceivedEvent.parse_raw(body) - - # Call the function - self.func(model) + pass diff --git a/mula/scheduler/connectors/listeners/scan_profile.py b/mula/scheduler/connectors/listeners/scan_profile.py index 99835016b2d..dd0d2a2079a 100644 --- a/mula/scheduler/connectors/listeners/scan_profile.py +++ b/mula/scheduler/connectors/listeners/scan_profile.py @@ -1,7 +1,3 @@ -from typing import Callable - -from scheduler.models import ScanProfileMutation as ScanProfileMutationModel - from .listeners import RabbitMQ @@ -9,38 +5,6 @@ class ScanProfileMutation(RabbitMQ): """The ScanProfileMutation listener class that listens to the scan profile mutation queue and calls the function passed to it. This is used within the BoefjeScheduler. - - Attributes: - queue: A string representing the messaging queue name. - func: A python callable. - prefetch_count: An integer representing the prefetch count. """ - def __init__(self, dsn: str, queue: str, func: Callable, prefetch_count: int): - """Initialize the RawData listener. - - Args: - dsn: A string representing the DSN. - queue: A string representing the messaging queue name. - func: A python callable. - prefetch_count: An integer representing the prefetch count. - """ - super().__init__(dsn) - self.queue = queue - self.func = func - self.prefetch_count = prefetch_count - - def listen(self) -> None: - """Listen to the messaging queue.""" - self.basic_consume(self.queue, True, self.prefetch_count) - - def dispatch(self, body: bytes) -> None: - """Dispatch the message to the function. - - body: A bytes object representing the body of the message. - """ - # Convert body into a ScanProfileMutationModel - model = ScanProfileMutationModel.parse_raw(body) - - # Call the function - self.func(model) + pass diff --git a/mula/scheduler/schedulers/boefje.py b/mula/scheduler/schedulers/boefje.py index d232b2ec98b..886c0462229 100644 --- a/mula/scheduler/schedulers/boefje.py +++ b/mula/scheduler/schedulers/boefje.py @@ -115,13 +115,16 @@ def run(self) -> None: ) @tracer.start_as_current_span("boefje_push_tasks_for_scan_profile_mutations") - def push_tasks_for_scan_profile_mutations(self, mutation: ScanProfileMutation) -> None: + def push_tasks_for_scan_profile_mutations(self, body: bytes) -> None: """Create tasks for oois that have a scan level change. Args: mutation: The mutation that was received. """ - self.logger.info( + # Convert body into a ScanProfileMutation + mutation = ScanProfileMutation.parse_raw(body) + + self.logger.debug( "Received scan level mutation %s for: %s [ooi_primary_key=%s, organisation_id=%s, scheduler_id=%s]", mutation.operation, mutation.primary_key, diff --git a/mula/scheduler/schedulers/normalizer.py b/mula/scheduler/schedulers/normalizer.py index 58d13424e6c..47d36189c70 100644 --- a/mula/scheduler/schedulers/normalizer.py +++ b/mula/scheduler/schedulers/normalizer.py @@ -8,7 +8,16 @@ from scheduler import context, queues, rankers from scheduler.connectors import listeners -from scheduler.models import Normalizer, NormalizerTask, Organisation, Plugin, PrioritizedItem, RawData, TaskStatus +from scheduler.models import ( + Normalizer, + NormalizerTask, + Organisation, + Plugin, + PrioritizedItem, + RawData, + RawDataReceivedEvent, + TaskStatus, +) from .scheduler import Scheduler @@ -80,13 +89,16 @@ def run(self) -> None: ) @tracer.start_as_current_span("normalizer_push_task_for_received_raw_data") - def push_tasks_for_received_raw_data(self, latest_raw_data: RawData) -> None: + def push_tasks_for_received_raw_data(self, body: bytes) -> None: """Create tasks for the received raw data. Args: latest_raw_data: A `RawData` object that was received from the message queue. """ + # Convert body into a RawDataReceivedEvent + latest_raw_data = RawDataReceivedEvent.parse_raw(body) + self.logger.debug( "Received new raw data from message queue [raw_data_id=%s, organisation_id=%s, scheduler_id=%s]", latest_raw_data.raw_data.id, diff --git a/mula/tests/integration/test_boefje_scheduler.py b/mula/tests/integration/test_boefje_scheduler.py index 1620f075ee0..863ebb050ab 100644 --- a/mula/tests/integration/test_boefje_scheduler.py +++ b/mula/tests/integration/test_boefje_scheduler.py @@ -1023,7 +1023,9 @@ def test_push_tasks_for_scan_profile_mutations(self): scan_profile = ScanProfileFactory(level=0) ooi = OOIFactory(scan_profile=scan_profile) boefje = PluginFactory(scan_level=0, consumes=[ooi.object_type]) - mutation = models.ScanProfileMutation(operation="create", primary_key=ooi.primary_key, value=ooi) + mutation = models.ScanProfileMutation( + operation="create", primary_key=ooi.primary_key, value=ooi + ).model_dump_json() # Mocks self.mock_get_boefjes_for_ooi.return_value = [boefje] @@ -1045,7 +1047,7 @@ def test_push_tasks_for_scan_profile_mutations(self): def test_push_tasks_for_scan_profile_mutations_value_empty(self): """When the value of a mutation is empty it should not push any tasks""" # Arrange - mutation = models.ScanProfileMutation(operation="create", primary_key="123", value=None) + mutation = models.ScanProfileMutation(operation="create", primary_key="123", value=None).model_dump_json() # Act self.scheduler.push_tasks_for_scan_profile_mutations(mutation) @@ -1058,7 +1060,9 @@ def test_push_tasks_for_scan_profile_mutations_no_boefjes_found(self): # Arrange scan_profile = ScanProfileFactory(level=0) ooi = OOIFactory(scan_profile=scan_profile) - mutation = models.ScanProfileMutation(operation="create", primary_key=ooi.primary_key, value=ooi) + mutation = models.ScanProfileMutation( + operation="create", primary_key=ooi.primary_key, value=ooi + ).model_dump_json() # Mocks self.mock_get_boefjes_for_ooi.return_value = [] @@ -1075,7 +1079,9 @@ def test_push_tasks_for_scan_profile_mutations_not_allowed_to_run(self): scan_profile = ScanProfileFactory(level=0) ooi = OOIFactory(scan_profile=scan_profile) boefje = PluginFactory(scan_level=0, consumes=[ooi.object_type]) - mutation = models.ScanProfileMutation(operation="create", primary_key=ooi.primary_key, value=ooi) + mutation = models.ScanProfileMutation( + operation="create", primary_key=ooi.primary_key, value=ooi + ).model_dump_json() # Mocks self.mock_get_boefjes_for_ooi.return_value = [boefje] @@ -1093,7 +1099,9 @@ def test_push_tasks_for_scan_profile_mutations_still_running(self): scan_profile = ScanProfileFactory(level=0) ooi = OOIFactory(scan_profile=scan_profile) boefje = PluginFactory(scan_level=0, consumes=[ooi.object_type]) - mutation = models.ScanProfileMutation(operation="create", primary_key=ooi.primary_key, value=ooi) + mutation = models.ScanProfileMutation( + operation="create", primary_key=ooi.primary_key, value=ooi + ).model_dump_json() # Mocks self.mock_get_boefjes_for_ooi.return_value = [boefje] @@ -1111,8 +1119,12 @@ def test_push_tasks_for_scan_profile_mutations_item_on_queue(self): scan_profile = ScanProfileFactory(level=0) ooi = OOIFactory(scan_profile=scan_profile) boefje = PluginFactory(scan_level=0, consumes=[ooi.object_type]) - mutation1 = models.ScanProfileMutation(operation="create", primary_key=ooi.primary_key, value=ooi) - mutation2 = models.ScanProfileMutation(operation="create", primary_key=ooi.primary_key, value=ooi) + mutation1 = models.ScanProfileMutation( + operation="create", primary_key=ooi.primary_key, value=ooi + ).model_dump_json() + mutation2 = models.ScanProfileMutation( + operation="create", primary_key=ooi.primary_key, value=ooi + ).model_dump_json() # Mocks self.mock_get_boefjes_for_ooi.return_value = [boefje] @@ -1143,7 +1155,7 @@ def test_push_task_for_scan_profile_mutations_delete(self): operation=models.MutationOperationType.DELETE, primary_key=ooi.primary_key, value=ooi, - ) + ).model_dump_json() # Mocks self.mock_get_boefjes_for_ooi.return_value = [boefje] @@ -1167,19 +1179,19 @@ def test_push_task_for_scan_profile_mutations_delete_on_queue(self): operation=models.MutationOperationType.CREATE, primary_key=ooi.primary_key, value=ooi, - ) + ).model_dump_json() mutation2 = models.ScanProfileMutation( operation=models.MutationOperationType.CREATE, primary_key=ooi.primary_key, value=ooi, - ) + ).model_dump_json() models.ScanProfileMutation( operation=models.MutationOperationType.CREATE, primary_key=ooi.primary_key, value=ooi, - ) + ).model_dump_json() # Mocks self.mock_get_boefjes_for_ooi.return_value = [boefje] @@ -1199,7 +1211,7 @@ def test_push_task_for_scan_profile_mutations_delete_on_queue(self): operation=models.MutationOperationType.DELETE, primary_key=ooi.primary_key, value=ooi, - ) + ).model_dump_json() # Act self.scheduler.push_tasks_for_scan_profile_mutations(mutation2) diff --git a/mula/tests/integration/test_normalizer_scheduler.py b/mula/tests/integration/test_normalizer_scheduler.py index 201827090eb..894b4e18d86 100644 --- a/mula/tests/integration/test_normalizer_scheduler.py +++ b/mula/tests/integration/test_normalizer_scheduler.py @@ -216,7 +216,7 @@ def test_push_tasks_for_received_raw_file(self): ), organization=self.organisation.name, created_at=datetime.datetime.now(), - ) + ).model_dump_json() # Mocks self.mock_get_normalizers_for_mime_type.return_value = [ @@ -263,7 +263,7 @@ def test_push_tasks_for_received_raw_file_no_normalizers_found(self): ), organization=self.organisation.name, created_at=datetime.datetime.now(), - ) + ).model_dump_json() # Mocks self.mock_get_normalizers_for_mime_type.return_value = [] @@ -303,7 +303,7 @@ def test_push_tasks_for_received_raw_file_not_allowed_to_run(self): ), organization=self.organisation.name, created_at=datetime.datetime.now(), - ) + ).model_dump_json() self.mock_get_normalizers_for_mime_type.return_value = [ NormalizerFactory(), @@ -345,7 +345,7 @@ def test_push_tasks_for_received_raw_file_still_running(self): ), organization=self.organisation.name, created_at=datetime.datetime.now(), - ) + ).model_dump_json() self.mock_get_normalizers_for_mime_type.return_value = [ NormalizerFactory(), @@ -388,7 +388,7 @@ def test_push_tasks_for_received_raw_file_still_running_exception(self): ), organization=self.organisation.name, created_at=datetime.datetime.now(), - ) + ).model_dump_json() self.mock_get_normalizers_for_mime_type.return_value = [ NormalizerFactory(), @@ -431,7 +431,7 @@ def test_push_tasks_for_received_raw_file_item_on_queue(self): ), organization=self.organisation.name, created_at=datetime.datetime.now(), - ) + ).model_dump_json() raw_data_event2 = models.RawDataReceivedEvent( raw_data=RawDataFactory( @@ -440,7 +440,7 @@ def test_push_tasks_for_received_raw_file_item_on_queue(self): ), organization=self.organisation.name, created_at=datetime.datetime.now(), - ) + ).model_dump_json() self.mock_get_normalizers_for_mime_type.return_value = [ NormalizerFactory(), @@ -487,7 +487,7 @@ def test_push_tasks_for_received_raw_file_error_mimetype(self): ), organization=self.organisation.name, created_at=datetime.datetime.now(), - ) + ).model_dump_json() # Act self.scheduler.push_tasks_for_received_raw_data(raw_data_event) @@ -525,7 +525,7 @@ def test_push_tasks_for_received_raw_file_queue_full(self): ), organization=self.organisation.name, created_at=datetime.datetime.now(), - ) + ).model_dump_json() events.append(raw_data_event) diff --git a/poetry.lock b/poetry.lock index 1aec05d29eb..0e77f09f22f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -13,17 +13,21 @@ files = [ [[package]] name = "babel" -version = "2.12.1" +version = "2.13.1" description = "Internationalization utilities" optional = false python-versions = ">=3.7" files = [ - {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, - {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, + {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"}, + {file = "Babel-2.13.1.tar.gz", hash = "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900"}, ] [package.dependencies] pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} +setuptools = {version = "*", markers = "python_version >= \"3.12\""} + +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] [[package]] name = "certifi" @@ -49,97 +53,112 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.2.0" +version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, - {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] [[package]] name = "click" -version = "8.1.6" +version = "8.1.7" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.6-py3-none-any.whl", hash = "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5"}, - {file = "click-8.1.6.tar.gz", hash = "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd"}, + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, ] [package.dependencies] @@ -180,28 +199,29 @@ files = [ [[package]] name = "filelock" -version = "3.12.2" +version = "3.13.1" description = "A platform independent file lock." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "filelock-3.12.2-py3-none-any.whl", hash = "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec"}, - {file = "filelock-3.12.2.tar.gz", hash = "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81"}, + {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"}, + {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"}, ] [package.extras] -docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"] +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] +typing = ["typing-extensions (>=4.8)"] [[package]] name = "identify" -version = "2.5.26" +version = "2.5.31" description = "File identification library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "identify-2.5.26-py2.py3-none-any.whl", hash = "sha256:c22a8ead0d4ca11f1edd6c9418c3220669b3b7533ada0a0ffa6cc0ef85cf9b54"}, - {file = "identify-2.5.26.tar.gz", hash = "sha256:7243800bce2f58404ed41b7c002e53d4d22bcf3ae1b7900c2d7aefd95394bf7f"}, + {file = "identify-2.5.31-py2.py3-none-any.whl", hash = "sha256:90199cb9e7bd3c5407a9b7e81b4abec4bb9d249991c79439ec8af740afc6293d"}, + {file = "identify-2.5.31.tar.gz", hash = "sha256:7736b3c7a28233637e3c36550646fc6389bedd74ae84cb788200cc8e2dd60b75"}, ] [package.extras] @@ -420,24 +440,24 @@ setuptools = "*" [[package]] name = "packaging" -version = "23.1" +version = "23.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] name = "platformdirs" -version = "3.10.0" +version = "3.11.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, - {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, + {file = "platformdirs-3.11.0-py3-none-any.whl", hash = "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"}, + {file = "platformdirs-3.11.0.tar.gz", hash = "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3"}, ] [package.extras] @@ -464,47 +484,47 @@ virtualenv = ">=20.10.0" [[package]] name = "pydantic" -version = "1.10.12" +version = "1.10.13" description = "Data validation and settings management using python type hints" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic-1.10.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a1fcb59f2f355ec350073af41d927bf83a63b50e640f4dbaa01053a28b7a7718"}, - {file = "pydantic-1.10.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b7ccf02d7eb340b216ec33e53a3a629856afe1c6e0ef91d84a4e6f2fb2ca70fe"}, - {file = "pydantic-1.10.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fb2aa3ab3728d950bcc885a2e9eff6c8fc40bc0b7bb434e555c215491bcf48b"}, - {file = "pydantic-1.10.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:771735dc43cf8383959dc9b90aa281f0b6092321ca98677c5fb6125a6f56d58d"}, - {file = "pydantic-1.10.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ca48477862372ac3770969b9d75f1bf66131d386dba79506c46d75e6b48c1e09"}, - {file = "pydantic-1.10.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a5e7add47a5b5a40c49b3036d464e3c7802f8ae0d1e66035ea16aa5b7a3923ed"}, - {file = "pydantic-1.10.12-cp310-cp310-win_amd64.whl", hash = "sha256:e4129b528c6baa99a429f97ce733fff478ec955513630e61b49804b6cf9b224a"}, - {file = "pydantic-1.10.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b0d191db0f92dfcb1dec210ca244fdae5cbe918c6050b342d619c09d31eea0cc"}, - {file = "pydantic-1.10.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:795e34e6cc065f8f498c89b894a3c6da294a936ee71e644e4bd44de048af1405"}, - {file = "pydantic-1.10.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69328e15cfda2c392da4e713443c7dbffa1505bc9d566e71e55abe14c97ddc62"}, - {file = "pydantic-1.10.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2031de0967c279df0d8a1c72b4ffc411ecd06bac607a212892757db7462fc494"}, - {file = "pydantic-1.10.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ba5b2e6fe6ca2b7e013398bc7d7b170e21cce322d266ffcd57cca313e54fb246"}, - {file = "pydantic-1.10.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2a7bac939fa326db1ab741c9d7f44c565a1d1e80908b3797f7f81a4f86bc8d33"}, - {file = "pydantic-1.10.12-cp311-cp311-win_amd64.whl", hash = "sha256:87afda5539d5140cb8ba9e8b8c8865cb5b1463924d38490d73d3ccfd80896b3f"}, - {file = "pydantic-1.10.12-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:549a8e3d81df0a85226963611950b12d2d334f214436a19537b2efed61b7639a"}, - {file = "pydantic-1.10.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:598da88dfa127b666852bef6d0d796573a8cf5009ffd62104094a4fe39599565"}, - {file = "pydantic-1.10.12-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba5c4a8552bff16c61882db58544116d021d0b31ee7c66958d14cf386a5b5350"}, - {file = "pydantic-1.10.12-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c79e6a11a07da7374f46970410b41d5e266f7f38f6a17a9c4823db80dadf4303"}, - {file = "pydantic-1.10.12-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab26038b8375581dc832a63c948f261ae0aa21f1d34c1293469f135fa92972a5"}, - {file = "pydantic-1.10.12-cp37-cp37m-win_amd64.whl", hash = "sha256:e0a16d274b588767602b7646fa05af2782576a6cf1022f4ba74cbb4db66f6ca8"}, - {file = "pydantic-1.10.12-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6a9dfa722316f4acf4460afdf5d41d5246a80e249c7ff475c43a3a1e9d75cf62"}, - {file = "pydantic-1.10.12-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a73f489aebd0c2121ed974054cb2759af8a9f747de120acd2c3394cf84176ccb"}, - {file = "pydantic-1.10.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b30bcb8cbfccfcf02acb8f1a261143fab622831d9c0989707e0e659f77a18e0"}, - {file = "pydantic-1.10.12-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fcfb5296d7877af406ba1547dfde9943b1256d8928732267e2653c26938cd9c"}, - {file = "pydantic-1.10.12-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2f9a6fab5f82ada41d56b0602606a5506aab165ca54e52bc4545028382ef1c5d"}, - {file = "pydantic-1.10.12-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dea7adcc33d5d105896401a1f37d56b47d443a2b2605ff8a969a0ed5543f7e33"}, - {file = "pydantic-1.10.12-cp38-cp38-win_amd64.whl", hash = "sha256:1eb2085c13bce1612da8537b2d90f549c8cbb05c67e8f22854e201bde5d98a47"}, - {file = "pydantic-1.10.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ef6c96b2baa2100ec91a4b428f80d8f28a3c9e53568219b6c298c1125572ebc6"}, - {file = "pydantic-1.10.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c076be61cd0177a8433c0adcb03475baf4ee91edf5a4e550161ad57fc90f523"}, - {file = "pydantic-1.10.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5a58feb9a39f481eda4d5ca220aa8b9d4f21a41274760b9bc66bfd72595b86"}, - {file = "pydantic-1.10.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5f805d2d5d0a41633651a73fa4ecdd0b3d7a49de4ec3fadf062fe16501ddbf1"}, - {file = "pydantic-1.10.12-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1289c180abd4bd4555bb927c42ee42abc3aee02b0fb2d1223fb7c6e5bef87dbe"}, - {file = "pydantic-1.10.12-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5d1197e462e0364906cbc19681605cb7c036f2475c899b6f296104ad42b9f5fb"}, - {file = "pydantic-1.10.12-cp39-cp39-win_amd64.whl", hash = "sha256:fdbdd1d630195689f325c9ef1a12900524dceb503b00a987663ff4f58669b93d"}, - {file = "pydantic-1.10.12-py3-none-any.whl", hash = "sha256:b749a43aa51e32839c9d71dc67eb1e4221bb04af1033a32e3923d46f9effa942"}, - {file = "pydantic-1.10.12.tar.gz", hash = "sha256:0fe8a415cea8f340e7a9af9c54fc71a649b43e8ca3cc732986116b3cb135d303"}, + {file = "pydantic-1.10.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:efff03cc7a4f29d9009d1c96ceb1e7a70a65cfe86e89d34e4a5f2ab1e5693737"}, + {file = "pydantic-1.10.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3ecea2b9d80e5333303eeb77e180b90e95eea8f765d08c3d278cd56b00345d01"}, + {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1740068fd8e2ef6eb27a20e5651df000978edce6da6803c2bef0bc74540f9548"}, + {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84bafe2e60b5e78bc64a2941b4c071a4b7404c5c907f5f5a99b0139781e69ed8"}, + {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bc0898c12f8e9c97f6cd44c0ed70d55749eaf783716896960b4ecce2edfd2d69"}, + {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:654db58ae399fe6434e55325a2c3e959836bd17a6f6a0b6ca8107ea0571d2e17"}, + {file = "pydantic-1.10.13-cp310-cp310-win_amd64.whl", hash = "sha256:75ac15385a3534d887a99c713aa3da88a30fbd6204a5cd0dc4dab3d770b9bd2f"}, + {file = "pydantic-1.10.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c553f6a156deb868ba38a23cf0df886c63492e9257f60a79c0fd8e7173537653"}, + {file = "pydantic-1.10.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e08865bc6464df8c7d61439ef4439829e3ab62ab1669cddea8dd00cd74b9ffe"}, + {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e31647d85a2013d926ce60b84f9dd5300d44535a9941fe825dc349ae1f760df9"}, + {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:210ce042e8f6f7c01168b2d84d4c9eb2b009fe7bf572c2266e235edf14bacd80"}, + {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8ae5dd6b721459bfa30805f4c25880e0dd78fc5b5879f9f7a692196ddcb5a580"}, + {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f8e81fc5fb17dae698f52bdd1c4f18b6ca674d7068242b2aff075f588301bbb0"}, + {file = "pydantic-1.10.13-cp311-cp311-win_amd64.whl", hash = "sha256:61d9dce220447fb74f45e73d7ff3b530e25db30192ad8d425166d43c5deb6df0"}, + {file = "pydantic-1.10.13-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4b03e42ec20286f052490423682016fd80fda830d8e4119f8ab13ec7464c0132"}, + {file = "pydantic-1.10.13-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f59ef915cac80275245824e9d771ee939133be38215555e9dc90c6cb148aaeb5"}, + {file = "pydantic-1.10.13-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a1f9f747851338933942db7af7b6ee8268568ef2ed86c4185c6ef4402e80ba8"}, + {file = "pydantic-1.10.13-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:97cce3ae7341f7620a0ba5ef6cf043975cd9d2b81f3aa5f4ea37928269bc1b87"}, + {file = "pydantic-1.10.13-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:854223752ba81e3abf663d685f105c64150873cc6f5d0c01d3e3220bcff7d36f"}, + {file = "pydantic-1.10.13-cp37-cp37m-win_amd64.whl", hash = "sha256:b97c1fac8c49be29486df85968682b0afa77e1b809aff74b83081cc115e52f33"}, + {file = "pydantic-1.10.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c958d053453a1c4b1c2062b05cd42d9d5c8eb67537b8d5a7e3c3032943ecd261"}, + {file = "pydantic-1.10.13-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c5370a7edaac06daee3af1c8b1192e305bc102abcbf2a92374b5bc793818599"}, + {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d6f6e7305244bddb4414ba7094ce910560c907bdfa3501e9db1a7fd7eaea127"}, + {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3a3c792a58e1622667a2837512099eac62490cdfd63bd407993aaf200a4cf1f"}, + {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c636925f38b8db208e09d344c7aa4f29a86bb9947495dd6b6d376ad10334fb78"}, + {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:678bcf5591b63cc917100dc50ab6caebe597ac67e8c9ccb75e698f66038ea953"}, + {file = "pydantic-1.10.13-cp38-cp38-win_amd64.whl", hash = "sha256:6cf25c1a65c27923a17b3da28a0bdb99f62ee04230c931d83e888012851f4e7f"}, + {file = "pydantic-1.10.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8ef467901d7a41fa0ca6db9ae3ec0021e3f657ce2c208e98cd511f3161c762c6"}, + {file = "pydantic-1.10.13-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:968ac42970f57b8344ee08837b62f6ee6f53c33f603547a55571c954a4225691"}, + {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9849f031cf8a2f0a928fe885e5a04b08006d6d41876b8bbd2fc68a18f9f2e3fd"}, + {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56e3ff861c3b9c6857579de282ce8baabf443f42ffba355bf070770ed63e11e1"}, + {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f00790179497767aae6bcdc36355792c79e7bbb20b145ff449700eb076c5f96"}, + {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:75b297827b59bc229cac1a23a2f7a4ac0031068e5be0ce385be1462e7e17a35d"}, + {file = "pydantic-1.10.13-cp39-cp39-win_amd64.whl", hash = "sha256:e70ca129d2053fb8b728ee7d1af8e553a928d7e301a311094b8a0501adc8763d"}, + {file = "pydantic-1.10.13-py3-none-any.whl", hash = "sha256:b87326822e71bd5f313e7d3bfdc77ac3247035ac10b0c0618bd99dcf95b1e687"}, + {file = "pydantic-1.10.13.tar.gz", hash = "sha256:32c8b48dcd3b2ac4e78b0ba4af3a2c2eb6048cb75202f0ea7b34feb740efc340"}, ] [package.dependencies] @@ -530,13 +550,13 @@ plugins = ["importlib-metadata"] [[package]] name = "pytz" -version = "2023.3" +version = "2023.3.post1" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2023.3-py2.py3-none-any.whl", hash = "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb"}, - {file = "pytz-2023.3.tar.gz", hash = "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588"}, + {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, + {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, ] [[package]] @@ -551,6 +571,7 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -558,8 +579,15 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -576,6 +604,7 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -583,6 +612,7 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -611,13 +641,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "rich" -version = "13.5.2" +version = "13.6.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.7.0" files = [ - {file = "rich-13.5.2-py3-none-any.whl", hash = "sha256:146a90b3b6b47cac4a73c12866a499e9817426423f57c5a66949c086191a8808"}, - {file = "rich-13.5.2.tar.gz", hash = "sha256:fb9d6c0a0f643c99eed3875b5377a184132ba9be4d61516a55273d3554d75a39"}, + {file = "rich-13.6.0-py3-none-any.whl", hash = "sha256:2b38e2fe9ca72c9a00170a1a2d20c63c790d0e10ef1fe35eba76e1e7b1d7d245"}, + {file = "rich-13.6.0.tar.gz", hash = "sha256:5c14d22737e6d5084ef4771b62d5d4363165b403455a30a1c8ca39dc7b644bef"}, ] [package.dependencies] @@ -646,29 +676,29 @@ typer = {version = ">=0.9,<0.10", extras = ["all"]} [[package]] name = "setuptools" -version = "68.1.0" +version = "68.2.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-68.1.0-py3-none-any.whl", hash = "sha256:e13e1b0bc760e9b0127eda042845999b2f913e12437046e663b833aa96d89715"}, - {file = "setuptools-68.1.0.tar.gz", hash = "sha256:d59c97e7b774979a5ccb96388efc9eb65518004537e85d52e81eaee89ab6dd91"}, + {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, + {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "shellingham" -version = "1.5.2" +version = "1.5.4" description = "Tool to Detect Surrounding Shell" optional = false python-versions = ">=3.7" files = [ - {file = "shellingham-1.5.2-py2.py3-none-any.whl", hash = "sha256:db9b385e903ebfe07958f6df493d47d4432ff5bed71e75ed3e613ace090be5f3"}, - {file = "shellingham-1.5.2.tar.gz", hash = "sha256:95946024df2db98c83382606a9ae875f613b15c950c980a3bf7a5adde40e7720"}, + {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, + {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, ] [[package]] @@ -876,13 +906,13 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6. [[package]] name = "typing-extensions" -version = "4.7.1" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.8.0" +description = "Backported and Experimental Type Hints for Python 3.8+" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, - {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, + {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, + {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, ] [[package]] @@ -904,13 +934,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.24.3" +version = "20.24.6" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.24.3-py3-none-any.whl", hash = "sha256:95a6e9398b4967fbcb5fef2acec5efaf9aa4972049d9ae41f95e0972a683fd02"}, - {file = "virtualenv-20.24.3.tar.gz", hash = "sha256:e5c3b4ce817b0b328af041506a2a299418c98747c4b1e68cb7527e74ced23efc"}, + {file = "virtualenv-20.24.6-py3-none-any.whl", hash = "sha256:520d056652454c5098a00c0f073611ccbea4c79089331f60bf9d7ba247bb7381"}, + {file = "virtualenv-20.24.6.tar.gz", hash = "sha256:02ece4f56fbf939dbbc33c0715159951d6bf14aaf5457b092e4548e1382455af"}, ] [package.dependencies] @@ -919,22 +949,22 @@ filelock = ">=3.12.2,<4" platformdirs = ">=3.9.1,<4" [package.extras] -docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] [[package]] name = "zipp" -version = "3.16.2" +version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, - {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [metadata] diff --git a/requirements-dev.txt b/requirements-dev.txt index fcd355d1183..247a01a72cc 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,94 +1,109 @@ alabaster==0.7.13 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3 \ --hash=sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2 -babel==2.12.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610 \ - --hash=sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455 +babel==2.13.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900 \ + --hash=sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed certifi==2023.7.22 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 \ --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9 cfgv==3.4.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9 \ --hash=sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560 -charset-normalizer==3.2.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96 \ - --hash=sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c \ - --hash=sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710 \ - --hash=sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706 \ - --hash=sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020 \ - --hash=sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252 \ - --hash=sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad \ - --hash=sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329 \ - --hash=sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a \ - --hash=sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f \ - --hash=sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6 \ - --hash=sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4 \ - --hash=sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a \ - --hash=sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46 \ - --hash=sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2 \ - --hash=sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23 \ - --hash=sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace \ - --hash=sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd \ - --hash=sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982 \ - --hash=sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10 \ - --hash=sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2 \ - --hash=sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea \ - --hash=sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09 \ - --hash=sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5 \ - --hash=sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149 \ - --hash=sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489 \ - --hash=sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9 \ - --hash=sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80 \ - --hash=sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592 \ - --hash=sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3 \ - --hash=sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6 \ - --hash=sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed \ - --hash=sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c \ - --hash=sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200 \ - --hash=sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a \ - --hash=sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e \ - --hash=sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d \ - --hash=sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6 \ - --hash=sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623 \ - --hash=sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669 \ - --hash=sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3 \ - --hash=sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa \ - --hash=sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9 \ - --hash=sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2 \ - --hash=sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f \ - --hash=sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1 \ - --hash=sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4 \ - --hash=sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a \ - --hash=sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8 \ - --hash=sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3 \ - --hash=sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029 \ - --hash=sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f \ - --hash=sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959 \ - --hash=sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22 \ - --hash=sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7 \ - --hash=sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952 \ - --hash=sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346 \ - --hash=sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e \ - --hash=sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d \ - --hash=sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299 \ - --hash=sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd \ - --hash=sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a \ - --hash=sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3 \ - --hash=sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037 \ - --hash=sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94 \ - --hash=sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c \ - --hash=sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858 \ - --hash=sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a \ - --hash=sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449 \ - --hash=sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c \ - --hash=sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918 \ - --hash=sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1 \ - --hash=sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c \ - --hash=sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac \ - --hash=sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa -click==8.1.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd \ - --hash=sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5 +charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ + --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ + --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ + --hash=sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8 \ + --hash=sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09 \ + --hash=sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185 \ + --hash=sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574 \ + --hash=sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e \ + --hash=sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519 \ + --hash=sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898 \ + --hash=sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269 \ + --hash=sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3 \ + --hash=sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f \ + --hash=sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6 \ + --hash=sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8 \ + --hash=sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a \ + --hash=sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73 \ + --hash=sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc \ + --hash=sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714 \ + --hash=sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2 \ + --hash=sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc \ + --hash=sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce \ + --hash=sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d \ + --hash=sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e \ + --hash=sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6 \ + --hash=sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269 \ + --hash=sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96 \ + --hash=sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d \ + --hash=sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a \ + --hash=sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4 \ + --hash=sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77 \ + --hash=sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d \ + --hash=sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0 \ + --hash=sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed \ + --hash=sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068 \ + --hash=sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac \ + --hash=sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25 \ + --hash=sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8 \ + --hash=sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab \ + --hash=sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26 \ + --hash=sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2 \ + --hash=sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db \ + --hash=sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f \ + --hash=sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5 \ + --hash=sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99 \ + --hash=sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c \ + --hash=sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d \ + --hash=sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811 \ + --hash=sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa \ + --hash=sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a \ + --hash=sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03 \ + --hash=sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b \ + --hash=sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04 \ + --hash=sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c \ + --hash=sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001 \ + --hash=sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458 \ + --hash=sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389 \ + --hash=sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99 \ + --hash=sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985 \ + --hash=sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537 \ + --hash=sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238 \ + --hash=sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f \ + --hash=sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d \ + --hash=sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796 \ + --hash=sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a \ + --hash=sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143 \ + --hash=sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8 \ + --hash=sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c \ + --hash=sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5 \ + --hash=sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5 \ + --hash=sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711 \ + --hash=sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4 \ + --hash=sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6 \ + --hash=sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c \ + --hash=sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7 \ + --hash=sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4 \ + --hash=sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b \ + --hash=sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae \ + --hash=sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12 \ + --hash=sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c \ + --hash=sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae \ + --hash=sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8 \ + --hash=sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887 \ + --hash=sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b \ + --hash=sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4 \ + --hash=sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f \ + --hash=sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5 \ + --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ + --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ + --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 +click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ + --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 @@ -98,12 +113,12 @@ distlib==0.3.7 ; python_version >= "3.8" and python_version < "4.0" \ docutils==0.18.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c \ --hash=sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06 -filelock==3.12.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81 \ - --hash=sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec -identify==2.5.26 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:7243800bce2f58404ed41b7c002e53d4d22bcf3ae1b7900c2d7aefd95394bf7f \ - --hash=sha256:c22a8ead0d4ca11f1edd6c9418c3220669b3b7533ada0a0ffa6cc0ef85cf9b54 +filelock==3.13.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ + --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c +identify==2.5.31 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7736b3c7a28233637e3c36550646fc6389bedd74ae84cb788200cc8e2dd60b75 \ + --hash=sha256:90199cb9e7bd3c5407a9b7e81b4abec4bb9d249991c79439ec8af740afc6293d idna==3.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 @@ -182,60 +197,62 @@ myst-parser==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ nodeenv==1.8.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2 \ --hash=sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec -packaging==23.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \ - --hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f -platformdirs==3.10.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d \ - --hash=sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d +packaging==23.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ + --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 +platformdirs==3.11.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3 \ + --hash=sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e pre-commit==3.2.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0b4210aea813fe81144e87c5a291f09ea66f199f367fa1df41b55e1d26e1e2b4 \ --hash=sha256:5b808fcbda4afbccf6d6633a56663fed35b6c2bc08096fd3d47ce197ac351d9d -pydantic==1.10.12 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:0fe8a415cea8f340e7a9af9c54fc71a649b43e8ca3cc732986116b3cb135d303 \ - --hash=sha256:1289c180abd4bd4555bb927c42ee42abc3aee02b0fb2d1223fb7c6e5bef87dbe \ - --hash=sha256:1eb2085c13bce1612da8537b2d90f549c8cbb05c67e8f22854e201bde5d98a47 \ - --hash=sha256:2031de0967c279df0d8a1c72b4ffc411ecd06bac607a212892757db7462fc494 \ - --hash=sha256:2a7bac939fa326db1ab741c9d7f44c565a1d1e80908b3797f7f81a4f86bc8d33 \ - --hash=sha256:2d5a58feb9a39f481eda4d5ca220aa8b9d4f21a41274760b9bc66bfd72595b86 \ - --hash=sha256:2f9a6fab5f82ada41d56b0602606a5506aab165ca54e52bc4545028382ef1c5d \ - --hash=sha256:2fcfb5296d7877af406ba1547dfde9943b1256d8928732267e2653c26938cd9c \ - --hash=sha256:549a8e3d81df0a85226963611950b12d2d334f214436a19537b2efed61b7639a \ - --hash=sha256:598da88dfa127b666852bef6d0d796573a8cf5009ffd62104094a4fe39599565 \ - --hash=sha256:5d1197e462e0364906cbc19681605cb7c036f2475c899b6f296104ad42b9f5fb \ - --hash=sha256:69328e15cfda2c392da4e713443c7dbffa1505bc9d566e71e55abe14c97ddc62 \ - --hash=sha256:6a9dfa722316f4acf4460afdf5d41d5246a80e249c7ff475c43a3a1e9d75cf62 \ - --hash=sha256:6b30bcb8cbfccfcf02acb8f1a261143fab622831d9c0989707e0e659f77a18e0 \ - --hash=sha256:6c076be61cd0177a8433c0adcb03475baf4ee91edf5a4e550161ad57fc90f523 \ - --hash=sha256:771735dc43cf8383959dc9b90aa281f0b6092321ca98677c5fb6125a6f56d58d \ - --hash=sha256:795e34e6cc065f8f498c89b894a3c6da294a936ee71e644e4bd44de048af1405 \ - --hash=sha256:87afda5539d5140cb8ba9e8b8c8865cb5b1463924d38490d73d3ccfd80896b3f \ - --hash=sha256:8fb2aa3ab3728d950bcc885a2e9eff6c8fc40bc0b7bb434e555c215491bcf48b \ - --hash=sha256:a1fcb59f2f355ec350073af41d927bf83a63b50e640f4dbaa01053a28b7a7718 \ - --hash=sha256:a5e7add47a5b5a40c49b3036d464e3c7802f8ae0d1e66035ea16aa5b7a3923ed \ - --hash=sha256:a73f489aebd0c2121ed974054cb2759af8a9f747de120acd2c3394cf84176ccb \ - --hash=sha256:ab26038b8375581dc832a63c948f261ae0aa21f1d34c1293469f135fa92972a5 \ - --hash=sha256:b0d191db0f92dfcb1dec210ca244fdae5cbe918c6050b342d619c09d31eea0cc \ - --hash=sha256:b749a43aa51e32839c9d71dc67eb1e4221bb04af1033a32e3923d46f9effa942 \ - --hash=sha256:b7ccf02d7eb340b216ec33e53a3a629856afe1c6e0ef91d84a4e6f2fb2ca70fe \ - --hash=sha256:ba5b2e6fe6ca2b7e013398bc7d7b170e21cce322d266ffcd57cca313e54fb246 \ - --hash=sha256:ba5c4a8552bff16c61882db58544116d021d0b31ee7c66958d14cf386a5b5350 \ - --hash=sha256:c79e6a11a07da7374f46970410b41d5e266f7f38f6a17a9c4823db80dadf4303 \ - --hash=sha256:ca48477862372ac3770969b9d75f1bf66131d386dba79506c46d75e6b48c1e09 \ - --hash=sha256:dea7adcc33d5d105896401a1f37d56b47d443a2b2605ff8a969a0ed5543f7e33 \ - --hash=sha256:e0a16d274b588767602b7646fa05af2782576a6cf1022f4ba74cbb4db66f6ca8 \ - --hash=sha256:e4129b528c6baa99a429f97ce733fff478ec955513630e61b49804b6cf9b224a \ - --hash=sha256:e5f805d2d5d0a41633651a73fa4ecdd0b3d7a49de4ec3fadf062fe16501ddbf1 \ - --hash=sha256:ef6c96b2baa2100ec91a4b428f80d8f28a3c9e53568219b6c298c1125572ebc6 \ - --hash=sha256:fdbdd1d630195689f325c9ef1a12900524dceb503b00a987663ff4f58669b93d +pydantic==1.10.13 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1740068fd8e2ef6eb27a20e5651df000978edce6da6803c2bef0bc74540f9548 \ + --hash=sha256:210ce042e8f6f7c01168b2d84d4c9eb2b009fe7bf572c2266e235edf14bacd80 \ + --hash=sha256:32c8b48dcd3b2ac4e78b0ba4af3a2c2eb6048cb75202f0ea7b34feb740efc340 \ + --hash=sha256:3ecea2b9d80e5333303eeb77e180b90e95eea8f765d08c3d278cd56b00345d01 \ + --hash=sha256:4b03e42ec20286f052490423682016fd80fda830d8e4119f8ab13ec7464c0132 \ + --hash=sha256:4c5370a7edaac06daee3af1c8b1192e305bc102abcbf2a92374b5bc793818599 \ + --hash=sha256:56e3ff861c3b9c6857579de282ce8baabf443f42ffba355bf070770ed63e11e1 \ + --hash=sha256:5a1f9f747851338933942db7af7b6ee8268568ef2ed86c4185c6ef4402e80ba8 \ + --hash=sha256:5e08865bc6464df8c7d61439ef4439829e3ab62ab1669cddea8dd00cd74b9ffe \ + --hash=sha256:61d9dce220447fb74f45e73d7ff3b530e25db30192ad8d425166d43c5deb6df0 \ + --hash=sha256:654db58ae399fe6434e55325a2c3e959836bd17a6f6a0b6ca8107ea0571d2e17 \ + --hash=sha256:678bcf5591b63cc917100dc50ab6caebe597ac67e8c9ccb75e698f66038ea953 \ + --hash=sha256:6cf25c1a65c27923a17b3da28a0bdb99f62ee04230c931d83e888012851f4e7f \ + --hash=sha256:75ac15385a3534d887a99c713aa3da88a30fbd6204a5cd0dc4dab3d770b9bd2f \ + --hash=sha256:75b297827b59bc229cac1a23a2f7a4ac0031068e5be0ce385be1462e7e17a35d \ + --hash=sha256:7d6f6e7305244bddb4414ba7094ce910560c907bdfa3501e9db1a7fd7eaea127 \ + --hash=sha256:84bafe2e60b5e78bc64a2941b4c071a4b7404c5c907f5f5a99b0139781e69ed8 \ + --hash=sha256:854223752ba81e3abf663d685f105c64150873cc6f5d0c01d3e3220bcff7d36f \ + --hash=sha256:8ae5dd6b721459bfa30805f4c25880e0dd78fc5b5879f9f7a692196ddcb5a580 \ + --hash=sha256:8ef467901d7a41fa0ca6db9ae3ec0021e3f657ce2c208e98cd511f3161c762c6 \ + --hash=sha256:968ac42970f57b8344ee08837b62f6ee6f53c33f603547a55571c954a4225691 \ + --hash=sha256:97cce3ae7341f7620a0ba5ef6cf043975cd9d2b81f3aa5f4ea37928269bc1b87 \ + --hash=sha256:9849f031cf8a2f0a928fe885e5a04b08006d6d41876b8bbd2fc68a18f9f2e3fd \ + --hash=sha256:9f00790179497767aae6bcdc36355792c79e7bbb20b145ff449700eb076c5f96 \ + --hash=sha256:b87326822e71bd5f313e7d3bfdc77ac3247035ac10b0c0618bd99dcf95b1e687 \ + --hash=sha256:b97c1fac8c49be29486df85968682b0afa77e1b809aff74b83081cc115e52f33 \ + --hash=sha256:bc0898c12f8e9c97f6cd44c0ed70d55749eaf783716896960b4ecce2edfd2d69 \ + --hash=sha256:c553f6a156deb868ba38a23cf0df886c63492e9257f60a79c0fd8e7173537653 \ + --hash=sha256:c636925f38b8db208e09d344c7aa4f29a86bb9947495dd6b6d376ad10334fb78 \ + --hash=sha256:c958d053453a1c4b1c2062b05cd42d9d5c8eb67537b8d5a7e3c3032943ecd261 \ + --hash=sha256:d3a3c792a58e1622667a2837512099eac62490cdfd63bd407993aaf200a4cf1f \ + --hash=sha256:e31647d85a2013d926ce60b84f9dd5300d44535a9941fe825dc349ae1f760df9 \ + --hash=sha256:e70ca129d2053fb8b728ee7d1af8e553a928d7e301a311094b8a0501adc8763d \ + --hash=sha256:efff03cc7a4f29d9009d1c96ceb1e7a70a65cfe86e89d34e4a5f2ab1e5693737 \ + --hash=sha256:f59ef915cac80275245824e9d771ee939133be38215555e9dc90c6cb148aaeb5 \ + --hash=sha256:f8e81fc5fb17dae698f52bdd1c4f18b6ca674d7068242b2aff075f588301bbb0 pygments==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692 \ --hash=sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29 -pytz==2023.3 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588 \ - --hash=sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb +pytz==2023.3.post1 ; python_version >= "3.8" and python_version < "3.9" \ + --hash=sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b \ + --hash=sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7 pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ + --hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \ --hash=sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741 \ --hash=sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206 \ --hash=sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27 \ @@ -243,7 +260,10 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62 \ --hash=sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98 \ --hash=sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696 \ + --hash=sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290 \ + --hash=sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9 \ --hash=sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d \ + --hash=sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6 \ --hash=sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867 \ --hash=sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47 \ --hash=sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486 \ @@ -251,9 +271,12 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3 \ --hash=sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007 \ --hash=sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938 \ + --hash=sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0 \ --hash=sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c \ --hash=sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735 \ --hash=sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d \ + --hash=sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28 \ + --hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \ --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \ --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \ --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \ @@ -268,7 +291,9 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43 \ --hash=sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859 \ --hash=sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673 \ + --hash=sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54 \ --hash=sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a \ + --hash=sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b \ --hash=sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab \ --hash=sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa \ --hash=sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c \ @@ -278,18 +303,18 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rich==13.5.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:146a90b3b6b47cac4a73c12866a499e9817426423f57c5a66949c086191a8808 \ - --hash=sha256:fb9d6c0a0f643c99eed3875b5377a184132ba9be4d61516a55273d3554d75a39 +rich==13.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:2b38e2fe9ca72c9a00170a1a2d20c63c790d0e10ef1fe35eba76e1e7b1d7d245 \ + --hash=sha256:5c14d22737e6d5084ef4771b62d5d4363165b403455a30a1c8ca39dc7b644bef settings-doc==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:136f3876619e112bfddc67f23b1ce8f4ed7264a3b5fdae4f99c639200947cf4c \ --hash=sha256:492fce39832fbb1d72eff8b7ea7104fe2f97d9b08f18e1f49b09c05554644443 -setuptools==68.1.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:d59c97e7b774979a5ccb96388efc9eb65518004537e85d52e81eaee89ab6dd91 \ - --hash=sha256:e13e1b0bc760e9b0127eda042845999b2f913e12437046e663b833aa96d89715 -shellingham==1.5.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:95946024df2db98c83382606a9ae875f613b15c950c980a3bf7a5adde40e7720 \ - --hash=sha256:db9b385e903ebfe07958f6df493d47d4432ff5bed71e75ed3e613ace090be5f3 +setuptools==68.2.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87 \ + --hash=sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a +shellingham==1.5.4 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 \ + --hash=sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de snowballstemmer==2.2.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1 \ --hash=sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a @@ -326,15 +351,15 @@ sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.8" and python_versio typer[all]==0.9.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2 \ --hash=sha256:5d96d986a21493606a358cae4461bd8cdf83cbf33a5aa950ae629ca3b51467ee -typing-extensions==4.7.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36 \ - --hash=sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2 +typing-extensions==4.8.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0 \ + --hash=sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef urllib3==2.0.7 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84 \ --hash=sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e -virtualenv==20.24.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:95a6e9398b4967fbcb5fef2acec5efaf9aa4972049d9ae41f95e0972a683fd02 \ - --hash=sha256:e5c3b4ce817b0b328af041506a2a299418c98747c4b1e68cb7527e74ced23efc -zipp==3.16.2 ; python_version >= "3.8" and python_version < "3.10" \ - --hash=sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0 \ - --hash=sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147 +virtualenv==20.24.6 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:02ece4f56fbf939dbbc33c0715159951d6bf14aaf5457b092e4548e1382455af \ + --hash=sha256:520d056652454c5098a00c0f073611ccbea4c79089331f60bf9d7ba247bb7381 +zipp==3.17.0 ; python_version >= "3.8" and python_version < "3.10" \ + --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ + --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/requirements.txt b/requirements.txt index 9b9b625aef4..7015ec51ad5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,91 +1,106 @@ alabaster==0.7.13 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3 \ --hash=sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2 -babel==2.12.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610 \ - --hash=sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455 +babel==2.13.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900 \ + --hash=sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed certifi==2023.7.22 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 \ --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9 -charset-normalizer==3.2.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96 \ - --hash=sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c \ - --hash=sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710 \ - --hash=sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706 \ - --hash=sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020 \ - --hash=sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252 \ - --hash=sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad \ - --hash=sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329 \ - --hash=sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a \ - --hash=sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f \ - --hash=sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6 \ - --hash=sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4 \ - --hash=sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a \ - --hash=sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46 \ - --hash=sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2 \ - --hash=sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23 \ - --hash=sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace \ - --hash=sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd \ - --hash=sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982 \ - --hash=sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10 \ - --hash=sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2 \ - --hash=sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea \ - --hash=sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09 \ - --hash=sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5 \ - --hash=sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149 \ - --hash=sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489 \ - --hash=sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9 \ - --hash=sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80 \ - --hash=sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592 \ - --hash=sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3 \ - --hash=sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6 \ - --hash=sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed \ - --hash=sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c \ - --hash=sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200 \ - --hash=sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a \ - --hash=sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e \ - --hash=sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d \ - --hash=sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6 \ - --hash=sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623 \ - --hash=sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669 \ - --hash=sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3 \ - --hash=sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa \ - --hash=sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9 \ - --hash=sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2 \ - --hash=sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f \ - --hash=sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1 \ - --hash=sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4 \ - --hash=sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a \ - --hash=sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8 \ - --hash=sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3 \ - --hash=sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029 \ - --hash=sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f \ - --hash=sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959 \ - --hash=sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22 \ - --hash=sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7 \ - --hash=sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952 \ - --hash=sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346 \ - --hash=sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e \ - --hash=sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d \ - --hash=sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299 \ - --hash=sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd \ - --hash=sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a \ - --hash=sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3 \ - --hash=sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037 \ - --hash=sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94 \ - --hash=sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c \ - --hash=sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858 \ - --hash=sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a \ - --hash=sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449 \ - --hash=sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c \ - --hash=sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918 \ - --hash=sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1 \ - --hash=sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c \ - --hash=sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac \ - --hash=sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa -click==8.1.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd \ - --hash=sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5 +charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ + --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ + --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ + --hash=sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8 \ + --hash=sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09 \ + --hash=sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185 \ + --hash=sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574 \ + --hash=sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e \ + --hash=sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519 \ + --hash=sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898 \ + --hash=sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269 \ + --hash=sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3 \ + --hash=sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f \ + --hash=sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6 \ + --hash=sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8 \ + --hash=sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a \ + --hash=sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73 \ + --hash=sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc \ + --hash=sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714 \ + --hash=sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2 \ + --hash=sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc \ + --hash=sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce \ + --hash=sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d \ + --hash=sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e \ + --hash=sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6 \ + --hash=sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269 \ + --hash=sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96 \ + --hash=sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d \ + --hash=sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a \ + --hash=sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4 \ + --hash=sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77 \ + --hash=sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d \ + --hash=sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0 \ + --hash=sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed \ + --hash=sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068 \ + --hash=sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac \ + --hash=sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25 \ + --hash=sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8 \ + --hash=sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab \ + --hash=sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26 \ + --hash=sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2 \ + --hash=sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db \ + --hash=sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f \ + --hash=sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5 \ + --hash=sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99 \ + --hash=sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c \ + --hash=sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d \ + --hash=sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811 \ + --hash=sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa \ + --hash=sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a \ + --hash=sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03 \ + --hash=sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b \ + --hash=sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04 \ + --hash=sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c \ + --hash=sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001 \ + --hash=sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458 \ + --hash=sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389 \ + --hash=sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99 \ + --hash=sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985 \ + --hash=sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537 \ + --hash=sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238 \ + --hash=sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f \ + --hash=sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d \ + --hash=sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796 \ + --hash=sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a \ + --hash=sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143 \ + --hash=sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8 \ + --hash=sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c \ + --hash=sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5 \ + --hash=sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5 \ + --hash=sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711 \ + --hash=sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4 \ + --hash=sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6 \ + --hash=sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c \ + --hash=sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7 \ + --hash=sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4 \ + --hash=sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b \ + --hash=sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae \ + --hash=sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12 \ + --hash=sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c \ + --hash=sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae \ + --hash=sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8 \ + --hash=sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887 \ + --hash=sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b \ + --hash=sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4 \ + --hash=sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f \ + --hash=sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5 \ + --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ + --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ + --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 +click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ + --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 @@ -167,54 +182,56 @@ mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0" \ myst-parser==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:7c36344ae39c8e740dad7fdabf5aa6fc4897a813083c6cc9990044eb93656b14 \ --hash=sha256:ea929a67a6a0b1683cdbe19b8d2e724cd7643f8aa3e7bb18dd65beac3483bead -packaging==23.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \ - --hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f -pydantic==1.10.12 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:0fe8a415cea8f340e7a9af9c54fc71a649b43e8ca3cc732986116b3cb135d303 \ - --hash=sha256:1289c180abd4bd4555bb927c42ee42abc3aee02b0fb2d1223fb7c6e5bef87dbe \ - --hash=sha256:1eb2085c13bce1612da8537b2d90f549c8cbb05c67e8f22854e201bde5d98a47 \ - --hash=sha256:2031de0967c279df0d8a1c72b4ffc411ecd06bac607a212892757db7462fc494 \ - --hash=sha256:2a7bac939fa326db1ab741c9d7f44c565a1d1e80908b3797f7f81a4f86bc8d33 \ - --hash=sha256:2d5a58feb9a39f481eda4d5ca220aa8b9d4f21a41274760b9bc66bfd72595b86 \ - --hash=sha256:2f9a6fab5f82ada41d56b0602606a5506aab165ca54e52bc4545028382ef1c5d \ - --hash=sha256:2fcfb5296d7877af406ba1547dfde9943b1256d8928732267e2653c26938cd9c \ - --hash=sha256:549a8e3d81df0a85226963611950b12d2d334f214436a19537b2efed61b7639a \ - --hash=sha256:598da88dfa127b666852bef6d0d796573a8cf5009ffd62104094a4fe39599565 \ - --hash=sha256:5d1197e462e0364906cbc19681605cb7c036f2475c899b6f296104ad42b9f5fb \ - --hash=sha256:69328e15cfda2c392da4e713443c7dbffa1505bc9d566e71e55abe14c97ddc62 \ - --hash=sha256:6a9dfa722316f4acf4460afdf5d41d5246a80e249c7ff475c43a3a1e9d75cf62 \ - --hash=sha256:6b30bcb8cbfccfcf02acb8f1a261143fab622831d9c0989707e0e659f77a18e0 \ - --hash=sha256:6c076be61cd0177a8433c0adcb03475baf4ee91edf5a4e550161ad57fc90f523 \ - --hash=sha256:771735dc43cf8383959dc9b90aa281f0b6092321ca98677c5fb6125a6f56d58d \ - --hash=sha256:795e34e6cc065f8f498c89b894a3c6da294a936ee71e644e4bd44de048af1405 \ - --hash=sha256:87afda5539d5140cb8ba9e8b8c8865cb5b1463924d38490d73d3ccfd80896b3f \ - --hash=sha256:8fb2aa3ab3728d950bcc885a2e9eff6c8fc40bc0b7bb434e555c215491bcf48b \ - --hash=sha256:a1fcb59f2f355ec350073af41d927bf83a63b50e640f4dbaa01053a28b7a7718 \ - --hash=sha256:a5e7add47a5b5a40c49b3036d464e3c7802f8ae0d1e66035ea16aa5b7a3923ed \ - --hash=sha256:a73f489aebd0c2121ed974054cb2759af8a9f747de120acd2c3394cf84176ccb \ - --hash=sha256:ab26038b8375581dc832a63c948f261ae0aa21f1d34c1293469f135fa92972a5 \ - --hash=sha256:b0d191db0f92dfcb1dec210ca244fdae5cbe918c6050b342d619c09d31eea0cc \ - --hash=sha256:b749a43aa51e32839c9d71dc67eb1e4221bb04af1033a32e3923d46f9effa942 \ - --hash=sha256:b7ccf02d7eb340b216ec33e53a3a629856afe1c6e0ef91d84a4e6f2fb2ca70fe \ - --hash=sha256:ba5b2e6fe6ca2b7e013398bc7d7b170e21cce322d266ffcd57cca313e54fb246 \ - --hash=sha256:ba5c4a8552bff16c61882db58544116d021d0b31ee7c66958d14cf386a5b5350 \ - --hash=sha256:c79e6a11a07da7374f46970410b41d5e266f7f38f6a17a9c4823db80dadf4303 \ - --hash=sha256:ca48477862372ac3770969b9d75f1bf66131d386dba79506c46d75e6b48c1e09 \ - --hash=sha256:dea7adcc33d5d105896401a1f37d56b47d443a2b2605ff8a969a0ed5543f7e33 \ - --hash=sha256:e0a16d274b588767602b7646fa05af2782576a6cf1022f4ba74cbb4db66f6ca8 \ - --hash=sha256:e4129b528c6baa99a429f97ce733fff478ec955513630e61b49804b6cf9b224a \ - --hash=sha256:e5f805d2d5d0a41633651a73fa4ecdd0b3d7a49de4ec3fadf062fe16501ddbf1 \ - --hash=sha256:ef6c96b2baa2100ec91a4b428f80d8f28a3c9e53568219b6c298c1125572ebc6 \ - --hash=sha256:fdbdd1d630195689f325c9ef1a12900524dceb503b00a987663ff4f58669b93d +packaging==23.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ + --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 +pydantic==1.10.13 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1740068fd8e2ef6eb27a20e5651df000978edce6da6803c2bef0bc74540f9548 \ + --hash=sha256:210ce042e8f6f7c01168b2d84d4c9eb2b009fe7bf572c2266e235edf14bacd80 \ + --hash=sha256:32c8b48dcd3b2ac4e78b0ba4af3a2c2eb6048cb75202f0ea7b34feb740efc340 \ + --hash=sha256:3ecea2b9d80e5333303eeb77e180b90e95eea8f765d08c3d278cd56b00345d01 \ + --hash=sha256:4b03e42ec20286f052490423682016fd80fda830d8e4119f8ab13ec7464c0132 \ + --hash=sha256:4c5370a7edaac06daee3af1c8b1192e305bc102abcbf2a92374b5bc793818599 \ + --hash=sha256:56e3ff861c3b9c6857579de282ce8baabf443f42ffba355bf070770ed63e11e1 \ + --hash=sha256:5a1f9f747851338933942db7af7b6ee8268568ef2ed86c4185c6ef4402e80ba8 \ + --hash=sha256:5e08865bc6464df8c7d61439ef4439829e3ab62ab1669cddea8dd00cd74b9ffe \ + --hash=sha256:61d9dce220447fb74f45e73d7ff3b530e25db30192ad8d425166d43c5deb6df0 \ + --hash=sha256:654db58ae399fe6434e55325a2c3e959836bd17a6f6a0b6ca8107ea0571d2e17 \ + --hash=sha256:678bcf5591b63cc917100dc50ab6caebe597ac67e8c9ccb75e698f66038ea953 \ + --hash=sha256:6cf25c1a65c27923a17b3da28a0bdb99f62ee04230c931d83e888012851f4e7f \ + --hash=sha256:75ac15385a3534d887a99c713aa3da88a30fbd6204a5cd0dc4dab3d770b9bd2f \ + --hash=sha256:75b297827b59bc229cac1a23a2f7a4ac0031068e5be0ce385be1462e7e17a35d \ + --hash=sha256:7d6f6e7305244bddb4414ba7094ce910560c907bdfa3501e9db1a7fd7eaea127 \ + --hash=sha256:84bafe2e60b5e78bc64a2941b4c071a4b7404c5c907f5f5a99b0139781e69ed8 \ + --hash=sha256:854223752ba81e3abf663d685f105c64150873cc6f5d0c01d3e3220bcff7d36f \ + --hash=sha256:8ae5dd6b721459bfa30805f4c25880e0dd78fc5b5879f9f7a692196ddcb5a580 \ + --hash=sha256:8ef467901d7a41fa0ca6db9ae3ec0021e3f657ce2c208e98cd511f3161c762c6 \ + --hash=sha256:968ac42970f57b8344ee08837b62f6ee6f53c33f603547a55571c954a4225691 \ + --hash=sha256:97cce3ae7341f7620a0ba5ef6cf043975cd9d2b81f3aa5f4ea37928269bc1b87 \ + --hash=sha256:9849f031cf8a2f0a928fe885e5a04b08006d6d41876b8bbd2fc68a18f9f2e3fd \ + --hash=sha256:9f00790179497767aae6bcdc36355792c79e7bbb20b145ff449700eb076c5f96 \ + --hash=sha256:b87326822e71bd5f313e7d3bfdc77ac3247035ac10b0c0618bd99dcf95b1e687 \ + --hash=sha256:b97c1fac8c49be29486df85968682b0afa77e1b809aff74b83081cc115e52f33 \ + --hash=sha256:bc0898c12f8e9c97f6cd44c0ed70d55749eaf783716896960b4ecce2edfd2d69 \ + --hash=sha256:c553f6a156deb868ba38a23cf0df886c63492e9257f60a79c0fd8e7173537653 \ + --hash=sha256:c636925f38b8db208e09d344c7aa4f29a86bb9947495dd6b6d376ad10334fb78 \ + --hash=sha256:c958d053453a1c4b1c2062b05cd42d9d5c8eb67537b8d5a7e3c3032943ecd261 \ + --hash=sha256:d3a3c792a58e1622667a2837512099eac62490cdfd63bd407993aaf200a4cf1f \ + --hash=sha256:e31647d85a2013d926ce60b84f9dd5300d44535a9941fe825dc349ae1f760df9 \ + --hash=sha256:e70ca129d2053fb8b728ee7d1af8e553a928d7e301a311094b8a0501adc8763d \ + --hash=sha256:efff03cc7a4f29d9009d1c96ceb1e7a70a65cfe86e89d34e4a5f2ab1e5693737 \ + --hash=sha256:f59ef915cac80275245824e9d771ee939133be38215555e9dc90c6cb148aaeb5 \ + --hash=sha256:f8e81fc5fb17dae698f52bdd1c4f18b6ca674d7068242b2aff075f588301bbb0 pygments==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692 \ --hash=sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29 -pytz==2023.3 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588 \ - --hash=sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb +pytz==2023.3.post1 ; python_version >= "3.8" and python_version < "3.9" \ + --hash=sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b \ + --hash=sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7 pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ + --hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \ --hash=sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741 \ --hash=sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206 \ --hash=sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27 \ @@ -222,7 +239,10 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62 \ --hash=sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98 \ --hash=sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696 \ + --hash=sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290 \ + --hash=sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9 \ --hash=sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d \ + --hash=sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6 \ --hash=sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867 \ --hash=sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47 \ --hash=sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486 \ @@ -230,9 +250,12 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3 \ --hash=sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007 \ --hash=sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938 \ + --hash=sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0 \ --hash=sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c \ --hash=sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735 \ --hash=sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d \ + --hash=sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28 \ + --hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \ --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \ --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \ --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \ @@ -247,7 +270,9 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43 \ --hash=sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859 \ --hash=sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673 \ + --hash=sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54 \ --hash=sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a \ + --hash=sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b \ --hash=sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab \ --hash=sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa \ --hash=sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c \ @@ -257,15 +282,18 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rich==13.5.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:146a90b3b6b47cac4a73c12866a499e9817426423f57c5a66949c086191a8808 \ - --hash=sha256:fb9d6c0a0f643c99eed3875b5377a184132ba9be4d61516a55273d3554d75a39 +rich==13.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:2b38e2fe9ca72c9a00170a1a2d20c63c790d0e10ef1fe35eba76e1e7b1d7d245 \ + --hash=sha256:5c14d22737e6d5084ef4771b62d5d4363165b403455a30a1c8ca39dc7b644bef settings-doc==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:136f3876619e112bfddc67f23b1ce8f4ed7264a3b5fdae4f99c639200947cf4c \ --hash=sha256:492fce39832fbb1d72eff8b7ea7104fe2f97d9b08f18e1f49b09c05554644443 -shellingham==1.5.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:95946024df2db98c83382606a9ae875f613b15c950c980a3bf7a5adde40e7720 \ - --hash=sha256:db9b385e903ebfe07958f6df493d47d4432ff5bed71e75ed3e613ace090be5f3 +setuptools==68.2.2 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87 \ + --hash=sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a +shellingham==1.5.4 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 \ + --hash=sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de snowballstemmer==2.2.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1 \ --hash=sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a @@ -302,12 +330,12 @@ sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.8" and python_versio typer[all]==0.9.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2 \ --hash=sha256:5d96d986a21493606a358cae4461bd8cdf83cbf33a5aa950ae629ca3b51467ee -typing-extensions==4.7.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36 \ - --hash=sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2 +typing-extensions==4.8.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0 \ + --hash=sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef urllib3==2.0.7 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84 \ --hash=sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e -zipp==3.16.2 ; python_version >= "3.8" and python_version < "3.10" \ - --hash=sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0 \ - --hash=sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147 +zipp==3.17.0 ; python_version >= "3.8" and python_version < "3.10" \ + --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ + --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 From b1456783b5b24235bb060747b7cb8ebf6548c78d Mon Sep 17 00:00:00 2001 From: Patrick Date: Fri, 17 Nov 2023 12:00:51 +0100 Subject: [PATCH 19/30] Miscellaneous language updates (#1994) Co-authored-by: Jan Klopper Co-authored-by: ammar92 --- rocky/rocky/settings.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/rocky/rocky/settings.py b/rocky/rocky/settings.py index d0bc0b366b7..90049a1453b 100644 --- a/rocky/rocky/settings.py +++ b/rocky/rocky/settings.py @@ -277,6 +277,7 @@ # Add custom languages not provided by Django EXTRA_LANG_INFO = { "pap": {"bidi": False, "code": "pap", "name": "Papiamentu", "name_local": "Papiamentu"}, + "en@pirate": {"bidi": False, "code": "en@pirate", "name": "English (Pirate)", "name_local": "English (Pirate)"}, } LANG_INFO = locale.LANG_INFO.copy() LANG_INFO.update(EXTRA_LANG_INFO) @@ -289,6 +290,12 @@ ("it", "it"), ] +if env.bool("PIRATE", False): + LANGUAGE_CODE = "en@pirate" + LANGUAGES += [ + ("en@pirate", "en@pirate"), + ] + # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/4.2/howto/static-files/ From 37be8b050544a507706e8dc2c74833fdcac7f495 Mon Sep 17 00:00:00 2001 From: Jan Klopper Date: Fri, 17 Nov 2023 12:59:28 +0100 Subject: [PATCH 20/30] check for required plugin settings only optionally (#2031) Co-authored-by: Jeroen Dekkers Co-authored-by: ammar92 --- rocky/katalogus/views/plugin_enable_disable.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rocky/katalogus/views/plugin_enable_disable.py b/rocky/katalogus/views/plugin_enable_disable.py index 3a079136e54..48467fd51a1 100644 --- a/rocky/katalogus/views/plugin_enable_disable.py +++ b/rocky/katalogus/views/plugin_enable_disable.py @@ -15,7 +15,7 @@ class PluginEnableDisableView(SinglePluginView): def check_required_settings(self, settings: Dict): - if self.plugin_schema is None: + if self.plugin_schema is None or "required" not in self.plugin_schema: return True return all([field in settings for field in self.plugin_schema["required"]]) From 5b6c25f70e4e6a76cc6308412c2a5eabbf477915 Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Fri, 17 Nov 2023 13:28:39 +0100 Subject: [PATCH 21/30] Translations update from Hosted Weblate (#2040) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luca Racchetti Co-authored-by: 跨性别 Co-authored-by: Jan Klopper --- rocky/rocky/locale/it/LC_MESSAGES/django.po | 19 ++++++++++--------- rocky/rocky/locale/nl/LC_MESSAGES/django.po | 12 ++++++------ 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/rocky/rocky/locale/it/LC_MESSAGES/django.po b/rocky/rocky/locale/it/LC_MESSAGES/django.po index aad42e42822..d4e1a6c5d5d 100644 --- a/rocky/rocky/locale/it/LC_MESSAGES/django.po +++ b/rocky/rocky/locale/it/LC_MESSAGES/django.po @@ -1,19 +1,20 @@ # Brenno de Winter , 2023. +# Luca Racchetti , 2023. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-11-09 14:01+0000\n" -"PO-Revision-Date: 2023-10-11 21:00+0000\n" -"Last-Translator: Brenno de Winter \n" -"Language-Team: Italian \n" +"PO-Revision-Date: 2023-11-16 20:05+0000\n" +"Last-Translator: Luca Racchetti \n" +"Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.1-dev\n" +"X-Generator: Weblate 5.2\n" #: account/admin.py msgid "Permissions" @@ -42,11 +43,11 @@ msgstr "Come ti chiamiamo?" #: account/forms/account_setup.py msgid "Email" -msgstr "Email" +msgstr "E-mail" #: account/forms/account_setup.py msgid "Enter your email address." -msgstr "Inserisci il tuo indirizzo email." +msgstr "Inserisci il tuo indirizzo e-mail." #: account/forms/account_setup.py msgid "Password" @@ -58,11 +59,11 @@ msgstr "Scegli la tua super segreta password" #: account/forms/account_setup.py msgid "Choose another email." -msgstr "Scegli un'altra email." +msgstr "Scegli un'altra e-mail." #: account/forms/account_setup.py tools/forms/settings.py msgid "--- Please select one of the available options ----" -msgstr "--- Per favore seleziona una delle opzioni disponibili ----" +msgstr "--- Seleziona una delle opzioni disponibili ----" #: account/forms/account_setup.py msgid "Account Type" diff --git a/rocky/rocky/locale/nl/LC_MESSAGES/django.po b/rocky/rocky/locale/nl/LC_MESSAGES/django.po index 8564a5e724b..cd1d4bdf0ca 100644 --- a/rocky/rocky/locale/nl/LC_MESSAGES/django.po +++ b/rocky/rocky/locale/nl/LC_MESSAGES/django.po @@ -9,20 +9,20 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-11-09 14:01+0000\n" -"PO-Revision-Date: 2023-11-12 05:03+0000\n" +"PO-Revision-Date: 2023-11-16 20:05+0000\n" "Last-Translator: 跨性别 \n" -"Language-Team: Dutch \n" +"Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.2-dev\n" +"X-Generator: Weblate 5.2\n" #: account/admin.py msgid "Permissions" -msgstr "Toestemmingen" +msgstr "Machtigingen" #: account/admin.py msgid "Important dates" @@ -5909,7 +5909,7 @@ msgstr "Upload raw-bestand" #: rocky/views/bytes_raw.py msgid "Getting raw data failed." -msgstr "" +msgstr "Het ophalen van onbewerkte gegevens is mislukt." #: rocky/views/finding_add.py msgid "Add Finding" From 189a7f850a80dc834d44d0e7bb64d5ab4f7156f0 Mon Sep 17 00:00:00 2001 From: Donny Peeters <46660228+Donnype@users.noreply.github.com> Date: Mon, 20 Nov 2023 18:36:55 +0100 Subject: [PATCH 22/30] Add internet as a Network on creation of a new organization XTDB node (#2039) --- rocky/tools/models.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/rocky/tools/models.py b/rocky/tools/models.py index e0391041867..a94338afdb9 100644 --- a/rocky/tools/models.py +++ b/rocky/tools/models.py @@ -1,3 +1,4 @@ +import datetime import logging from functools import cached_property from typing import Iterable, Set @@ -8,7 +9,7 @@ from django.core.exceptions import ValidationError from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models -from django.db.models.signals import pre_save +from django.db.models.signals import post_save, pre_save from django.urls import reverse from django.utils.translation import gettext_lazy as _ from katalogus.client import KATalogusClientV1, get_katalogus @@ -19,7 +20,9 @@ ) from requests import RequestException +from octopoes.api.models import Declaration from octopoes.connector.octopoes import OctopoesAPIConnector +from octopoes.models.ooi.web import Network from rocky.exceptions import ( OctopoesDownException, OctopoesException, @@ -168,6 +171,16 @@ def pre_create(cls, sender, instance, *args, **kwargs): raise OctopoesException("Failed creating organization in Octopoes") from e + @classmethod + def post_create(cls, sender, instance, *args, **kwargs): + octopoes_client = cls._get_healthy_octopoes(instance.code) + + try: + valid_time = datetime.datetime.now(datetime.timezone.utc) + octopoes_client.save_declaration(Declaration(ooi=Network(name="internet"), valid_time=valid_time)) + except Exception: + logger.exception("Could not seed internet for organization %s", sender) + @staticmethod def _get_healthy_katalogus(organization_code: str) -> KATalogusClientV1: katalogus_client = get_katalogus(organization_code) @@ -197,6 +210,7 @@ def _get_healthy_octopoes(organization_code: str) -> OctopoesAPIConnector: pre_save.connect(Organization.pre_create, sender=Organization) +post_save.connect(Organization.post_create, sender=Organization) class OrganizationMember(models.Model): From aff272654557360b986f6a48d679ccdf02d68de2 Mon Sep 17 00:00:00 2001 From: originalsouth Date: Tue, 21 Nov 2023 11:26:15 +0100 Subject: [PATCH 23/30] Fix/2037 kat nmap normalizer (#2038) --- boefjes/boefjes/plugins/kat_nmap/normalize.py | 4 +- boefjes/tests/examples/raw/nmap_mispoes.xml | 39 +++++++++++++++++++ boefjes/tests/test_nmap.py | 20 ++++++++++ 3 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 boefjes/tests/examples/raw/nmap_mispoes.xml diff --git a/boefjes/boefjes/plugins/kat_nmap/normalize.py b/boefjes/boefjes/plugins/kat_nmap/normalize.py index 63812596ebf..e6393297370 100644 --- a/boefjes/boefjes/plugins/kat_nmap/normalize.py +++ b/boefjes/boefjes/plugins/kat_nmap/normalize.py @@ -44,9 +44,7 @@ def get_ip_ports_and_service(host: NmapHost, network: Network, netblock: Referen yield ip_port service_name = service.service - if port == 80: - service_name = "http" - if port == 443: + if service_name == "http" and service.tunnel == "ssl": service_name = "https" port_service = Service(name=service_name) diff --git a/boefjes/tests/examples/raw/nmap_mispoes.xml b/boefjes/tests/examples/raw/nmap_mispoes.xml new file mode 100644 index 00000000000..61b143ca602 --- /dev/null +++ b/boefjes/tests/examples/raw/nmap_mispoes.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + +

    + + + + + + + + +cpe:/a:openbsd:openssh:8.4p1cpe:/o:linux:linux_kernel +cpe:/a:isc:bind:9.16.44cpe:/o:linux:linux_kernel +cpe:/a:igor_sysoev:nginx:1.18.0 +cpe:/a:igor_sysoev:nginx:1.18.0 +cpe:/a:mysql:mysql + + + + + + diff --git a/boefjes/tests/test_nmap.py b/boefjes/tests/test_nmap.py index e4a16cf41a7..64996a32277 100644 --- a/boefjes/tests/test_nmap.py +++ b/boefjes/tests/test_nmap.py @@ -1,6 +1,10 @@ from unittest import TestCase +from boefjes.job_handler import serialize_ooi from boefjes.plugins.kat_nmap.main import Protocol, build_nmap_arguments +from boefjes.plugins.kat_nmap.normalize import run +from octopoes.models.ooi.network import IPAddressV4, Network +from tests.loading import get_boefje_meta, get_dummy_data, get_normalizer_meta class NmapTest(TestCase): @@ -163,3 +167,19 @@ def test_nmap_arguments_udp_top250_ipv6(self): ], args, ) + + def test_normalizer(self): + input_ooi = IPAddressV4(network=Network(name="internet").reference, address="134.209.85.72") + boefje_meta = get_boefje_meta(input_ooi=input_ooi.reference) + boefje_meta.arguments["input"] = serialize_ooi(input_ooi) + output = list(run(get_normalizer_meta(boefje_meta), get_dummy_data("raw/nmap_mispoes.xml"))) + self.assertEqual(17, len(output)) + for i, out in enumerate(output[:-1]): + if out.object_type == "IPPort" and output[i + 1].object_type == "Service": + if out.port == 80: + self.assertEqual("http", output[i + 1].name) + elif out.port == 443: + self.assertEqual("https", output[i + 1].name) + else: + self.assertNotEqual("http", output[i + 1].name) + self.assertNotEqual("https", output[i + 1].name) From 0c69a4445b463ff1549430a686062001d7182ad1 Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Wed, 22 Nov 2023 10:41:42 +0100 Subject: [PATCH 24/30] Translations update from Hosted Weblate (#2042) Co-authored-by: jan klopper Co-authored-by: Jan Klopper --- .../locale/en@pirate/LC_MESSAGES/django.po | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/rocky/rocky/locale/en@pirate/LC_MESSAGES/django.po b/rocky/rocky/locale/en@pirate/LC_MESSAGES/django.po index 22351af2210..bf06ffccbef 100644 --- a/rocky/rocky/locale/en@pirate/LC_MESSAGES/django.po +++ b/rocky/rocky/locale/en@pirate/LC_MESSAGES/django.po @@ -7,14 +7,16 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-11-09 14:01+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2023-11-18 13:03+0000\n" +"Last-Translator: jan klopper \n" +"Language-Team: English (Pirate) \n" "Language: en@pirate\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.2\n" #: account/admin.py msgid "Permissions" @@ -35,11 +37,11 @@ msgstr "" #: account/forms/account_setup.py msgid "This name we will use to communicate with you." -msgstr "" +msgstr "This name we will use t' talk to ye." #: account/forms/account_setup.py msgid "What do we call you?" -msgstr "" +msgstr "Whats yur name Capt'n?" #: account/forms/account_setup.py msgid "Email" @@ -55,7 +57,7 @@ msgstr "" #: account/forms/account_setup.py msgid "Choose your super secret password" -msgstr "" +msgstr "What would be ye super secret password?" #: account/forms/account_setup.py msgid "Choose another email." @@ -63,7 +65,7 @@ msgstr "" #: account/forms/account_setup.py tools/forms/settings.py msgid "--- Please select one of the available options ----" -msgstr "" +msgstr "--- Pick yur poison ---" #: account/forms/account_setup.py msgid "Account Type" @@ -92,7 +94,7 @@ msgstr "" #: account/forms/account_setup.py msgid "The name of the organization." -msgstr "" +msgstr "Name this ship." #: account/forms/account_setup.py msgid "explanation-organization-name" @@ -109,19 +111,19 @@ msgstr "" #: account/forms/account_setup.py msgid "Organization name is required to proceed." -msgstr "" +msgstr "A ship needs a name." #: account/forms/account_setup.py msgid "Choose another organization." -msgstr "" +msgstr "Board another ship." #: account/forms/account_setup.py msgid "Organization code is required to proceed." -msgstr "" +msgstr "A ship code is needed to proceed." #: account/forms/account_setup.py msgid "Choose another code for your organization." -msgstr "" +msgstr "Choose another name for yur ship." #: account/forms/account_setup.py msgid "" @@ -156,6 +158,7 @@ msgid "" "Set the members status to blocked, so they don't have access to the " "organization anymore." msgstr "" +"Set the pirates status to blocked, so they can't board the ship no longer." #: account/forms/account_setup.py #: rocky/templates/organizations/organization_member_list.html @@ -204,18 +207,18 @@ msgstr "" #: account/forms/organization.py msgid "Organization is required." -msgstr "" +msgstr "A Ship is required." #: account/forms/organization.py tools/view_helpers.py #: rocky/templates/dashboard_redteam.html #: rocky/templates/organizations/organization_list.html #: rocky/views/organization_add.py msgid "Organizations" -msgstr "" +msgstr "Ships" #: account/forms/organization.py msgid "The organization from which to clone settings." -msgstr "" +msgstr "The ship ye'd like to look like." #: account/forms/password_reset.py msgid "Email address" @@ -223,7 +226,7 @@ msgstr "" #: account/forms/password_reset.py msgid "A reset link will be sent to this email" -msgstr "" +msgstr "A reset link will be bottled to this address post-haste" #: account/forms/password_reset.py msgid "The email address connected to your OpenKAT-account" From bc982d1727ea54b5f1b51dbf1e64aca090f29ce7 Mon Sep 17 00:00:00 2001 From: Donny Peeters <46660228+Donnype@users.noreply.github.com> Date: Wed, 22 Nov 2023 12:21:14 +0100 Subject: [PATCH 25/30] Add missing boefje/ namespaces to normalizer definitions (#2048) Signed-off-by: Donny Peeters --- .../boefjes/plugins/kat_binaryedge/containers/normalizer.json | 2 +- .../boefjes/plugins/kat_binaryedge/databases/normalizer.json | 2 +- boefjes/boefjes/plugins/kat_binaryedge/http_web/normalizer.json | 2 +- .../plugins/kat_binaryedge/message_queues/normalizer.json | 2 +- .../boefjes/plugins/kat_binaryedge/protocols/normalizer.json | 2 +- .../plugins/kat_binaryedge/remote_desktop/normalizer.json | 2 +- .../kat_binaryedge/service_identification/normalizer.json | 2 +- boefjes/boefjes/plugins/kat_binaryedge/services/normalizer.json | 2 +- boefjes/boefjes/plugins/kat_rdns/normalizer.json | 2 +- .../boefjes/plugins/kat_retirejs_finding_types/normalizer.json | 2 +- .../boefjes/plugins/kat_security_txt_downloader/normalizer.json | 2 +- boefjes/boefjes/plugins/kat_shodan/normalizer.json | 2 +- boefjes/boefjes/plugins/kat_snyk/normalizer.json | 2 +- boefjes/boefjes/plugins/kat_snyk_finding_types/normalizer.json | 2 +- boefjes/boefjes/plugins/kat_ssl_certificates/normalizer.json | 2 +- boefjes/boefjes/plugins/kat_ssl_scan/normalizer.json | 2 +- boefjes/boefjes/plugins/kat_testssl_sh_ciphers/normalizer.json | 2 +- boefjes/boefjes/plugins/kat_website_software/normalizer.json | 2 +- boefjes/boefjes/plugins/kat_wpscan/normalizer.json | 2 +- boefjes/boefjes/plugins/pdio_subfinder/normalizer.json | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/boefjes/boefjes/plugins/kat_binaryedge/containers/normalizer.json b/boefjes/boefjes/plugins/kat_binaryedge/containers/normalizer.json index 290a0042aba..3cc219fb0ad 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/containers/normalizer.json +++ b/boefjes/boefjes/plugins/kat_binaryedge/containers/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_binaryedge_containers", "consumes": [ - "binaryedge" + "boefje/binaryedge" ], "produces": [ "KATFindingType", diff --git a/boefjes/boefjes/plugins/kat_binaryedge/databases/normalizer.json b/boefjes/boefjes/plugins/kat_binaryedge/databases/normalizer.json index 26acf245d6a..e9a06f35107 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/databases/normalizer.json +++ b/boefjes/boefjes/plugins/kat_binaryedge/databases/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_binaryedge_databases", "consumes": [ - "binaryedge" + "boefje/binaryedge" ], "produces": [ "KATFindingType", diff --git a/boefjes/boefjes/plugins/kat_binaryedge/http_web/normalizer.json b/boefjes/boefjes/plugins/kat_binaryedge/http_web/normalizer.json index d70e51e7598..a86ed069ce4 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/http_web/normalizer.json +++ b/boefjes/boefjes/plugins/kat_binaryedge/http_web/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_binaryedge_http_web", "consumes": [ - "binaryedge" + "boefje/binaryedge" ], "produces": [ "KATFindingType", diff --git a/boefjes/boefjes/plugins/kat_binaryedge/message_queues/normalizer.json b/boefjes/boefjes/plugins/kat_binaryedge/message_queues/normalizer.json index 2cb88617963..067f463ed3e 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/message_queues/normalizer.json +++ b/boefjes/boefjes/plugins/kat_binaryedge/message_queues/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_binaryedge_message_queues", "consumes": [ - "binaryedge" + "boefje/binaryedge" ], "produces": [ "KATFindingType", diff --git a/boefjes/boefjes/plugins/kat_binaryedge/protocols/normalizer.json b/boefjes/boefjes/plugins/kat_binaryedge/protocols/normalizer.json index 503b17719a7..fe068a6747a 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/protocols/normalizer.json +++ b/boefjes/boefjes/plugins/kat_binaryedge/protocols/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_binaryedge_protocols", "consumes": [ - "binaryedge" + "boefje/binaryedge" ], "produces": [ "KATFindingType", diff --git a/boefjes/boefjes/plugins/kat_binaryedge/remote_desktop/normalizer.json b/boefjes/boefjes/plugins/kat_binaryedge/remote_desktop/normalizer.json index 072493faa3a..a89cf3dfc6a 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/remote_desktop/normalizer.json +++ b/boefjes/boefjes/plugins/kat_binaryedge/remote_desktop/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_binaryedge_remote_desktop", "consumes": [ - "binaryedge" + "boefje/binaryedge" ], "produces": [ "KATFindingType", diff --git a/boefjes/boefjes/plugins/kat_binaryedge/service_identification/normalizer.json b/boefjes/boefjes/plugins/kat_binaryedge/service_identification/normalizer.json index 9d7bd5395d5..187c995810e 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/service_identification/normalizer.json +++ b/boefjes/boefjes/plugins/kat_binaryedge/service_identification/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_binaryedge_service_identification", "consumes": [ - "binaryedge" + "boefje/binaryedge" ], "produces": [ "KATFindingType", diff --git a/boefjes/boefjes/plugins/kat_binaryedge/services/normalizer.json b/boefjes/boefjes/plugins/kat_binaryedge/services/normalizer.json index 3eb03c881be..99bb2d64d7a 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/services/normalizer.json +++ b/boefjes/boefjes/plugins/kat_binaryedge/services/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_binaryedge_services", "consumes": [ - "binaryedge" + "boefje/binaryedge" ], "produces": [ "KATFindingType", diff --git a/boefjes/boefjes/plugins/kat_rdns/normalizer.json b/boefjes/boefjes/plugins/kat_rdns/normalizer.json index 85aa1bebe39..0709439f303 100644 --- a/boefjes/boefjes/plugins/kat_rdns/normalizer.json +++ b/boefjes/boefjes/plugins/kat_rdns/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_rdns_normalize", "consumes": [ - "rdns" + "boefje/rdns" ], "produces": [ "DNSPTRRecord" diff --git a/boefjes/boefjes/plugins/kat_retirejs_finding_types/normalizer.json b/boefjes/boefjes/plugins/kat_retirejs_finding_types/normalizer.json index f2d1c613701..bc312475f4d 100644 --- a/boefjes/boefjes/plugins/kat_retirejs_finding_types/normalizer.json +++ b/boefjes/boefjes/plugins/kat_retirejs_finding_types/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_retirejs_finding_types_normalize", "consumes": [ - "retirejs-finding-types" + "boefje/retirejs-finding-types" ], "produces": [ "RetireJSFindingType" diff --git a/boefjes/boefjes/plugins/kat_security_txt_downloader/normalizer.json b/boefjes/boefjes/plugins/kat_security_txt_downloader/normalizer.json index a72f3c3920d..dc1d66c6652 100644 --- a/boefjes/boefjes/plugins/kat_security_txt_downloader/normalizer.json +++ b/boefjes/boefjes/plugins/kat_security_txt_downloader/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_sec_txt_downloader_normalize", "consumes": [ - "security_txt_downloader" + "boefje/security_txt_downloader" ], "produces": [ "SecurityTXT", diff --git a/boefjes/boefjes/plugins/kat_shodan/normalizer.json b/boefjes/boefjes/plugins/kat_shodan/normalizer.json index 170738db35d..ce47d29fdb7 100644 --- a/boefjes/boefjes/plugins/kat_shodan/normalizer.json +++ b/boefjes/boefjes/plugins/kat_shodan/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_shodan_normalize", "consumes": [ - "shodan" + "boefje/shodan" ], "produces": [ "Finding", diff --git a/boefjes/boefjes/plugins/kat_snyk/normalizer.json b/boefjes/boefjes/plugins/kat_snyk/normalizer.json index 3a233fdbf3b..5a51132bdd3 100644 --- a/boefjes/boefjes/plugins/kat_snyk/normalizer.json +++ b/boefjes/boefjes/plugins/kat_snyk/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_snyk_normalize", "consumes": [ - "snyk" + "boefje/snyk" ], "produces": [ "Finding", diff --git a/boefjes/boefjes/plugins/kat_snyk_finding_types/normalizer.json b/boefjes/boefjes/plugins/kat_snyk_finding_types/normalizer.json index df6ed5d75c4..8829f61a02e 100644 --- a/boefjes/boefjes/plugins/kat_snyk_finding_types/normalizer.json +++ b/boefjes/boefjes/plugins/kat_snyk_finding_types/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_snyk_finding_types_normalize", "consumes": [ - "snyk-finding-types" + "boefje/snyk-finding-types" ], "produces": [ "SNYKFindingType" diff --git a/boefjes/boefjes/plugins/kat_ssl_certificates/normalizer.json b/boefjes/boefjes/plugins/kat_ssl_certificates/normalizer.json index 8fbae846257..fefa5177c4f 100644 --- a/boefjes/boefjes/plugins/kat_ssl_certificates/normalizer.json +++ b/boefjes/boefjes/plugins/kat_ssl_certificates/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_ssl_certificates_normalize", "consumes": [ - "ssl-certificates" + "boefje/ssl-certificates" ], "produces": [ "X509Certificate" diff --git a/boefjes/boefjes/plugins/kat_ssl_scan/normalizer.json b/boefjes/boefjes/plugins/kat_ssl_scan/normalizer.json index 1006976d033..6b3893d6a2d 100644 --- a/boefjes/boefjes/plugins/kat_ssl_scan/normalizer.json +++ b/boefjes/boefjes/plugins/kat_ssl_scan/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_ssl_scan_normalize", "consumes": [ - "ssl-version" + "boefje/ssl-version" ], "produces": [ "KATFindingType", diff --git a/boefjes/boefjes/plugins/kat_testssl_sh_ciphers/normalizer.json b/boefjes/boefjes/plugins/kat_testssl_sh_ciphers/normalizer.json index ec8c8dc6e37..d212d114870 100644 --- a/boefjes/boefjes/plugins/kat_testssl_sh_ciphers/normalizer.json +++ b/boefjes/boefjes/plugins/kat_testssl_sh_ciphers/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_ssl_test_ciphers_normalize", "consumes": [ - "testssl-sh-ciphers" + "boefje/testssl-sh-ciphers" ], "produces": [ "TLSCipher" diff --git a/boefjes/boefjes/plugins/kat_website_software/normalizer.json b/boefjes/boefjes/plugins/kat_website_software/normalizer.json index 7e79e73bbc8..f5e0016a390 100644 --- a/boefjes/boefjes/plugins/kat_website_software/normalizer.json +++ b/boefjes/boefjes/plugins/kat_website_software/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_website_software_normalize", "consumes": [ - "website-software" + "boefje/website-software" ], "produces": [ "Software", diff --git a/boefjes/boefjes/plugins/kat_wpscan/normalizer.json b/boefjes/boefjes/plugins/kat_wpscan/normalizer.json index 872490bcef7..d7e9a392fbb 100644 --- a/boefjes/boefjes/plugins/kat_wpscan/normalizer.json +++ b/boefjes/boefjes/plugins/kat_wpscan/normalizer.json @@ -1,7 +1,7 @@ { "id": "kat_wpscan_normalize", "consumes": [ - "wp-scan" + "boefje/wp-scan" ], "produces": [ "Finding", diff --git a/boefjes/boefjes/plugins/pdio_subfinder/normalizer.json b/boefjes/boefjes/plugins/pdio_subfinder/normalizer.json index da9b203d6dd..0cd613f31d6 100644 --- a/boefjes/boefjes/plugins/pdio_subfinder/normalizer.json +++ b/boefjes/boefjes/plugins/pdio_subfinder/normalizer.json @@ -1,7 +1,7 @@ { "id": "pdio-subfinder-normalizer", "consumes": [ - "pdio-subfinder" + "boefje/pdio-subfinder" ], "produces": [ "Hostname" From 1d581be41a53fb86eccd158c7ef86bf737a8db88 Mon Sep 17 00:00:00 2001 From: Donny Peeters <46660228+Donnype@users.noreply.github.com> Date: Thu, 23 Nov 2023 10:25:36 +0100 Subject: [PATCH 26/30] Add system reports based on ip services (#2045) Signed-off-by: Donny Peeters Co-authored-by: Jan Klopper --- .../tests/integration/test_meta_repository.py | 2 +- .../octopoes/repositories/ooi_repository.py | 4 +- octopoes/octopoes/xtdb/client.py | 5 +- octopoes/octopoes/xtdb/query.py | 16 ++-- octopoes/tests/conftest.py | 56 ++++++++++++- .../tests/integration/test_xtdb_client.py | 84 +++++++++++++++++-- octopoes/tests/test_query.py | 54 +++++++++++- rocky/reports/report_types/definitions.py | 3 +- rocky/reports/report_types/helpers.py | 3 +- .../report_types/systems_report/__init__.py | 0 .../report_types/systems_report/report.html | 40 +++++++++ .../report_types/systems_report/report.py | 67 +++++++++++++++ rocky/rocky/locale/django.pot | 22 ++++- 13 files changed, 331 insertions(+), 25 deletions(-) create mode 100644 rocky/reports/report_types/systems_report/__init__.py create mode 100644 rocky/reports/report_types/systems_report/report.html create mode 100644 rocky/reports/report_types/systems_report/report.py diff --git a/bytes/tests/integration/test_meta_repository.py b/bytes/tests/integration/test_meta_repository.py index bb5b85efcb1..efd2e067f13 100644 --- a/bytes/tests/integration/test_meta_repository.py +++ b/bytes/tests/integration/test_meta_repository.py @@ -110,7 +110,7 @@ def test_save_raw(meta_repository: SQLMetaDataRepository) -> None: ) first_updated_raw = meta_repository.get_raw(query_filter).pop() - assert first_updated_raw.signing_provider_url == "https://test" + assert first_updated_raw.signing_provider_url in ["https://test", "https://freetsa.org/tsr"] # Depends on CI env assert "hash_retrieval_link" in first_updated_raw.json() assert "secure_hash" in first_updated_raw.json() assert "signing_provider" in first_updated_raw.json() diff --git a/octopoes/octopoes/repositories/ooi_repository.py b/octopoes/octopoes/repositories/ooi_repository.py index 7cf7953e0a4..f7734b42d45 100644 --- a/octopoes/octopoes/repositories/ooi_repository.py +++ b/octopoes/octopoes/repositories/ooi_repository.py @@ -601,7 +601,7 @@ def count_findings_by_severity(self, valid_time: datetime) -> Counter: """ for finding_type_name, finding_type_object, finding_count in self.session.client.query( - str(query), valid_time=valid_time + query, valid_time=valid_time ): if not finding_type_object: logger.warning( @@ -714,4 +714,4 @@ def list_findings( ) def query(self, query: Query, valid_time: datetime) -> List[OOI]: - return [self.deserialize(row[0]) for row in self.session.client.query(str(query), valid_time=valid_time)] + return [self.deserialize(row[0]) for row in self.session.client.query(query, valid_time=valid_time)] diff --git a/octopoes/octopoes/xtdb/client.py b/octopoes/octopoes/xtdb/client.py index 62f10739447..87adc30a4a9 100644 --- a/octopoes/octopoes/xtdb/client.py +++ b/octopoes/octopoes/xtdb/client.py @@ -10,6 +10,7 @@ from requests import HTTPError, Response from octopoes.xtdb.exceptions import NodeNotFound, NoMultinode, XTDBException +from octopoes.xtdb.query import Query logger = logging.getLogger(__name__) @@ -95,13 +96,13 @@ def get_entity(self, entity_id: str, valid_time: Optional[datetime] = None) -> d self._verify_response(res) return res.json() - def query(self, query: str, valid_time: Optional[datetime] = None) -> List[List[Any]]: + def query(self, query: Union[str, Query], valid_time: Optional[datetime] = None) -> List[List[Any]]: if valid_time is None: valid_time = datetime.now(timezone.utc) res = self._session.post( f"{self.client_url()}/query", params={"valid-time": valid_time.isoformat()}, - data=query, + data=str(query), headers={"Content-Type": "application/edn"}, ) self._verify_response(res) diff --git a/octopoes/octopoes/xtdb/query.py b/octopoes/octopoes/xtdb/query.py index a7b33949c6c..1ec090a3197 100644 --- a/octopoes/octopoes/xtdb/query.py +++ b/octopoes/octopoes/xtdb/query.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from typing import List, Optional, Set, Type, Union +from typing import Dict, List, Optional, Set, Type, Union from uuid import UUID, uuid4 from octopoes.models import OOI @@ -93,7 +93,8 @@ def from_path(cls, path: Path) -> "Query": ooi_type = path.segments[-1].target_type query = cls(ooi_type) - alias_map = {} + target_ref = None + alias_map: Dict[str, Ref] = {} for segment in path.segments: source_ref = alias_map.get(segment.source_type.get_object_type(), segment.source_type) @@ -113,15 +114,18 @@ def from_path(cls, path: Path) -> "Query": else: query = query.where(target_ref, **{segment.property_name: source_ref}) + if target_ref: # Make sure we use the last reference in the path as a target + query.result_type = target_ref + return query - def count(self, ooi_type: Ref) -> "Query": - self._find_clauses.append(f"(count {self._get_object_alias(ooi_type)})") + def pull(self, ooi_type: Ref) -> "Query": + self._find_clauses.append(f"(pull {self._get_object_alias(ooi_type)} [*])") return self - def group_by(self, ooi_type: Ref) -> "Query": - self._find_clauses.append(f"(pull {self._get_object_alias(ooi_type)} [*])") + def count(self, ooi_type: Ref) -> "Query": + self._find_clauses.append(f"(count {self._get_object_alias(ooi_type)})") return self diff --git a/octopoes/tests/conftest.py b/octopoes/tests/conftest.py index 3e251a4972e..c07e5cf9678 100644 --- a/octopoes/tests/conftest.py +++ b/octopoes/tests/conftest.py @@ -1,5 +1,6 @@ +import uuid from datetime import datetime, timezone -from ipaddress import IPv4Address +from ipaddress import IPv4Address, ip_address from typing import Dict, Iterator, List, Optional, Set from unittest.mock import Mock @@ -8,6 +9,7 @@ from requests.adapters import HTTPAdapter, Retry from octopoes.api.api import app +from octopoes.api.models import Declaration, Observation from octopoes.api.router import settings from octopoes.config.settings import Settings, XTDBType from octopoes.connector.octopoes import OctopoesAPIConnector @@ -15,6 +17,7 @@ from octopoes.core.service import OctopoesService from octopoes.events.manager import EventManager from octopoes.models import OOI, DeclaredScanProfile, EmptyScanProfile, Reference, ScanProfileBase +from octopoes.models.ooi.network import IPAddressV6 from octopoes.models.path import Direction, Path from octopoes.models.types import ( DNSZone, @@ -255,3 +258,54 @@ def mock_xtdb_session(): @pytest.fixture def origin_repository(mock_xtdb_session): yield XTDBOriginRepository(Mock(spec=EventManager), mock_xtdb_session, XTDBType.XTDB_MULTINODE) + + +def seed_system(octopoes_api_connector: OctopoesAPIConnector, valid_time): + network = Network(name="test") + octopoes_api_connector.save_declaration(Declaration(ooi=network, valid_time=valid_time)) + + hostnames = [ + Hostname(network=network.reference, name="example.com"), + Hostname(network=network.reference, name="a.example.com"), + Hostname(network=network.reference, name="b.example.com"), + Hostname(network=network.reference, name="c.example.com"), + Hostname(network=network.reference, name="d.example.com"), + Hostname(network=network.reference, name="e.example.com"), + Hostname(network=network.reference, name="f.example.com"), + ] + + addresses = [ + IPAddressV4(network=network.reference, address=ip_address("192.0.2.3")), + IPAddressV6(network=network.reference, address=ip_address("3e4d:64a2:cb49:bd48:a1ba:def3:d15d:9230")), + ] + ports = [ + IPPort(address=addresses[0].reference, protocol="tcp", port=25), + IPPort(address=addresses[0].reference, protocol="tcp", port=443), + IPPort(address=addresses[0].reference, protocol="tcp", port=22), + IPPort(address=addresses[1].reference, protocol="tcp", port=80), + ] + services = [Service(name="smtp"), Service(name="https"), Service(name="http"), Service(name="ssh")] + ip_services = [ + IPService(ip_port=ports[0].reference, service=services[0].reference), + IPService(ip_port=ports[1].reference, service=services[1].reference), + IPService(ip_port=ports[2].reference, service=services[3].reference), + IPService(ip_port=ports[3].reference, service=services[2].reference), + ] + + resolved_hostnames = [ + ResolvedHostname(hostname=hostnames[0].reference, address=addresses[0].reference), # ipv4 + ResolvedHostname(hostname=hostnames[0].reference, address=addresses[1].reference), # ipv6 + ResolvedHostname(hostname=hostnames[1].reference, address=addresses[0].reference), + ResolvedHostname(hostname=hostnames[2].reference, address=addresses[0].reference), + ResolvedHostname(hostname=hostnames[3].reference, address=addresses[0].reference), + ResolvedHostname(hostname=hostnames[4].reference, address=addresses[0].reference), + ResolvedHostname(hostname=hostnames[5].reference, address=addresses[0].reference), + ResolvedHostname(hostname=hostnames[3].reference, address=addresses[1].reference), + ResolvedHostname(hostname=hostnames[4].reference, address=addresses[1].reference), + ResolvedHostname(hostname=hostnames[6].reference, address=addresses[1].reference), + ] + + oois = hostnames + addresses + ports + services + ip_services + resolved_hostnames + octopoes_api_connector.save_observation( + Observation(method="", source=network.reference, task_id=uuid.uuid4(), valid_time=valid_time, result=oois) + ) diff --git a/octopoes/tests/integration/test_xtdb_client.py b/octopoes/tests/integration/test_xtdb_client.py index fd207c31fe4..4f7b3c25302 100644 --- a/octopoes/tests/integration/test_xtdb_client.py +++ b/octopoes/tests/integration/test_xtdb_client.py @@ -5,12 +5,16 @@ from requests import HTTPError from octopoes.config.settings import XTDBType +from octopoes.connector.octopoes import OctopoesAPIConnector +from octopoes.models import Reference from octopoes.models.ooi.dns.zone import Hostname from octopoes.models.ooi.network import Network +from octopoes.models.path import Path from octopoes.repositories.ooi_repository import XTDBOOIRepository from octopoes.xtdb.client import XTDBHTTPClient, XTDBSession from octopoes.xtdb.exceptions import NodeNotFound from octopoes.xtdb.query import Query +from tests.conftest import seed_system if os.environ.get("CI") != "1": pytest.skip("Needs XTDB multinode container.", allow_module_level=True) @@ -42,7 +46,7 @@ def test_delete_non_existing_node(xtdb_http_client: XTDBHTTPClient): def test_query_no_results(xtdb_session: XTDBSession): query = Query(Network).where(Network, name="test") - result = xtdb_session.client.query(str(query)) + result = xtdb_session.client.query(query) assert result == [] @@ -50,17 +54,17 @@ def test_query_simple_filter(xtdb_session: XTDBSession, valid_time: datetime): xtdb_session.put(XTDBOOIRepository.serialize(Network(name="testnetwork")), valid_time) query = Query(Network).where(Network, name="test") - result = xtdb_session.client.query(str(query)) + result = xtdb_session.client.query(query) assert result == [] xtdb_session.commit() query = Query(Network).where(Network, name="test") - result = xtdb_session.client.query(str(query)) + result = xtdb_session.client.query(query) assert result == [] query = Query(Network).where(Network, name="testnetwork") - result = xtdb_session.client.query(str(query)) + result = xtdb_session.client.query(query) assert result == [ [ { @@ -89,7 +93,7 @@ def test_query_not_empty_on_reference_filter_for_hostname(xtdb_session: XTDBSess xtdb_session.commit() query = Query(Network).where(Hostname, name="testhostname").where(Hostname, network=Network) - result = xtdb_session.client.query(str(query)) + result = xtdb_session.client.query(query) assert result == [ [ { @@ -102,7 +106,7 @@ def test_query_not_empty_on_reference_filter_for_hostname(xtdb_session: XTDBSess ] query = query.where(Network, name="testnetwork") - result = xtdb_session.client.query(str(query)) + result = xtdb_session.client.query(query) assert result == [ [ { @@ -126,7 +130,7 @@ def test_query_empty_on_reference_filter_for_wrong_hostname(xtdb_session: XTDBSe xtdb_session.commit() query = Query(Network).where(Network, name="testnetwork").where(Hostname, name="secondhostname") # No foreign key - result = xtdb_session.client.query(str(query)) + result = xtdb_session.client.query(query) assert result == [ [ { @@ -139,6 +143,70 @@ def test_query_empty_on_reference_filter_for_wrong_hostname(xtdb_session: XTDBSe ] query = query.where(Hostname, network=Network) # Add foreign key constraint - assert xtdb_session.client.query(str(query)) == [] + assert xtdb_session.client.query(query) == [] assert len(xtdb_session.client.query(str(Query(Network)))) == 2 + + +def test_query_for_system_report(octopoes_api_connector: OctopoesAPIConnector, xtdb_session: XTDBSession, valid_time): + seed_system(octopoes_api_connector, valid_time) + + # Find all hostnames with the same ip address + query = Query.from_path( + Path.parse("Hostname. Dict[str, Any]: diff --git a/rocky/reports/report_types/helpers.py b/rocky/reports/report_types/helpers.py index ce06210d4be..9dd4e15580d 100644 --- a/rocky/reports/report_types/helpers.py +++ b/rocky/reports/report_types/helpers.py @@ -3,9 +3,10 @@ from octopoes.models import OOI, Reference from reports.report_types.definitions import Report from reports.report_types.dns_report.report import DNSReport +from reports.report_types.systems_report.report import SystemReport from reports.report_types.tls_report.report import TLSReport -REPORTS = [DNSReport, TLSReport] +REPORTS = [DNSReport, TLSReport, SystemReport] def get_ooi_types_with_report() -> Set[Type[OOI]]: diff --git a/rocky/reports/report_types/systems_report/__init__.py b/rocky/reports/report_types/systems_report/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/rocky/reports/report_types/systems_report/report.html b/rocky/reports/report_types/systems_report/report.html new file mode 100644 index 00000000000..c4857640752 --- /dev/null +++ b/rocky/reports/report_types/systems_report/report.html @@ -0,0 +1,40 @@ +{% load i18n %} + +

    +

    + + + + + + + + + + {% for ip, ip_services in data.services.items %} + + + + + + {% endfor %} + +
    {% translate "IP address" %}{% translate "Domain" %}{% translate "System type" %}
    {{ ip }} + {% for hostname in ip_services.hostnames %} + {% if not forloop.last %} + {{ hostname }}, + {% else %} + {{ hostname }} + {% endif %} + {% endfor %} + + {% for service in ip_services.services %} + {% if not forloop.last %} + {{ service }}, + {% else %} + {{ service }} + {% endif %} + {% endfor %} +
    +

    +

    diff --git a/rocky/reports/report_types/systems_report/report.py b/rocky/reports/report_types/systems_report/report.py new file mode 100644 index 00000000000..867daba4cb9 --- /dev/null +++ b/rocky/reports/report_types/systems_report/report.py @@ -0,0 +1,67 @@ +from dataclasses import dataclass +from datetime import datetime +from logging import getLogger +from typing import Any, Dict + +from django.utils.translation import gettext_lazy as _ + +from octopoes.models import Reference +from octopoes.models.ooi.dns.zone import Hostname +from octopoes.models.ooi.network import IPAddressV4, IPAddressV6 +from reports.report_types.definitions import Report + +logger = getLogger(__name__) + + +@dataclass +class System: + system_types: list + oois: list + + +class SystemReport(Report): + id = "systems-report" + name = _("System Report") + description = _("Combine IP addresses, hostnames and services into systems.") + plugins = {"required": ["nmap"], "optional": []} + input_ooi_types = {Hostname, IPAddressV4, IPAddressV6} + template_path = "systems_report/report.html" + + def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: + reference = Reference.from_str(input_ooi) + ips = [] + + if reference.class_type == Hostname: + ips = self.octopoes_api_connector.query( + "Hostname.\n" "Language-Team: LANGUAGE \n" @@ -2726,6 +2726,26 @@ msgid "" "weaknesses." msgstr "" +#: reports/report_types/systems_report/report.html +msgid "IP address" +msgstr "" + +#: reports/report_types/systems_report/report.html +msgid "Domain" +msgstr "" + +#: reports/report_types/systems_report/report.html +msgid "System type" +msgstr "" + +#: reports/report_types/systems_report/report.py +msgid "System Report" +msgstr "" + +#: reports/report_types/systems_report/report.py +msgid "Combine IP addresses, hostnames and services into systems." +msgstr "" + #: reports/report_types/tls_report/report.html #: rocky/templates/organizations/organization_member_list.html #: rocky/templates/partials/task_history.html From 2d2b807ea52216d8b5e3659d886ea1e6e4688e67 Mon Sep 17 00:00:00 2001 From: Benoit Schipper <77777295+benoitschipper@users.noreply.github.com> Date: Fri, 24 Nov 2023 16:29:37 +0100 Subject: [PATCH 27/30] Update account_setup.py (#2055) --- rocky/account/forms/account_setup.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/rocky/account/forms/account_setup.py b/rocky/account/forms/account_setup.py index 3968d55864a..4178ef2f4a5 100644 --- a/rocky/account/forms/account_setup.py +++ b/rocky/account/forms/account_setup.py @@ -29,11 +29,11 @@ class UserRegistrationForm(forms.Form): name = forms.CharField( label=_("Name"), max_length=254, - help_text=_("This name we will use to communicate with you."), + help_text=_("The name that will be used in order to communicate."), widget=forms.TextInput( attrs={ "autocomplete": "off", - "placeholder": _("What do we call you?"), + "placeholder": _("Please provide username"), "aria-describedby": "explanation-name", } ), @@ -41,7 +41,7 @@ class UserRegistrationForm(forms.Form): email = forms.EmailField( label=_("Email"), max_length=254, - help_text=_("Enter your email address."), + help_text=_("Enter an email address."), widget=forms.EmailInput( attrs={ "autocomplete": "off", @@ -55,7 +55,7 @@ class UserRegistrationForm(forms.Form): widget=forms.PasswordInput( attrs={ "autocomplete": "off", - "placeholder": _("Choose your super secret password"), + "placeholder": _("Choose a super secret password"), "aria-describedby": "explanation-password", } ), @@ -289,7 +289,7 @@ class SetPasswordForm(auth_forms.SetPasswordForm): widget=forms.PasswordInput( attrs={ "autocomplete": "new-password", - "placeholder": _("Enter your new password"), + "placeholder": _("Enter a new password"), } ), strip=False, @@ -302,9 +302,9 @@ class SetPasswordForm(auth_forms.SetPasswordForm): widget=forms.PasswordInput( attrs={ "autocomplete": "new-password", - "placeholder": _("Repeat your new password"), + "placeholder": _("Repeat the new password"), } ), - help_text=_("Confirm your new password"), + help_text=_("Confirm the new password"), validators=[validate_password], ) From f982ea7ac622e4dfa1c219a01902e9c1547e4b6e Mon Sep 17 00:00:00 2001 From: Donny Peeters <46660228+Donnype@users.noreply.github.com> Date: Fri, 24 Nov 2023 16:33:00 +0100 Subject: [PATCH 28/30] Update translations (#2056) --- rocky/rocky/locale/django.pot | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/rocky/rocky/locale/django.pot b/rocky/rocky/locale/django.pot index 57db938c045..5216ab67bb2 100644 --- a/rocky/rocky/locale/django.pot +++ b/rocky/rocky/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-23 08:49+0000\n" +"POT-Creation-Date: 2023-11-24 15:30+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -36,11 +36,11 @@ msgid "Name" msgstr "" #: account/forms/account_setup.py -msgid "This name we will use to communicate with you." +msgid "The name that will be used in order to communicate." msgstr "" #: account/forms/account_setup.py -msgid "What do we call you?" +msgid "Please provide username" msgstr "" #: account/forms/account_setup.py @@ -48,7 +48,7 @@ msgid "Email" msgstr "" #: account/forms/account_setup.py -msgid "Enter your email address." +msgid "Enter an email address." msgstr "" #: account/forms/account_setup.py @@ -56,7 +56,7 @@ msgid "Password" msgstr "" #: account/forms/account_setup.py -msgid "Choose your super secret password" +msgid "Choose a super secret password" msgstr "" #: account/forms/account_setup.py @@ -177,7 +177,7 @@ msgid "New password" msgstr "" #: account/forms/account_setup.py -msgid "Enter your new password" +msgid "Enter a new password" msgstr "" #: account/forms/account_setup.py @@ -185,11 +185,11 @@ msgid "New password confirmation" msgstr "" #: account/forms/account_setup.py -msgid "Repeat your new password" +msgid "Repeat the new password" msgstr "" #: account/forms/account_setup.py -msgid "Confirm your new password" +msgid "Confirm the new password" msgstr "" #: account/forms/login.py From a736d155f9e16771e9dad3f7422fe2d1688cc27f Mon Sep 17 00:00:00 2001 From: originalsouth Date: Fri, 24 Nov 2023 20:12:08 +0100 Subject: [PATCH 29/30] Adjust inconsistency of spacing in CVE label (#2051) Co-authored-by: Jan Klopper --- octopoes/bits/retire_js/retirejs.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/octopoes/bits/retire_js/retirejs.json b/octopoes/bits/retire_js/retirejs.json index c015dac2da7..4d69f10cab0 100644 --- a/octopoes/bits/retire_js/retirejs.json +++ b/octopoes/bits/retire_js/retirejs.json @@ -3061,7 +3061,7 @@ "identifiers": { "summary": "XSS is possible in the data-target attribute.", "CVE": [ - " CVE-2016-10735" + "CVE-2016-10735" ] }, "info": [ @@ -3075,7 +3075,7 @@ "identifiers": { "summary": "XSS is possible in the data-target attribute.", "CVE": [ - " CVE-2016-10735" + "CVE-2016-10735" ] }, "info": [ From fc86c96c5caf37e03bd073bcc1a9a0a71117e716 Mon Sep 17 00:00:00 2001 From: Mark Janssen Date: Fri, 24 Nov 2023 20:24:45 +0100 Subject: [PATCH 30/30] Replace python3.8 with 3.10, ubuntu 20->22 (#2054) Co-authored-by: Jan Klopper --- .github/workflows/build-rdo-package.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build-rdo-package.yml b/.github/workflows/build-rdo-package.yml index 6093ce5fbeb..f87ecaa0bb4 100644 --- a/.github/workflows/build-rdo-package.yml +++ b/.github/workflows/build-rdo-package.yml @@ -15,7 +15,7 @@ env: jobs: build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 # Generic bits steps: @@ -26,7 +26,7 @@ jobs: - uses: actions/setup-python@v4 with: - python-version: '3.8' + python-version: '3.10' cache: 'pip' - name: Prep Install requirements @@ -48,12 +48,12 @@ jobs: - name: Octopoes Build whl package run: | - python3.8 -m pip install build - python3.8 -m build + python3.10 -m pip install build + python3.10 -m build working-directory: ./octopoes - name: Octopoes Create env - run: python3.8 -m venv /var/www/html/.venv + run: python3.10 -m venv /var/www/html/.venv - name: Octopoes Install requirements run: cd /var/www/html; source .venv/bin/activate; pip install --upgrade pip; pip install --requirement requirements.txt @@ -84,7 +84,7 @@ jobs: working-directory: ./rocky - name: Rocky Create env - run: python3.8 -m venv /var/www/html/.venv + run: python3.10 -m venv /var/www/html/.venv - name: Rocky Install requirements run: cd /var/www/html; source .venv/bin/activate; pip install --upgrade pip; grep -v git+https:// requirements.txt | pip install -r /dev/stdin ; grep git+https:// requirements.txt | pip install -r /dev/stdin; pip install ${{ github.workspace }}/octopoes/dist/octopoes*.whl @@ -113,7 +113,7 @@ jobs: working-directory: ./rocky - name: Rocky Compilemessages - run: /var/www/html/.venv/bin/python3.8 manage.py collectstatic && /var/www/html/.venv/bin/python3.8 manage.py compress && /var/www/html/.venv/bin/python3.8 manage.py compilemessages + run: /var/www/html/.venv/bin/python3.10 manage.py collectstatic && /var/www/html/.venv/bin/python3.10 manage.py compress && /var/www/html/.venv/bin/python3.10 manage.py compilemessages working-directory: ./rocky env: BYTES_API: http://bytes:8000 @@ -138,7 +138,7 @@ jobs: working-directory: ./bytes - name: Bytes Create env - run: python3.8 -m venv /var/www/html/.venv + run: python3.10 -m venv /var/www/html/.venv - name: Bytes Install requirements run: cd /var/www/html; source .venv/bin/activate; pip install --upgrade pip; pip install --requirement requirements.txt @@ -159,14 +159,14 @@ jobs: working-directory: ./mula - name: Mula Create env - run: python3.8 -m venv /var/www/html/.venv + run: python3.10 -m venv /var/www/html/.venv - name: Create scheduler release archive run: tar -cvzf ${{ env.PKGDIR }}/scheduler_${{ env.RELEASE_VERSION }}.tar.gz --exclude=./.git* --exclude=Makefile --exclude=Dockerfile --exclude=base.yml --exclude=requirements* --exclude=tests . working-directory: ./mula - name: Create virtual env - run: python3.8 -m venv /var/www/html/.venv + run: python3.10 -m venv /var/www/html/.venv - name: Install requirements run: source .venv/bin/activate; pip install --upgrade pip; pip install --requirement requirements.txt @@ -184,7 +184,7 @@ jobs: working-directory: ./boefjes - name: Boefjes Create env - run: python3.8 -m venv /var/www/html/.venv + run: python3.10 -m venv /var/www/html/.venv - name: Install requirements run: source .venv/bin/activate; pip install --upgrade pip; find . -name requirements.txt | xargs -L 1 pip install -r; pip install ${{ github.workspace }}/octopoes/dist/octopoes*.whl @@ -206,7 +206,7 @@ jobs: working-directory: ./keiko - name: Keiko Create env - run: python3.8 -m venv /var/www/html/.venv + run: python3.10 -m venv /var/www/html/.venv - name: Keiko Install requirements run: source .venv/bin/activate; pip install --upgrade pip; find . -name requirements.txt | xargs -L 1 pip install -r